Wahoo! My TDS210 is so black and white. Those new colour plasma scopes look fun...
You're right about the byte time. Somehow I messed up that calculation.
Receiving data through a 220W series resistor, a 6N137 and a flyback diode across pins 2 & 3 for protection. 1K pullup on the output, and the signal is nice and clean.
I did some further testing yesterday. Basically sat in a tight loop around RCIF2 and twiddled a pin when something come in and/or an error occurred.
Found that everything was working perfectly. FERR and OERR were never set and every byte I received came through properly.
Then, I re-added my TMR0 interrupt routine, using DT_INTS 18. It ticks every 60 uS and does about 4 uS of PBP work before returning. The routine works well when data is transmitted fairly slowly. It crashes and I start missing bytes when lots of data is sent in a chain.
I suspect that what I hadn't considered was the overhead of 70+ 'hidden' instructions on each side of the interrupt. Even at 20 MHz, it looks like the total interrupt time is about 34 uS.
It shouldn't make a difference, since my main loop is so short. But that's all I can think of right now.
Today I'm going to try using an .asm interrupt routine and see if the extra leanness makes any difference.





Bookmarks