PIC #1:
Code:
TXSTA.5 = 1 ' TXEN: Transmit Enable bit
hserout [ "[1]" ]
while TXSTA.1 = 0 ' Check TRMT: Transmit Shift Register Status bit
wend
hserin [ wait("["), STR RecvData\11\"]" ]
hserout [ "[2]" ]
while TXSTA.1 = 0 ' Check TRMT: Transmit Shift Register Status bit
wend
pauseus 300
TXSTA.5 = 0 ' <----- Causes Framing error after last byte !
Mainloop:
BlinkLED = 1
BlinkLED = 0
goto mainloop
end
PIC #2:
Code:
ReceiveInterrupt:
hserin [ wait("["), STR RecvData\11\"]" ]
UsartFlag = 1
@ INT_RETURN
Start:
Pause 200 ' Let PIC and LCD stabilize
Mainloop:
LEDblink = 1
if UsartFlag = 1 then
TXSTA.5 = 1
hserout [ "[0]" ]
while TXSTA.1 = 0 ' Check TRMT bit
wend
UsartFlag = 0
TXSTA.5 = 0
endif
LEDblink = 0
GOTO Mainloop
end
1. PICs can talk back and forth with no errors.
2. PIC #2 can disable transmitter every single time.
3. Framing error as soon as PIC #1 disables transmitter, causing PIC #2 to lock up (no more blink LED on bottom channel).
Bookmarks