Hello all,
I have had some odd problems with a PR I am attempting to finalize:
cpu/atmega_common: RTT and RTC support https://github.com/RIOT-OS/RIOT/pull/8842
When working with the real-time timers, there are a number of times that you have to wait a few of the slow clock cycles to go by. I am using xtimer_usleep to sleep the thread temporarily. But! xtimer causes the code I am using to hang. Debugging it is difficult, because anything sending debug messages over UART causes the problems to disappear!
I have been editing and running various numbers: xtimer_usleep(8); 8 and bigger fail xtimer_usleep(7); 7 and smaller work
Bigger numbers make them fail!
Here is a snippet of the offending code:
void __asynch_wait(uint8_t num_cycles) { /* Wait until all busy flags clear */ while( ASSR & ((1 << TCN2UB) | (1 << OCR2AUB) | (1 << OCR2BUB) > (1 << TCR2AUB) | (1 << TCR2BUB)) ) { #ifdef MODULE_XTIMER /* Sleep for num_cycles RTC cycles */ xtimer_usleep(num_cycles * 35 * US_PER_MS); #else /* Suppress unused parameter warning */ (void)num_cycles;
thread_yield(); #endif } }
Anyone have any ideas on what is going on?
Sincerely, Matthew