User Name Password Register
DaniWeb IT Discussion Community
All
What is DaniWeb IT Discussion Community?
You're currently browsing the Assembly section within the Software Development category of DaniWeb, a massive community of 456,417 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 2,606 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our Assembly advertiser: Programming Forums
Views: 5364 | Replies: 2
Reply
Join Date: Oct 2005
Posts: 2
Reputation: oneohthree is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 0
oneohthree oneohthree is offline Offline
Newbie Poster

PIC Basic programming with RF modules

  #1  
Apr 20th, 2007
I am trying to construct a 2 way paging with PIC Basic and two types of microcontrollers PIC16LF84A and PIC16F88. I have two parts of my system, a sensor node and a transponder. The sensor node has a 434 MHz transmitter (TLP-434) and a 315 MHz (TLP-315) receiver(RLP-315). The transponder has a 315 MHz transmitter and 434 MHz receiver (RLP-434). My link from the sensor node to the transponder works properly. But my link from the transponder to the sensor node does not work properly. The problem now is my PIC to PIC communication works perfectly with a wire. But when I connected them to the TLP-315 and RLP-315 transmitter and receiver pairs it either does not work or works intermittently. I am doing serout only once this time with 4 $55 and 1 $aa in the preamble. I told the receiver to count for $55 four times. I am using a breadboards. On one breadboard I have a 315 MHz receiver and 434 MHz transmitter and the other breadboard I have a 315 MHz transmitter and 434 MHz receiver. I have been trying all different combinations for the past week but it seems like my 315 MHz receivers are not working like they should. I do not know what is wrong I am basically doing the same thing in both links but one link works while the other does not. Is this a PIC problem or a RF module problem.

Transmitter (on Sensor node)
'IEEE Encoding
'Transmitter Code
Include "Modedefs.bas"
trisb = 0
main:
u var byte : counter var byte : encode var byte : u = %1000
'u is the byte containing the input in binary, counter is a byte that describes the amount of bits to encode
'encode is the variable holding the encoded value
'Manchester encoding
For counter = 0 to 3
If u.0[counter]=0 Then
encode.0[counter*2]=0 : encode.0[counter*2+1]=1 'If it is a zero make the first bit 0 and second bit 1
Else
encode.0[counter*2]=1 : encode.0[counter*2+1]=0 'If not then make first bit 1 and second bit 0
EndIf
Next counter :
write 0, encode 'Write to EEPROM Location 0
High 1 'High on Port B Pin 1
Pause 1000 'Pause
Low 1 'Low on Port B Pin 1
serout PORTB.0, n2400, [ $55 , $55 ,$55, $55, $aa , encode ]: 'send out preamble and encoded from Port B Pin 0
goto main



Receiver (434 to 315) (on transponder)
Include "Modedefs.bas"

ct55 var byte: encoded1 var byte: s var byte: counter var byte: e var byte: action var byte:
encoded var byte: encoded2 var byte: action2 var byte: B0 var bit: B1 var bit: B0=1: B1=0
s=0: e=0: encoded1=0: counter = 0: action=0: action2=0: encoded=0: encoded2=0:

Main:

Clr:
s=0: e=0: encoded1=0: action=0: action2=0: encoded=0: encoded2=0

Maina:
ct55=0 'counter for $55 is zero

Wait55:
serin PORTB.0, n2400, encoded1
If encoded1 = $55 Then
ct55 = ct55 + 1
If ct55 = 4 Then goto Waitaa
Else
goto Maina
Endif
goto Wait55

Waitaa:
serin PORTB.0, n2400, encoded1
If encoded1 <> $aa Then goto Maina
serin PORTB.0, n2400, encoded1
write 0, encoded1

For counter = 0 to 3 : s.0[counter] = encoded1.0[counter*2]:Next counter
write 1,s

e = s:
If ((e.3=B0) and (e.2=B1)) Then
goto L3
Else
write 2, s
goto Clr
Endif

L3:
If((s.1=0) and (s.0=0)) Then
action=s:
action.1=1
write 3, action
High 6
Pause 1000
Low 6
For counter = 0 to 3
If action.0[counter]=0 Then
encoded.0[counter*2]=0 : encoded.0[counter*2+1]=1
Else
encoded.0[counter*2]=1 : encoded.0[counter*2+1]=0
Endif
Next counter:
write 8, encoded
Low 4
For counter = 0 to 4
Pause 400
High 4
Pause 400
Low 4
Next counter:
'For counter = 0 to 5
serout PORTB.2, n2400, [$55,$55,$55,$55,$aa, encoded]
goto Clr
'Next counter:

Endif

If ((s.1=0) and (s.0=1)) Then
action2 = s: action2.1 = 1:
write 4, action2
High 5
Pause 2000
Low 5
For counter = 0 to 3
If action2.0[counter]=0 Then
encoded2.0[counter*2] = 0: encoded2.0[counter*2+1] = 1
Else
encoded2.0[counter*2] = 1: encoded2.0[counter*2+1] = 0
Endif
Next counter:
write 9, encoded2
Low 4
For counter = 0 to 4
Pause 400
High 4
Pause 400
Low 4
Next counter
Low 1
For counter = 0 to 10
Pause 400
High 1
Pause 400
Low 1
Next counter:
'For counter = 0 to 5
serout PORTB.2, n2400, [$55,$55, $55, $55,$aa, encoded2]
goto Clr
'Next counter

Endif
End

Receiver code (315 Link), (on sensor node)
Include "Modedefs.bas"
ct55 var byte: encoded1 var byte: s var byte: counter var byte: e var byte:
s = 0: e = 0: encoded1 = 0: counter = 0:

Main:


Maina:
ct55=0 'counter for $55 is zero

Wait55:
serin PORTB.0, n2400, encoded1
If encoded1 = $55 Then ct55 = ct55 + 1
If ct55 = 4 Then
goto Waitaa
Else
goto Wait55
Endif
'goto Wait55

Waitaa:
serin PORTB.0, n2400, encoded1
If encoded1 <> $aa Then goto Maina
serin PORTB.0, n2400, encoded1
write 0, encoded1

For counter = 0 to 3 : s.0[counter] = encoded1.0[counter*2]: Next counter
write 1,s

If (s.1=1) Then
goto L4
Else
write 2,s
High 2
Pause 1000
Low 2
goto Maina
Endif

L4:
e = s
write 3, e
High 1
Pause 1000
Low 1
serout PORTB.3, n2400, [e]
goto Maina

End
AddThis Social Bookmark Button
Reply With Quote  
Join Date: Oct 2007
Posts: 1
Reputation: jmk9156 is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 0
jmk9156 jmk9156 is offline Offline
Newbie Poster

Re: PIC Basic programming with RF modules

  #2  
Oct 29th, 2007
Did anyone every find out anything on this topic?
Reply With Quote  
Join Date: Jun 2008
Posts: 1
Reputation: e.demente is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 0
e.demente e.demente is offline Offline
Newbie Poster

Re: PIC Basic programming with RF modules

  #3  
Jun 22nd, 2008
I haven't gone tru your code yet but i am using those same modules... the thing is to use an encoder-decoder couple.... otherwise they work as you said, intermittently...
Reply With Quote  
Reply

Only community members can participate in forum threads. You must register or log in to contribute.

DaniWeb Assembly Marketplace
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)

 

Thread Tools Display Modes

Similar Threads
Other Threads in the Assembly Forum

All times are GMT -4. The time now is 12:54 am.
Forum system based on vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC