I moved the exit handler from exit.c to retarget.cpp where the rest of
the standard C library retargetting routines are found. The exported
makefiles already explicitly link in retarget.o but not exit.o
When building with the GNU toolchain, it is safest to link in the
object file directly for retargetting routines so that GNU linker has
to use these versions of the routines.
Testing:
I have only tested this change with GCC_ARM. It should really be
tested with more toolchains before getting merged.
Activated the I2CSlave functions. Slave block read/write operations are fully supported. The slave byte read and writes need general modification to I2CSlave.cpp. See pending Issue.
Activated the PWM functions. They are supported now using the SCT after updating us_ticker() to use the MRT instead of the SCT.
Added PWM support for the LPC812 using the SCT. Code was ported from LPC824 libs.
First needed to modify us_ticker() to free up the SCT and use the MRT instead.
PWM can support a maximum of 4 channels using any portpin. All channels will use the same period.
Removed comments again regarding need for dedicated i2c_slave_byte_read() and i2c_slave_byte_read(). This issue is captured in "I2c - slave should have own write/read functions (#896)"
Disabled DEVICE_I2CSLAVE option for LPC812 until the dedicated i2c_slave_byte_read() and i2c_slave_byte_write() functions have been added for all platforms.
Fixed SystemCoreClock calculation for LPC810 (same as for LPC812). Added MainClock variable for serial_api.
Added comments for PLL calculation. Note that SystemCoreClock for LPC810 is still 24MHz rather than rated 30MHz.
The dedicated I2C Slave byte read and byte write functions need to be called
from 'common' mbed I2CSlave API for devices that have separate Master and
Slave engines such as the lpc812 and lpc1549.
Added i2c_slave_byte_read() and i2c_slave_byte_write() for devices such as the lpc812, lpc824 and lpc1549 that have separate I2C engines for Master and Slave functions.
Added support for I2C Slave block read, block write and byte read and write. The slave address can be set and the general call address is automatically enabled. Note that the lpc812, lpc824 and lpc1549 have the same I2C engine. This new engine is very different from the lpc1768 and other NXP mbeds. The newer engine has separate controls for Master and Slave functions and they can be enable at the same time. Note that currently the lib does not support multi-master (arbitration lost is not handled).