x@email.com
18-Jan-2006 6:05 |
#18
|
This seems to work for me (borrowed from other users)
void __attribute__((interrupt)) isr_empty(void){
inchar = SC0SR1; //needed to clear RDRF flag
inchar = SC0DRL; //read incoming character
sci_putch(inchar);
}
void __attribute__((interrupt)) isr_empty(void){/* do nothing */}
extern void _start(void);/* entry point in crt0.s */
void __attribute__ (( section (".vectors" )) (* const interrupt_vectors[])(void) = {
isr_empty, /* $ffc0: reserved */
isr_empty, /* $ffc2: reserved */
isr_empty, /* $ffc4: reserved */
isr_empty, /* $ffc6: reserved */
isr_empty, /* $ffc8: reserved */
isr_empty, /* $ffca: reserved */
isr_empty, /* $ffcc: reserved */
isr_empty, /* $ffce: reserved */
isr_empty, /* $ffd0: reserved */
isr_empty, /* $ffd2: reserved */
isr_empty, /* $ffd4: reserved */
sci_int, /* $ffd6: SCI serial system */
isr_empty, /* $ffd8: SPI serial transfer complete (SPIE) */
isr_empty, /* $ffda: Pulse accumulator input edge (PAII) */
isr_empty, /* $ffdc: Pulse accumulator overflow (PAOVI) */
isr_empty, /* $ffde: Timer overflow (TOI) */
isr_empty, /* $ffe0: Timer channel 7 */
isr_empty, /* $ffe2: Timer channel 6 */
isr_empty, /* $ffe4: Timer channel 5 */
isr_empty, /* $ffe6: Timer channel 4 */
isr_empty, /* $ffe8: Timer channel 3 */
isr_empty, /* $ffea: Timer channel 2 */
isr_empty, /* $ffec: Timer channel 1 */
isr_empty, /* $ffee: Timer channel 0 */
isr_empty, /* $fff0: Real-time interrupt (RTII) */
isr_empty, /* $fff2: -IRQ (external pin) */
isr_empty, /* $fff4: -XIRQ pin */
isr_empty, /* $fff6: Software interrupt */
_start, /* $fff8: Illegal opcode trap */
_start, /* $fffa: COP failure (NOCOP) */
_start, /* $fffc: Clock monitor fail (CME) */
_start /* $fffe: -RESET (hardware reset) */
}; |
|