USBUART - IRQ

Dependents:   MPU9250AHRS_UBSUART-IRQ

Fork of MODSERIAL by Andy K

Committer:
AjK
Date:
Sun Nov 21 16:08:36 2010 +0000
Revision:
5:8365c4cf8f33
Parent:
4:28de979b77cf
Child:
6:c8f77fe1cc10
1.5

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AjK 1:b7e435fbfe8e 1 /* $Id:$
AjK 2:b936b4acbd92 2
AjK 5:8365c4cf8f33 3 1.5 - 21/11/2010
AjK 5:8365c4cf8f33 4
AjK 5:8365c4cf8f33 5 * Calling putc() (or any derived function that uses it like
AjK 5:8365c4cf8f33 6 printf()) while inside an interrupt service routine can
AjK 5:8365c4cf8f33 7 cause the system to lock up if the TX buffer is full. This
AjK 5:8365c4cf8f33 8 is because bytes are only transferred from the TX buffer to
AjK 5:8365c4cf8f33 9 the TX FIFO via the TX ISR. If we are, say in an RX ISR already,
AjK 5:8365c4cf8f33 10 then the TX ISR will never trigger. The TX buffer stays full and
AjK 5:8365c4cf8f33 11 there is never space to putc() the byte. So, while putc() blocks
AjK 5:8365c4cf8f33 12 waiting for space it calls isr_tx() to ensure if TX FIFO space
AjK 5:8365c4cf8f33 13 becomes available it will move bytes from the TX buffer to TX
AjK 5:8365c4cf8f33 14 FIFO thus removing the blocking condition within putc().
AjK 5:8365c4cf8f33 15
AjK 4:28de979b77cf 16 1.4 - 21/11/2010
AjK 4:28de979b77cf 17
AjK 4:28de979b77cf 18 * Removed all the new DMA code. I wish mbed.org had proper SVN
AjK 4:28de979b77cf 19 versioning, I'm use to working in HEAD and BRANCHES after I've
AjK 4:28de979b77cf 20 released a project. Getting bug reports in current releases
AjK 4:28de979b77cf 21 while trying to dev new code is hard to manage without source
AjK 4:28de979b77cf 22 control of some type!
AjK 4:28de979b77cf 23
AjK 2:b936b4acbd92 24 1.3 - 21/11/2010
AjK 2:b936b4acbd92 25
AjK 2:b936b4acbd92 26 * Fixed a macro problem with txIsBusy()
AjK 2:b936b4acbd92 27 * Started adding code to use "block data" sending using DMA
AjK 3:0f10f536456e 28 * Removed #include "IOMACROS.h"
AjK 1:b7e435fbfe8e 29
AjK 2:b936b4acbd92 30 1.2 - 21/11/2010
AjK 2:b936b4acbd92 31
AjK 2:b936b4acbd92 32 * Removed unsed variables from flushBuffer()
AjK 2:b936b4acbd92 33 * Fixed a bug where both RX AND TX fifos are cleared/reset
AjK 2:b936b4acbd92 34 when just TX OR RX should be cleared.
AjK 2:b936b4acbd92 35 * Fixed a bug that cleared IIR when in fact it should be left
AjK 2:b936b4acbd92 36 alone so that any pending interrupt after flush is handled.
AjK 2:b936b4acbd92 37 * Merged setBase() into init() as it wasn't required anywhere else.
AjK 2:b936b4acbd92 38 * Changed init() to enforce _uidx is set by Serial to define the _base
AjK 2:b936b4acbd92 39 address of the Uart in use.
AjK 2:b936b4acbd92 40
AjK 1:b7e435fbfe8e 41 1.1 - 20/11/2010
AjK 1:b7e435fbfe8e 42
AjK 1:b7e435fbfe8e 43 * Added this file
AjK 1:b7e435fbfe8e 44 * Removed cruft from GETC.cpp
AjK 1:b7e435fbfe8e 45 * "teh" should be "the", why do my fingers do that?
AjK 1:b7e435fbfe8e 46
AjK 1:b7e435fbfe8e 47 1.0 - 20/11/2010
AjK 1:b7e435fbfe8e 48
AjK 1:b7e435fbfe8e 49 * First release.
AjK 1:b7e435fbfe8e 50
AjK 1:b7e435fbfe8e 51 */