Part Number: MSP430FR5969
Hi,
I'm running a 9600 baud UART, derived from an 8MHz DCO. I'd like to put the processor in LPM3/4, but still be able to receive a byte on the UART (which may arrive at any unexpected time). Based on the datasheet, I thought I would be able to rely on the DCO being automatically started by the falling edge of the start bit to make this work. However, when I put the processor to sleep, I miss the first received byte of the packet once in every 20 wake ups or so. With sleep disabled, I have not yet been able to induce a lost byte (I have an overnight test running to confirm).
My questions are:
1) Are my expectations reasonable? Can the FR5969 DCO and UART reliably start up from LPM4 to catch a 9600 baud byte? The datasheet spec of worst case wakeup time of 10us would suggest it should be possible (<10% of the start bit), but please enlighten me if I am missing something.
2) If it is reasonable to do this reliably, is there something special I need to do to ensure it works? Special optimizations in the ISR? I'm already doing the __even_in_range trick to speed up the ISR vector. Tricks to start the DCO up faster? All hints appreciated.
Thanks!