Code:
'###############################################
'#
'# program to test Tx & Rx API packets on
'# xb24 series 1 units.
'#
'# host mcu's= pic16f88
'#
'###############################################
'---[set fuses]---------------------------------
'Program Configuration Register 1
@ __CONFIG _CONFIG1, _HS_OSC & _DEBUG_OFF & _WDT_ON & _LVP_OFF & _CP_ALL & _CPD_ON & _BODEN_ON & _MCLR_ON & _PWRTE_ON & _WRT_PROTECT_OFF
;Program Configuration Register 2
@ __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF
'---[includes----]-------------------------------
INCLUDE "bs2defs.bas"
'---[debug defines]-------------------------------
DEFINE DEBUG_REG PORTA
DEFINE DEBUG_BIT 2
DEFINE DEBUG_BAUD 9600
DEFINE DEBUG_MODE 1
'---[defines]--------------------------------------
DEFINE OSC 8
'DEFINE HSER_RCSTA 90h
DEFINE HSER_RCSTA 92h ' Enable serial ports Tx & Rx, sets SPEN & CREN & OERR
DEFINE HSER_TXSTA 24h ' Enable Tx HS, TXEN=1 & BRGH=1
DEFINE HSER_BAUD 9600 ' set baud and compiler will auto calc HSER_SPBRG
DEFINE HSER_CLROERR 1 ' Clear overflow automatically
ANSEL=0
ADCON0=0
ADCON1=7
CMCON=7
'---[contants]---------------------------------------
LF CON 10
CR CON 13
MAX_DATA_LEN CON 12
'-----------------------------------------------------------------------
BLINK_PA1 VAR portA.1
BLINK_PB1 VAR portB.1 'to show sending serial data
TX_APIPacket VAR byte[14]
Counter VAR byte
Checksum VAR byte
Ndx VAR byte
'-----------------------------------------------------------------------
INIT:
Clear
gosub FILL_API_PACKET
MAIN:
FOR counter=0 to 35
gosub sub_Test_Tx_API_Frame
next counter
goto MAIN
sub_Test_Tx_API_Frame:
gosub sub_CALC_Checksum
'send debug to realterm window
Debug "TX= ",str TX_APIPacket\13," ", hex checksum, " [Cnt: ",dec counter,CR
hserout [str TX_APIPacket\13, checksum]
gosub sub_BLINK_PB1 'show pic is alive
pause 500
RETURN
FILL_API_PACKET:
TX_APIPacket(0)=$7E
TX_APIPacket(1)=$00
TX_APIPacket(2)=$0A
TX_APIPacket(3)=$01
TX_APIPacket(4)=$01 'API frame ID
TX_APIPacket(5)=$50 'DL addr
TX_APIPacket(6)=$01 'DL addr
TX_APIPacket(7)=$00 'option
TX_APIPacket(8)=$48 'H
TX_APIPacket(9)=$65 'E
TX_APIPacket(10)=$6c 'L
TX_APIPacket(11)=$6c 'L
TX_APIPacket(12)=$6f 'O
RETURN
sub_CALC_Checksum:
Checksum = 0
for Ndx = 3 to MAX_DATA_LEN
Checksum = Checksum + TX_APIPacket(Ndx)
next
Checksum = $FF & Checksum 'remove values > 1 byte
Checksum = $FF - Checksum '2's compliment
RETURN
sub_BLINK_PA1:
High BLINK_PA1
pause 200
low BLINK_PA1
PAUSE 200
RETURN
sub_BLINK_PB1:
High BLINK_PB1
pause 200
low BLINK_PB1
PAUSE 200
RETURN
END
mcu=pic16f88
xbee=xb24
i'm sending a string then checksum from the host pic16f88 to a xbee and that xbee sends it to another xbee. somewhere around 34-35 iterations for a total of 504 bytes the xbee's stop sending/recieving.
the pic is still sending the string out as i can see this with a LCD
connected to the Tx pin on the sending host.
Now, i can use two xbib dev boards connected to my computer with one of the xbee's on each and send the same API packet with no issues.
so i'm leaning towards the problem is my pic16f88 or my program/fuses or both.
any thoughts on why this is happening?
thx
archendekta
Bookmarks