This is what I do with DT_Interrupts on a serial stream of 115kBps on a PIC18F25k22 @44.2368MHz.
"Buffer" is a circular buffer of 256 bytes. When BufferReady = 1, I use another pointer (ParsePtr) to parse the data.
Code:'----[interrupts Handlers]------------------------------------------------------- RX_IntHandler: IF (RCSTA1.2 = 1) THEN ' A framing error occurred. ' Read RCREG to clear the error but don't use the data. CharBuff = RCREG1 ELSE ' No framing error occurred. Get caracter. CharBuff = RCREG1 If CharBuff <= 10 Then Buffer(BuffPtr) = 0 BuffPtr = BuffPtr + 1 BufferReady = 1 Else If CharBuff >= 32 Then Buffer(BuffPtr) = CharBuff BuffPtr = BuffPtr + 1 ENDIF ENDIF ENDIF @ INT_RETURN




Bookmarks