I want to use a serial SCI with 250kBaud for DMX - protocol.
DMX use a break to mark Start of a new DMX-frame. I found no special break detect feature. Instead I want to use the frameing error detection, which should work. The framing error in Interrupt receive mode throws no SCI RX interrupt instead the RX63 throws a ERI group12 Interrupt. And the trouble starts.
my init for ERI Interrupt
IPR(ICU,GROUP12) = 0x07; // set Int. Priority to 7
IEN(ICU,GROUP12) = 0x1; // enable Group12 Int
IR(ICU,GROUP12) = 0x00; //
ICU.GEN.LONG = 0x00000020; // enables SCI5 ERI Int.
the last line set ICU.GEN to 0x20 but after this line the Register is read with 0x20000000 in the debugger I/O view
so it sets Bit 29 but Bit 29 is undefined ???
the intrerrupts works a frame ERROR throws group12 Interrupt. But If you try to set register correct to 0x20 again no more working
also in debugging pause the program the interrupt group12 is never thrown again
can somebody give me some ideas how to handle this group12 Interrupts and why is Bit29 not defined but set with
ICU.GEN.LONG = 0x00000020;
maybe this workaround helps:
Poll and handle the FER bit in the RXI service routine. This should work because the RXI flag is
also set in case of the framing error. Please be aware that when the FER flag "is being set to 1,
the subsequent receive data is not transferred to RDR".