Quantcast
Channel: MEL PICBASIC Forum
Viewing all articles
Browse latest Browse all 4787

cannot find the reason for such a strange behavior

$
0
0
Code:

if Flg_15 = True then


@ INT_DISABLE  RX_INT                              ; disable RX_INT interrupts






if Head = 15 & FlagTime = False then
W2 = 0
gosub XB1adc
gosub XB2adc
'gosub XB3adc


CIndex = 0
gosub XBee_Value


Pulse[0] = "1"
Pulse[1] = "5"
Pulse[2] = "0"
Pulse[3] = " "
Pulse[4] = "A"
Pulse[5] = "0"
Pulse[6] = "="
Pulse[7] = Decode[3]
Pulse[8] = Decode[2]
Pulse[9] = Decode[1]
Pulse[10] = Decode[0]


CIndex = 1
gosub XBee_Value


Pulse[11] = " "
Pulse[12] = "A"
Pulse[13] = "1"
Pulse[14] = "="
Pulse[15] = Decode[3]
Pulse[16] = Decode[2]
Pulse[17] = Decode[1]
Pulse[18] = Decode[0]




CIndex = 2
gosub XBee_Value


Pulse[19] = " "
Pulse[20] = "A"
Pulse[21] = "2"
Pulse[22] = "="
Pulse[23] = Decode[3]
Pulse[24] = Decode[2]
Pulse[25] = Decode[1]
Pulse[26] = Decode[0]


'------------------
CIndex = 3
gosub XBee_Value


Pulse[27] = " "
Pulse[28] = "A"
Pulse[29] = "3"
Pulse[30] = "="
Pulse[31] = Decode[3]
Pulse[32] = Decode[2]
Pulse[33] = Decode[1]
Pulse[34] = Decode[0]


CIndex = 4
gosub XBee_Value


Pulse[35] = " "
Pulse[36] = "A"
Pulse[37] = "4"
Pulse[38] = "="
Pulse[39] = Decode[3]
Pulse[40] = Decode[2]
Pulse[41] = Decode[1]
Pulse[42] = Decode[0]




CIndex = 5
gosub XBee_Value


Pulse[43] = " "
Pulse[44] = "A"
Pulse[45] = "5"
Pulse[46] = "="
Pulse[47] = Decode[3]
Pulse[48] = Decode[2]
Pulse[49] = Decode[1]
Pulse[50] = Decode[0]
'------------------
CIndex = 6
gosub XBee_Value


Pulse[51] = " "
Pulse[52] = "A"
Pulse[53] = "6"
Pulse[54] = "="
Pulse[55] = Decode[3]
Pulse[56] = Decode[2]
Pulse[57] = Decode[1]
Pulse[58] = Decode[0]


CIndex = 7
gosub XBee_Value


Pulse[59] = " "
Pulse[60] = "A"
Pulse[61] = "7"
Pulse[62] = "="
Pulse[63] = Decode[3]
Pulse[64] = Decode[2]
Pulse[65] = Decode[1]
Pulse[66] = Decode[0]




CIndex = 8
gosub XBee_Value


Pulse[67] = " "
Pulse[68] = "A"
Pulse[69] = "8"
Pulse[70] = "="
Pulse[71] = Decode[3]
Pulse[72] = Decode[2]
Pulse[73] = Decode[1]
Pulse[74] = Decode[0]


'------------------ Start CRC Function
W0 = 0
For DMY = 0 To 74
W0 = W0 + Pulse[DMY]
next DMY
DMY = W0//256
Pulse[75] = (255 - DMY)

' -------------------- End CRC function


gosub Check_Status
if Id > 51 then goto Skip_AK_15


Hserout ["AT+CIPSEND=",Id,44,55,55,13,10]
HSERIN 500,Skip_AK_20, [WAIT (">"), DMY]
Hserout [str Pulse\76,10]




endif


Skip_AK_15:
Flg_15 = false
@ INT_ENABLE  RX_INT                                ; enable RX_INT interrupts
goto Skip_All
endif

The above subroutine reads adc values from two XBee and send the values out to a client, via ESP. All works fine except the CRC function that yields every time "253" whatever adc values are trasmitted!
All I am doing is to add up all the bytes in the word variable W0, extract the low byte and subtract this value to 255. But all I find everytime in Pulse[75] is the value 253. On the client the same algoritm yields the correct value!

I cannot find the reason for such a strange behaviour. What am I doing wrong? Any help is appreciated!

Pic 18F2620 @ 8 MHz + ESP8266 + XBee

Alberto

Viewing all articles
Browse latest Browse all 4787

Trending Articles