Navaidstech
- 15th March 2009, 06:39
OK... I'm about to give birth to a cow here. I've been at this for a few hours now and still can't find where the problem lies. Call it a brain fart or a senior moment or....
This is a simple transmit routine that takes an array of letters, converts them to Manchester code and the spits them out a serial port.
COUNTERA var Byte
COUNTERB var byte
TRANSMIT var Byte
MYDATA var byte [9]
MYDATACTR var byte
MANCHESTERWORD var Word
Encoded var word
BYTECTR var byte
DataPort var PortB.0
EncodedData var word [4]
START:
mydata [0]= "T"
mydata [1]= "E"
mydata [2]= "S"
mydata [3]= "T"
mydata [4]= "."
for mydatactr=0 to 4
transmit = mydata [MYdatactr]
gosub encodemanchester ' take the transmit variable and convert it to Manchester (EncodedData word)
serout2 dataport,17197, [encodeddata.highbyte[mydatactr]]
serout2 dataport,17197, [encodeddata.lowbyte[mydatactr]]
So far so good. With the array "TEST." the serial port is spitting out
99 9A 9A 99 99 A5 99 9A A6 56 in HEX, which is a correct Manchester
conversion.
next mydatactr
FOR COUNTERB=0 TO 1
serout2 dataport,17197, [$55,$55,$55,$55,$55,"STA"] ' send preamble
for mydatactr=0 to 4
serout2 dataport,17197, [encodeddata.highbyte[mydatactr]]
serout2 dataport,17197, [encodeddata.lowbyte[mydatactr]]
This is where it gets weird. The EncodedData array has not been tinkered in
any way (I don't see where) yet the serial port is now spitting out
99 9A A5 99 9A A5 56 9A A6 56 .... WTH??????
Notice the first two and last two bytes did not change but the stuff in the middle has.... what am I missing here?
next MYDATACTR
pause 100
NEXT COUNTERB
pause 3000
goto start
EncodeManchester:
manchesterword=0
For BYTECTR=0 TO 7
If transmit.0=1 then
ManchesterWord.14=1
else
ManchesterWord.15=1
endif
If bytectr<7 then ManchesterWord=ManchesterWord>>2
transmit=transmit>>1
Next BYTECTR
encodeddata.lowbyte[mydatactr]=manchesterword.lowbyte
encodeddata.highbyte[mydatactr]=manchesterword.highbyte
Return
The above Manchester conversion routine and the one supplied by Ioannis produce the same result.
Any help would be greatly appreciated.... BTW, I'm using MCS 2.1.0.6 with PBPPro 2.46.
Thanks!!!
This is a simple transmit routine that takes an array of letters, converts them to Manchester code and the spits them out a serial port.
COUNTERA var Byte
COUNTERB var byte
TRANSMIT var Byte
MYDATA var byte [9]
MYDATACTR var byte
MANCHESTERWORD var Word
Encoded var word
BYTECTR var byte
DataPort var PortB.0
EncodedData var word [4]
START:
mydata [0]= "T"
mydata [1]= "E"
mydata [2]= "S"
mydata [3]= "T"
mydata [4]= "."
for mydatactr=0 to 4
transmit = mydata [MYdatactr]
gosub encodemanchester ' take the transmit variable and convert it to Manchester (EncodedData word)
serout2 dataport,17197, [encodeddata.highbyte[mydatactr]]
serout2 dataport,17197, [encodeddata.lowbyte[mydatactr]]
So far so good. With the array "TEST." the serial port is spitting out
99 9A 9A 99 99 A5 99 9A A6 56 in HEX, which is a correct Manchester
conversion.
next mydatactr
FOR COUNTERB=0 TO 1
serout2 dataport,17197, [$55,$55,$55,$55,$55,"STA"] ' send preamble
for mydatactr=0 to 4
serout2 dataport,17197, [encodeddata.highbyte[mydatactr]]
serout2 dataport,17197, [encodeddata.lowbyte[mydatactr]]
This is where it gets weird. The EncodedData array has not been tinkered in
any way (I don't see where) yet the serial port is now spitting out
99 9A A5 99 9A A5 56 9A A6 56 .... WTH??????
Notice the first two and last two bytes did not change but the stuff in the middle has.... what am I missing here?
next MYDATACTR
pause 100
NEXT COUNTERB
pause 3000
goto start
EncodeManchester:
manchesterword=0
For BYTECTR=0 TO 7
If transmit.0=1 then
ManchesterWord.14=1
else
ManchesterWord.15=1
endif
If bytectr<7 then ManchesterWord=ManchesterWord>>2
transmit=transmit>>1
Next BYTECTR
encodeddata.lowbyte[mydatactr]=manchesterword.lowbyte
encodeddata.highbyte[mydatactr]=manchesterword.highbyte
Return
The above Manchester conversion routine and the one supplied by Ioannis produce the same result.
Any help would be greatly appreciated.... BTW, I'm using MCS 2.1.0.6 with PBPPro 2.46.
Thanks!!!