Thanks both of you for your knownledge,
I have just made it work BUT with some problems...
I loose packets...
In the site of Tx I sent every 3secs a number that increase every loop.
In the site of the Rx I receiver less than the 50% of the total Tx pakets.
That is my code:
---tx-----------------------------------------------------
Code:
include "modedefs.bas"
@ DEVICE PIC16F627, HS_OSC
@ DEVICE pic16F627, WDT_ON ' watchdog timer
@ DEVICE pic16F627, PWRT_ON ' power-on timer
@ DEVICE pic16F627, MCLR_OFF ' master clear options (internal)
@ DEVICE pic16F627, BOD_OFF ' brown-out detect
@ DEVICE pic16F627, LVP_OFF ' low-voltage programming
@ DEVICE pic16F627, CPD_OFF ' data memory code Protect
@ DEVICE pic16F627, PROTECT_OFF ' program code protection
DEFINE OSC 4
CMCON = 7 'Turn off comparators
VRCON = 0
INTCON = 0 ' Disable interrupts
encoded var word
mydata var byte
i var BYTE
mydata=0
loop:
gosub encod_r
serout2 PORTB.0,813,[$55, $55,$55, $55, $CC, encoded.lowbyte,encoded.highbyte]
pause 3000
mydata=mydata+1
goto loop
'------------------Manchester encoder-------------------------------
encod_r:
For i=0 TO 7
IF mydata.0[i]=0 Then
encoded.0[i*2]=0
encoded.0[i*2+1]=1
Else
encoded.0[i*2]=1
encoded.0[i*2+1]=0
EndIF
Next i
Return
'------------------Manchester encoder-------------------------------
END
----rx------------------------------------------------------------------
Code:
include "modedefs.bas"
@ DEVICE PIC16F627, HS_OSC
;@ DEVICE pic16F627, INTRC_OSC_NOCLKOUT ' system clock options
@ DEVICE pic16F627, WDT_ON ' watchdog timer
@ DEVICE pic16F627, PWRT_ON ' power-on timer
@ DEVICE pic16F627, MCLR_OFF ' master clear options (internal)
@ DEVICE pic16F627, BOD_OFF ' brown-out detect
@ DEVICE pic16F627, LVP_OFF ' low-voltage programming
@ DEVICE pic16F627, CPD_OFF ' data memory code Protect
@ DEVICE pic16F627, PROTECT_OFF ' program code protection
DEFINE OSC 4
CMCON = 7 'Turn off comparators
VRCON = 0
' DEFINE VARIABLES FOR SERIAL TO PC 2400 8-N-1
DEFINE HSER_RCSTA 90H
DEFINE HSER_TXSTA 20H
DEFINE HSER_BAUD 2400
DEFINE HSER_SPBRG 25
encoded var word
mydata var byte
i var BYTE
PAUSE 500
hserout ["RF Module RT4 and RR3", 13,10];<---------------------------
loop:
SERIN2 PORTB.0, 813, [WAIT($CC),encoded.lowbyte,encoded.highbyte]
gosub decod_r
hserout ["mydata = ",DEC mydata, 13,10] ' Display mydata on PC SERIAL RS232
goto loop
'------------------Manchester decoder-------------------------------
decod_r:
For i=0 TO 7
IF encoded.0[i*2]=0 Then
IF encoded.0[i*2+1]=1 Then
mydata.0[i]=0
EndIF
Else
mydata.0[i]=1
EndIF
Next
Return
'------------------Manchester decoder-------------------------------
END
and I receiver the following in my PC
RF Module RT4 and RR3
mydata = 3
mydata = 5
mydata = 11
mydata = 13
mydata = 15
mydata = 16
mydata = 21
instead of
mydata = 1
mydata = 2
mydata = 3
....
Please advice
Regards
Nikos
Bookmarks