USBUART - IRQ

Dependents:   MPU9250AHRS_UBSUART-IRQ

Fork of MODSERIAL by Andy K

Revision:
5:8365c4cf8f33
Parent:
4:28de979b77cf
Child:
6:c8f77fe1cc10
diff -r 28de979b77cf -r 8365c4cf8f33 ChangeLog.c
--- a/ChangeLog.c	Sun Nov 21 14:44:02 2010 +0000
+++ b/ChangeLog.c	Sun Nov 21 16:08:36 2010 +0000
@@ -1,5 +1,18 @@
 /* $Id:$
 
+1.5 - 21/11/2010
+
+    * Calling putc() (or any derived function that uses it like
+      printf()) while inside an interrupt service routine can
+      cause the system to lock up if the TX buffer is full. This
+      is because bytes are only transferred from the TX buffer to
+      the TX FIFO via the TX ISR. If we are, say in an RX ISR already,
+      then the TX ISR will never trigger. The TX buffer stays full and
+      there is never space to putc() the byte. So, while putc() blocks
+      waiting for space it calls isr_tx() to ensure if TX FIFO space
+      becomes available it will move bytes from the TX buffer to TX
+      FIFO thus removing the blocking condition within putc().
+
 1.4 - 21/11/2010
 
     * Removed all the new DMA code. I wish mbed.org had proper SVN