Am 16.11.2011 18:35, schrieb Sergio Campamá: > Ok, I got it working now... > > With the interrupt disable/enable in putchar, as in the following code, the > app never crashes > > __dint(); > while(! (UC0IFG & UCA0TXIFG)); > UCA0TXBUF = character; > UC0IFG &= ~UCA0TXIFG;
this flag is cleared automatically by the hardware (just delete that line). and the order you doing it here could have bad consequences too. in case the CPU is run very slowly and the UART is very fast, the byte could be completely sent before you clear the flag so for the next round it would lock forever as the TXIFG won't get set again. the same problem could occur if the hardware uses a buffer and is ready again immediately after the write to the TX buffer. The MSP430 UART module actualy has a buffer (internal shift register and the value mapped to the TXD/RXD memory locations). so this could explain if you had problems with this code while interrupts are enabled... > __eint(); > > I think with this, printf CAN be called from interrupts... this version could have unfortunate effects.. the EINT at the end enables interrupts - even within an interrupt handler. so nested interrupts are allowed... functions that lock interrupts and should be safe for use in interrupts and foreground best use the critical function attribute: __attribute__((critical)) int putchar(int c) {...} that way, the compiler will generate code to disable the interrupts and restore that state afterwards. anyway, even if putchar works from interrupts, if foreground and interrupts output data at the "same time" you'll get a weird mix of characters on the receiver's side of the wire... chris ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity, and more. Splunk takes this data and makes sense of it. IT sense. And common sense. http://p.sf.net/sfu/splunk-novd2d _______________________________________________ Mspgcc-users mailing list Mspgcc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mspgcc-users