??? 08/08/10 04:38 Read: times |
#177871 - TX inside serialint Responding to: ???'s previous message |
Erik Malund said:
yes, but, I would not recommend it the above inside the ISR may make the main 'hang' for a while anything inside an ISR that involves waits should be avoided I would do as follows in the RI if (TI) send a byte else set flag then in the 'standard' if TI routine if flag send a byte clr flag Erik Yes, no waits inside the serial interrupt. The problem with setting a flag is the possible delay before the main routine handles it. There may be an alternative. Call send_char from inside the serial interrupt.While in send_char do a reti. Then the interrupts are free, and you stay in send_char. There is no delay inside the serial interrupt, and you handle the sending immediately. void send_char (char ch){ freeint(void); ... now handle the waiting and sending here }//here you go back to where you were when the serial interrupt occurred. void freeint (void){ #pragma asm reti #endpragma asm } Regards Johan Smit } |
Topic | Author | Date |
Writing to SBUF in Serial Routine | 01/01/70 00:00 | |
Sure... | 01/01/70 00:00 | |
yes, but | 01/01/70 00:00 | |
TX inside serialint | 01/01/70 00:00 | |
Pardon?? | 01/01/70 00:00 | |
Pardon accepted | 01/01/70 00:00 | |
Still a Missing Part of Scheme | 01/01/70 00:00 | |
Pardon | 01/01/70 00:00 | |
Will that work in 'C' ? | 01/01/70 00:00 | |
Assembler if you want | 01/01/70 00:00 | |
Why send_char? | 01/01/70 00:00 | |
Why send_char | 01/01/70 00:00 | |
You missed the point | 01/01/70 00:00 | |
Call a routine from an interrupt | 01/01/70 00:00 | |
Still misunderstanding | 01/01/70 00:00 | |
misunderstandings![]() | 01/01/70 00:00 | |
what happened to the OP? | 01/01/70 00:00 |