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