MODSERIAL with support for more devices

Dependents:   1D-Pong BMT-K9_encoder BMT-K9-Regelaar programma_filter ... more

Check the cookbook page for more information: https://mbed.org/cookbook/MODSERIAL

Did you add a device? Please send a pull request so we can keep everything in one library instead of many copies. In that case also send a PM, since currently mbed does not inform of new pull requests. I will then also add you to the developers of this library so you can do other changes directly.

Committer:
AjK
Date:
Tue Nov 23 21:34:54 2010 +0000
Revision:
9:b3cdae80e7a9
Parent:
8:775f860e94d3
Child:
10:725fe81aa9ff
1.9

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AjK 1:b7e435fbfe8e 1 /* $Id:$
AjK 2:b936b4acbd92 2
AjK 9:b3cdae80e7a9 3 1.9 - 23/11/2010
AjK 9:b3cdae80e7a9 4
AjK 9:b3cdae80e7a9 5 * Added support for DMA sending of characters. Required is
AjK 9:b3cdae80e7a9 6 the MODDMA library module:-
AjK 9:b3cdae80e7a9 7 http://mbed.org/users/AjK/libraries/MODDMA/latest
AjK 9:b3cdae80e7a9 8 See example_dma.cpp for more information.
AjK 9:b3cdae80e7a9 9
AjK 8:775f860e94d3 10 1.8 - 22/11/2010
AjK 8:775f860e94d3 11
AjK 8:775f860e94d3 12 * Added code so that if a buffer is set to zero length then
AjK 8:775f860e94d3 13 MODSERIAL defaults to just using the FIFO for that stream
AjK 8:775f860e94d3 14 thus making the library "fall back" to teh same operation
AjK 8:775f860e94d3 15 that the Mbed Serial library performs.
AjK 8:775f860e94d3 16 * Removed dmaSend() function that should have been removed
AjK 8:775f860e94d3 17 at 1.7
AjK 8:775f860e94d3 18
AjK 7:ffa4a7cb7f8d 19 1.7 - 21/11/2010
AjK 7:ffa4a7cb7f8d 20
AjK 7:ffa4a7cb7f8d 21 * Remove the DMA enum from MODSERIAL.h as it's not currently
AjK 7:ffa4a7cb7f8d 22 ready for release.
AjK 7:ffa4a7cb7f8d 23 * Added page doxygen comments.
AjK 7:ffa4a7cb7f8d 24
AjK 6:c8f77fe1cc10 25 1.6 - 21/11/2010
AjK 6:c8f77fe1cc10 26
AjK 6:c8f77fe1cc10 27 * Version 1.5 solved a blocking problem on putc() when called
AjK 6:c8f77fe1cc10 28 from another ISR. However, isr_tx() invokes a callback of it's
AjK 6:c8f77fe1cc10 29 own when a byte is tranferred from TX buffer to TX FIFO. User
AjK 6:c8f77fe1cc10 30 programs may interpret that as an IRQ callback. That's an ISR
AjK 6:c8f77fe1cc10 31 call from within an existing ISR which is not good. So the
AjK 6:c8f77fe1cc10 32 TxIrq callback from isr_tx is now conditional. It will only
AjK 6:c8f77fe1cc10 33 be called when isr_tx() is actually within it's own ISR and
AjK 6:c8f77fe1cc10 34 not when called from alternate ISR handlers.
AjK 6:c8f77fe1cc10 35
AjK 5:8365c4cf8f33 36 1.5 - 21/11/2010
AjK 5:8365c4cf8f33 37
AjK 5:8365c4cf8f33 38 * Calling putc() (or any derived function that uses it like
AjK 5:8365c4cf8f33 39 printf()) while inside an interrupt service routine can
AjK 5:8365c4cf8f33 40 cause the system to lock up if the TX buffer is full. This
AjK 5:8365c4cf8f33 41 is because bytes are only transferred from the TX buffer to
AjK 5:8365c4cf8f33 42 the TX FIFO via the TX ISR. If we are, say in an RX ISR already,
AjK 5:8365c4cf8f33 43 then the TX ISR will never trigger. The TX buffer stays full and
AjK 5:8365c4cf8f33 44 there is never space to putc() the byte. So, while putc() blocks
AjK 5:8365c4cf8f33 45 waiting for space it calls isr_tx() to ensure if TX FIFO space
AjK 5:8365c4cf8f33 46 becomes available it will move bytes from the TX buffer to TX
AjK 5:8365c4cf8f33 47 FIFO thus removing the blocking condition within putc().
AjK 5:8365c4cf8f33 48
AjK 4:28de979b77cf 49 1.4 - 21/11/2010
AjK 4:28de979b77cf 50
AjK 4:28de979b77cf 51 * Removed all the new DMA code. I wish mbed.org had proper SVN
AjK 4:28de979b77cf 52 versioning, I'm use to working in HEAD and BRANCHES after I've
AjK 4:28de979b77cf 53 released a project. Getting bug reports in current releases
AjK 4:28de979b77cf 54 while trying to dev new code is hard to manage without source
AjK 4:28de979b77cf 55 control of some type!
AjK 4:28de979b77cf 56
AjK 2:b936b4acbd92 57 1.3 - 21/11/2010
AjK 2:b936b4acbd92 58
AjK 2:b936b4acbd92 59 * Fixed a macro problem with txIsBusy()
AjK 2:b936b4acbd92 60 * Started adding code to use "block data" sending using DMA
AjK 3:0f10f536456e 61 * Removed #include "IOMACROS.h"
AjK 1:b7e435fbfe8e 62
AjK 2:b936b4acbd92 63 1.2 - 21/11/2010
AjK 2:b936b4acbd92 64
AjK 2:b936b4acbd92 65 * Removed unsed variables from flushBuffer()
AjK 2:b936b4acbd92 66 * Fixed a bug where both RX AND TX fifos are cleared/reset
AjK 2:b936b4acbd92 67 when just TX OR RX should be cleared.
AjK 2:b936b4acbd92 68 * Fixed a bug that cleared IIR when in fact it should be left
AjK 2:b936b4acbd92 69 alone so that any pending interrupt after flush is handled.
AjK 2:b936b4acbd92 70 * Merged setBase() into init() as it wasn't required anywhere else.
AjK 2:b936b4acbd92 71 * Changed init() to enforce _uidx is set by Serial to define the _base
AjK 2:b936b4acbd92 72 address of the Uart in use.
AjK 2:b936b4acbd92 73
AjK 1:b7e435fbfe8e 74 1.1 - 20/11/2010
AjK 1:b7e435fbfe8e 75
AjK 1:b7e435fbfe8e 76 * Added this file
AjK 1:b7e435fbfe8e 77 * Removed cruft from GETC.cpp
AjK 1:b7e435fbfe8e 78 * "teh" should be "the", why do my fingers do that?
AjK 1:b7e435fbfe8e 79
AjK 1:b7e435fbfe8e 80 1.0 - 20/11/2010
AjK 1:b7e435fbfe8e 81
AjK 1:b7e435fbfe8e 82 * First release.
AjK 1:b7e435fbfe8e 83
AjK 1:b7e435fbfe8e 84 */