Commit Graph

359 Commits (299aff13f2a54c4984d16b50f017d07b04bb744f)

Author SHA1 Message Date
Yihui Xiong 73b643816c add Arch Pro target 2014-05-28 17:54:42 +08:00
0xc0170 48cc27f405 [LPC targets + K20 + F407VG] spi,serial, i2c asserts logic corrections 2014-05-28 10:35:50 +02:00
0xc0170 6a84ffa433 Merge branch 'master' into dev_error_assert
Conflicts:
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_K20D5M/spi_api.c
	libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11U6X/gpio_api.c
	libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/gpio_api.c
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/analogin_api.c
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/gpio_api.c
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/i2c_api.c
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/pwmout_api.c
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/serial_api.c
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/spi_api.c
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/i2c_api.c
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F302R8/i2c_api.c
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/i2c_api.c
2014-05-28 09:53:51 +02:00
0xc0170 f9091a237c [Freescale targets] - spi, serial assers corrections
- reverted gpio change in TARGET_LPC11U6X
2014-05-28 08:23:28 +02:00
0xc0170 9a39c1ddee [NRF51822] analog read - set channel 2014-05-27 12:57:45 +02:00
Toyomasa Watarai d8a81cde30 [LPC1549] Fixed ADC channel 1 issue 2014-05-27 11:20:12 +09:00
Rohit Grover f65b7d9077 removing warnings discovered by using -Weffc++ flag for gcc 2014-05-26 18:04:46 +01:00
Neil Thiessen 0438beba09 Update gpio_api.c
Modified gpio_set() to allow PIO0_0, PIO0_10, and PIO0_15 to be properly configured for GPIO.
2014-05-22 15:58:01 -06:00
Neil Thiessen 1073702cd2 Changed LED mapping to RGB
Changed the pin mapping for LED1, LED2, and LED3, to Red, Green, and Blue respectively. This matches the KL25Z and LPC11U68, and makes more sense in my opinion.
2014-05-22 08:52:10 -06:00
Neil Thiessen e441e0aa4f Update gpio_api.c
Modified gpio_set() to allow PIO0_0, PIO0_10, and PIO0_15 to be properly configured for GPIO.
2014-05-21 09:21:43 -06:00
Martin Kojtal 5831f87601 Merge pull request #317 from neilt6/master
[LPC11U6X] PinName LED mapping to RGB
2014-05-21 15:11:46 +01:00
0xc0170 b728ea1324 [LPC11CXX] can_frequency - bug fix
- link on the mbed issue report: https://mbed.org/users/mbed_official/code/mbed-src/issues/2
2014-05-21 15:08:55 +01:00
0xc0170 0306d52fc5 [K20, LCP1768, F100RB] asserts corrections 2014-05-21 14:33:42 +01:00
Neil Thiessen ed0b72233e Changed LED mapping to RGB
Changed the pin mapping for LED1, LED2, and LED3, to Red, Green, and Blue respectively. This matches the KL25Z, and makes more sense in my opinion.
2014-05-20 11:03:49 -06:00
0xc0170 906a6745a9 assert - logic corrections 2014-05-20 17:10:11 +01:00
0xc0170 60276a7cac __ASSERT_MSG macro for uvision, corrections in LPC targets - serial - assert 2014-05-20 16:41:30 +01:00
0xc0170 d843d56c08 [ALL TARGETS] error replaced by assert for preconditions 2014-05-20 14:20:37 +01:00
Martin Kojtal e7f82dfb52 Merge pull request #312 from mazgch/master
fix wrong pin in C027 platform api
2014-05-19 08:43:22 +01:00
mazgch ec6104a0fd typo 2014-05-16 18:19:06 +02:00
Martin Kojtal 32deaca3f9 Merge pull request #308 from mazgch/master
[ublox c027] platform api to manage peripheral power supplies and level shifters
2014-05-16 16:08:12 +01:00
0xc0170 fb90157c9a All targets except STM - asserts for checking presumptions (function parameters) 2014-05-16 15:45:12 +01:00
Toyomasa Watarai 71b734812b [LPC11U68] Added PwmOut and USBDevice support
Added PwmOut support using SCT0/1
Added USBDevice support
Fixed analog mode issue for ADC
2014-05-16 16:00:43 +09:00
Bogdan Marinescu 7fda8e7eb7 Merge branch 'master' of github.com:mbedmicro/mbed 2014-05-15 17:12:41 +01:00
Bogdan Marinescu 4d4ac9cd81 Fixed LPC11U68 flow control issue 2014-05-15 17:12:28 +01:00
mazgch a36ad6c0b6 address coding style concerns of some individuals 2014-05-15 17:37:15 +02:00
mazgch f8e0d9cf3e added a api to manage the power supplies of peripheral power supplies and level shifters 2014-05-15 17:10:30 +02:00
0xc0170 09fe00f041 gpio and pinmap - asserts for NC as parameters (not init), abort retarget
- retarget - abort - calls mbed_die
	- asserts added to gpio mbed hal for all targets
2014-05-15 15:30:14 +01:00
mazgch 7bc41ef504 some more pin names 2014-05-14 17:59:32 +02:00
0xc0170 4c61464ee7 all targets - gpio - NC guard
- gpio init enables to set pin to NC, thus the rest of gpio HAL should not do any action
	  if pin is set to NC.
2014-05-14 15:44:33 +01:00
Toyomasa Watarai e756237ebf [LPC11U68] Fixed PLL lock issue etc
Fixed PLL lock issue
Corrected system clock related code
2014-05-12 15:25:23 +09:00
Martin Kojtal f62e0e4d9f Merge pull request #289 from neilt6/master
LPC11UXX and LPCU13XX - Fix reset glitch in pwmout_write()
2014-05-08 08:45:19 +01:00
Neil Thiessen 0b449bb1d7 Fix reset glitch in pwmout_write() on LPC13XX
Fixed the same problem as https://github.com/mbedmicro/mbed/pull/289 on the LPC13XX.
2014-05-07 08:53:55 -06:00
Bogdan Marinescu 06edaf703a Merge pull request #294 from mazgch/master
increase timeout for slow I2C slaves that make use of extensive clock stretching
2014-05-07 13:18:30 +01:00
mazgch 94ac072267 fix multibyte reads (was polling wrong status value) 2014-05-07 13:39:27 +02:00
Mihail Stoyanov 0cd322f5c3 Added D14, D15 pins for LPC812 2014-05-07 13:15:32 +03:00
mazgch e61b2f1f88 make sure we remove any function from a physical pin so that we can assign a new function to it. 2014-05-07 09:38:26 +02:00
Neil Thiessen 3e42b889ac Fix reset glitch in pwmout_write()
Resetting the timer every time the duty cycle is changed causes unwanted glitches to be produced on the output. These glitches manifest as a tone at the update frequency when PWM is used for class D style audio.
2014-05-01 09:19:14 -06:00
Bogdan Marinescu b5f6c135e4 Merge pull request #279 from xiongyihui/master
fix prescaler settings
2014-04-29 16:46:12 +01:00
Toyomasa Watarai 3de6ec9451 [LPC11U68] Initial release
Initial release of NXP LPC11U68 target.
2014-04-29 10:32:24 +09:00
Yihui Xiong f11cb671e5 fix prescaler settings 2014-04-29 07:30:50 +08:00
sg- b64e32299f add fflush to exit
enable DEVICE_STDIO_MESSAGES on k64f
remove all line endings from error messages throughout mbed sdk (all targets)
2014-04-09 16:24:13 -05:00
Yihui Xiong 61a0f59bad add I2C pins name to Arch and Arch Pro 2014-04-04 10:40:31 +08:00
Mihail Stoyanov 4e46149448 Added pins D14 and D15 for LPC1549 2014-04-02 14:40:02 +01:00
Mihail Stoyanov 4110d25404 Added D14 and D15 pins for Arch Pro 2014-04-01 18:39:41 +01:00
neilt6 e57e69c772 Changed error(...) to a weak function
Made error(...) a weak function so that it can be overridden in
production projects. Also fixed several serial_api.c files that required
stdlib.h, but were getting it from error.h.
2014-03-31 10:27:14 -06:00
Bogdan Marinescu 71b306a2d4 Improvements to Sam's platform_init.c commit 2014-03-25 11:43:54 +00:00
sg- ecad62a205 Updates to build_api.py (platform_init.c remains platform_init.o in mbed.bld) and moved NMI_Handler from gpio_irq_api.c to platform_init.c for KL05Z, KL25Z and KL46Z target platforms to take advantage of this change. 2014-03-24 18:41:19 -05:00
Bogdan Marinescu c013d6e6a9 Restore serial_api.c on LPC1768
Michael's GPIO fix changed this to a previous version, this commit restores
it to the last version.
2014-03-18 10:53:33 +00:00
Toyomasa Watarai 84a654d200 [LPC1549] Added AnalogOut API and PWM improvement
Added AnalogOut
I2C code cleanup
PWM now support 4ch
us_ticker now use RIT instead of SCT
2014-03-12 19:23:14 +09:00
Bogdan Marinescu f34be80874 Fix compilation errors from GPIO pull request 2014-03-10 13:41:31 +00:00
Bogdan Marinescu 423ddcb86e Merge pull request #198 from mazgch/gpio_api
proposed change of gpio_api (new update pull request)
2014-03-10 11:15:59 +00:00
Toyomasa Watarai 855bafe8d5 Added PwmOut for LPC1549 target 2014-03-07 18:40:45 +09:00
mazgch 8f5a2a580a fix indentation and make helpers static inline 2014-03-04 15:00:28 +01:00
mazgch c1d3cb5aa3 address concern from watarai-san about code size and performance by creating a set of common initialization functions 2014-03-04 14:09:41 +01:00
mazgch be8bca4aa0 proposed change of gpio_api 2014-03-04 11:27:30 +01:00
Emilio Monti 6d79406112 Merge pull request #196 from toyowata/master
Added LPC11U35_501 target support
2014-03-04 10:20:01 +00:00
Toyomasa Watarai 7216c36d0f Added LPC11U35_501 target support
Tested with CQ's LPC11U35/501 target board
2014-03-04 17:57:33 +09:00
Emilio Monti 8431561fc7 Merge pull request #194 from Sissors/master
LPC1768 writeable fix + KL25Z/KL46Z RTC pin function
2014-03-03 11:05:07 +00:00
mazgch ca1d76687b adding back tx fifo, this also fixes the tx interrupts 2014-03-03 12:00:32 +01:00
Sissors 56ce1e7290 Fixed LPC1768 writable
Now if no flow control is used it will check if holding register is
empty, instead of complete UART is empty: The TxIrq uses the same
requirement.
Currently BufferedSerial (and everyone else trying something similar)
goes haywire because it doesn't just check if writable, but also if done
writing.

If flow control is enabled nothing is changed.
2014-03-01 16:58:01 +01:00
Sissors baa4003b95 Revert "Fixed writable for LPC1768"
This reverts commit 19ae097c62.
2014-03-01 16:46:48 +01:00
Sissors 19ae097c62 Fixed writable for LPC1768
Bit 6 (0x40) is true if the peripheral is completely empty.
Bit 5 (0x20) is true if the transmit hold register is empty, which is
sufficient for it to be writable.

The TxIrq uses the same requirement, so now it works together and
BufferedSerial doesn't go haywire on LPC1768
2014-03-01 16:38:03 +01:00
Yihui Xiong 891b63a14e add D0-D13 and A0-A5 for Arch V1.1 and Arch Pro 2014-02-26 21:15:06 +08:00
sg- 5a64111465 Merge branch 'nxp_merge'
Conflicts:
	workspace_tools/export/uvision4.py
2014-02-20 16:30:38 -06:00
Toyomasa Watarai ca527e4dd9 Corrected wrong pin names 2014-02-19 19:25:20 +09:00
Emilio Monti a2a5490f5d Merge pull request #171 from Sissors/master
Fixed LPC1114 InterruptIn for Port1 (and higher)
2014-02-18 10:19:35 +00:00
Sissors 8da53457ab Fixed LPC1114 InterruptIn for Port1 (and higher)
Channel was only calculated using bits set, port number was ignored.
2014-02-18 07:58:25 +01:00
Toyomasa Watarai 01cfe17b3d [LPC1549] Added InterruptIn support 2014-02-16 22:38:09 +09:00
ytsuboi a2f2f44258 [LPC1549] Added I2C master support 2014-02-15 18:23:06 +09:00
Toyomasa Watarai 95f4057499 [LPC1549] Added AnalogIn support 2014-02-15 15:18:35 +09:00
Toyomasa Watarai e2a47d9daa [LPC1549] Corrected wrong pin name 2014-02-14 19:14:05 +09:00
Toyomasa Watarai 5fbea95fe2 [LPC1549] Added Arduino Shield Receptacles Names 2014-02-14 16:18:48 +09:00
Toyomasa Watarai 1c2e2ce572 [LPC1549] Fixed us_ticker problem 2014-02-13 17:00:25 +09:00
Toyomasa Watarai 07706f0821 [LPC1549] Added SPI support 2014-02-13 16:52:38 +09:00
ytsuboi 78d4c7345b [LPC1549] Added UART support 2014-02-12 23:43:27 +09:00
Toyomasa Watarai 741bfc22b1 [LPC1549] Fixed GPIO
Clean-up PinNames.h and GPIOrelated functions.
2014-02-11 23:18:59 +09:00
ytsuboi e06e842221 [LPC1549] initial commit 2014-02-11 15:54:38 +09:00
Bogdan Marinescu 2665d5bac4 Modified call-before-main mechanism
Added a new function (mbed_sdk_init) that can be used by the SDK itself to
do initializations before main() is called.
2014-01-31 11:58:18 +02:00
Bogdan Marinescu 2a782f5067 Merge pull request #149 from cobrid/master
Remove unnecessary semicolons.
2014-01-31 00:55:41 -08:00
Bogdan Marinescu 6c4dc5cd33 Merge pull request #155 from sg-/c027_lpc1768_refactor
Forgot to add this file...
2014-01-31 00:54:56 -08:00
sg- 1db40f89a7 Forgot to add this file... 2014-01-30 09:55:50 -06:00
Bogdan Marinescu 6e82b54538 Merge branch 'c027_lpc1768_refactor' of git://github.com/sg-/mbed into sg--c027_lpc1768_refactor
Conflicts:
	workspace_tools/export/uvision4.py
2014-01-30 11:31:56 +02:00
sg- 28f0cf71b3 Update to macro test in board.c, remove C027.cpp(h), set default IO in mbed_main and fixed copy paste error in MBED_LPC1768 reserved_pins.h 2014-01-29 22:33:41 -06:00
sg- f1fa9a0c25 Added support for C027. Small re-factor to LPC1768 to accommodate this. 2014-01-28 20:44:32 -06:00
Chiel de Roest 8b3cdc0067 Remove unnecessary semicolons.
Remove unnecessary colon that was placed in all SPI drivers for NXP
targets.
2014-01-24 22:49:09 +01:00
neilt6 8e346fc498 Fixed sleep and disabled semihosting on LPC11U35
I created 3 separate device.h headers for the three LPC11UXX targets,
and disabled the features that the LPC11U35 board doesn't have like
Semihosting and LocalFileSystem. I also made the call to
mbed_interface_disconnect() require DEVICE_SEMIHOSTING, which prevents
calls to sleep() from hanging the system on an LPC11U35.
2014-01-24 10:51:48 -07:00
ytsuboi 4fbf286ee3 [LPC812] change ssp_busy() to check RXOV 2013-12-31 20:24:46 +09:00
ytsuboi 0a11767877 [LPC812] enable SPISlave 2013-12-29 19:18:50 +09:00
Bogdan Marinescu 34a43eaa41 Merge branch 'flow_control'
Conflicts:
	workspace_tools/tests.py
2013-12-19 11:36:45 +02:00
Bogdan Marinescu bb8ed20a47 LPC1768 flow control fixes
- Disable TX buffer, this isn't compatible with the software CTS implementation
- Properly set hardware RTS/CTS pins when possible
- Modified test to use hardware CTS and software RTS
2013-12-19 11:31:23 +02:00
Yihui Xiong 6501b16213 Merge remote-tracking branch 'upstream/master' 2013-12-19 12:38:04 +08:00
Yihui Xiong a3465b5eac fix 16bit timer pwm output 2013-12-19 12:31:31 +08:00
Bogdan Marinescu 1ae5a1d340 Added pin definitions for LPC11U35 quick stard board 2013-12-13 13:35:19 +02:00
Bogdan Marinescu c3d4d3079f Added DEVICE_SERIAL_FC as an indicator for the flow control implementation 2013-12-11 10:26:18 +02:00
Bogdan Marinescu 53cd64775d Hardware flow control implementation for LPC81X 2013-12-05 17:33:16 +02:00
Bogdan Marinescu 2ac6c4c531 Fixed RTS/CTS bit-banging on LPC1768 2013-12-04 19:46:12 +02:00
Bogdan Marinescu fbeb52d613 Added RTS/CTS flow control
Currently implemented only for LPC1768. On this platform, when hardware
flow control is not directly supported, it will be emulated.
Also added "not_implemented.c" as a placeholder for various HAL functions
that might not be implemented on all platforms (in this particular case,
serial_set_flow_control). These are weak implementations that default to a
"not implemented" error message.
2013-12-04 19:42:11 +02:00
Michael Moon a249e39826 Improved baudrate calculation function.
Uses 100% integer math, delivers more accurate results with fewer iterations in less time.

Since it seems most of the NXP chips use identical math, I have also altered the other targets in this commit.

If there are non-NXP chips which use a similar serial block, consider porting to those as well

Comparison:

         BAUD   DL MUL DIV  CPU_CLOCK
      -------  --- --- --- ----------
new: {   9600, 625,  1,  0,  96000000},	// Actual baud:    9600, error =0.00%,    1 iterations
old: {   9600, 625,  1,  0,  96000000},	// Actual baud:    9600, error =0.00%,    0 iterations

new: {  38400, 125,  4,  1,  96000000},	// Actual baud:   38400, error =0.00%,    8 iterations
old: {  38400,  81, 14, 13,  96000000},	// Actual baud:   38409, error +0.02%,  420 iterations

new: {  57600,  81,  7,  2,  96000000},	// Actual baud:   57613, error +0.02%,  120 iterations
old: {  57600,  54, 14, 13,  96000000},	// Actual baud:   57613, error +0.02%,  315 iterations

new: { 115200,  27, 14, 13,  96000000},	// Actual baud:  115226, error +0.02%,  120 iterations
old: { 115200,  27, 14, 13,  96000000},	// Actual baud:  115226, error +0.02%,  210 iterations

new: { 230400,  23, 15,  2,  96000000},	// Actual baud:  230179, error -0.10%,  120 iterations
old: { 230400,  17, 15,  8,  96000000},	// Actual baud:  230179, error -0.10%,  525 iterations

new: { 250000,  24,  1,  0,  96000000},	// Actual baud:  250000, error =0.00%,    1 iterations
old: { 250000,  24,  1,  0,  96000000},	// Actual baud:  250000, error =0.00%,    0 iterations

new: {1000000,   6,  1,  0,  96000000},	// Actual baud: 1000000, error =0.00%,    1 iterations
old: {1000000,   6,  1,  0,  96000000},	// Actual baud: 1000000, error =0.00%,    0 iterations

new: {2000000,   3,  1,  0,  96000000},	// Actual baud: 2000000, error =0.00%,    1 iterations
old: {2000000,   3,  1,  0,  96000000},	// Actual baud: 2000000, error =0.00%,    0 iterations

new: {   9600, 514, 15,  4, 100000000},	// Actual baud:    9600, error =0.00%,  110 iterations
old: {   9600, 337, 15, 14, 100000000},	// Actual baud:    9593, error -0.07%, 1365 iterations

new: {  38400,  93,  4,  3, 100000000},	// Actual baud:   38402, error +0.01%,  120 iterations
old: {  38400,  85, 12, 11, 100000000},	// Actual baud:   38363, error -0.10%,  525 iterations

new: {  57600,  62,  4,  3, 100000000},	// Actual baud:   57604, error +0.01%,  120 iterations
old: {  57600,  61,  9,  7, 100000000},	// Actual baud:   57633, error +0.06%,  840 iterations

new: { 115200,  31,  4,  3, 100000000},	// Actual baud:  115207, error +0.01%,  120 iterations
old: { 115200,  31,  4,  3, 100000000},	// Actual baud:  115207, error +0.01%,  525 iterations

new: { 230400,  19,  7,  3, 100000000},	// Actual baud:  230263, error -0.06%,  120 iterations
old: { 230400,  19,  7,  3, 100000000},	// Actual baud:  230263, error -0.06%,  735 iterations

new: { 250000,  25,  1,  0, 100000000},	// Actual baud:  250000, error =0.00%,    1 iterations
old: { 250000,  25,  1,  0, 100000000},	// Actual baud:  250000, error =0.00%,    0 iterations

new: {1000000,   5,  4,  1, 100000000},	// Actual baud: 1000000, error =0.00%,    8 iterations
old: {1000000,   5,  4,  1, 100000000},	// Actual baud: 1000000, error =0.00%,  315 iterations

new: {2000000,   2,  9,  5, 100000000},	// Actual baud: 2008929, error +0.45%,  120 iterations
old: {2000000,   2,  9,  5, 100000000},	// Actual baud: 2008929, error +0.45%,  315 iterations

new: {   9600, 625,  4,  1, 120000000},	// Actual baud:    9600, error =0.00%,    8 iterations
old: {   9600, 404, 15, 14, 120000000},	// Actual baud:    9602, error +0.02%, 1575 iterations

new: {  38400, 179, 11,  1, 120000000},	// Actual baud:   38408, error +0.02%,  120 iterations
old: {  38400, 101, 15, 14, 120000000},	// Actual baud:   38409, error +0.02%,  525 iterations

new: {  57600,  93,  5,  2, 120000000},	// Actual baud:   57604, error +0.01%,  120 iterations
old: {  57600,  68, 12, 11, 120000000},	// Actual baud:   57545, error -0.10%,  420 iterations

new: { 115200,  47, 13,  5, 120000000},	// Actual baud:  115248, error +0.04%,  120 iterations
old: { 115200,  34, 12, 11, 120000000},	// Actual baud:  115090, error -0.10%,  315 iterations

new: { 230400,  19,  7,  5, 120000000},	// Actual baud:  230263, error -0.06%,  120 iterations
old: { 230400,  17, 12, 11, 120000000},	// Actual baud:  230179, error -0.10%,  210 iterations

new: { 250000,  30,  1,  0, 120000000},	// Actual baud:  250000, error =0.00%,    1 iterations
old: { 250000,  30,  1,  0, 120000000},	// Actual baud:  250000, error =0.00%,    0 iterations

new: {1000000,   5,  2,  1, 120000000},	// Actual baud: 1000000, error =0.00%,    3 iterations
old: {1000000,   4,  8,  7, 120000000},	// Actual baud: 1000000, error =0.00%,  210 iterations

new: {2000000,   3,  4,  1, 120000000},	// Actual baud: 2000000, error =0.00%,    8 iterations
old: {2000000,   2,  8,  7, 120000000},	// Actual baud: 2000000, error =0.00%,  210 iterations
2013-11-29 02:44:14 +11:00
Bogdan Marinescu 256f70fffc Merge remote-tracking branch 'origin/master' 2013-11-26 17:14:46 +02:00
Bogdan Marinescu 3c0a8b633f Provide generic pinout defines
This commit adds generic peripheral names to various mbed enabled
boards, to make it easier to write portable code amongst various
mbed boards.
2013-11-26 17:12:36 +02:00
Sissors 585e05ca6a Added sleep to LPC81x
http://mbed.org/users/mbed_official/code/mbed-src/pull-request/6
2013-11-21 08:19:44 +01:00
Bogdan Marinescu 5b6faea448 Removed redundant label TARGET_LPC81X_COMMON 2013-11-11 13:28:18 +02:00
Joris Aerts 76ffc4935e Fix bug in gpio_set not setting reserved pins correctly
Loop going over reserved pins was not going over all entries as result of incorrect sizeof
2013-11-08 13:39:00 -08:00
Emilio Monti 317a1f66d2 Merge pull request #91 from jorisa/master
Add CAN api filter support and LPC11CXX CAN implementation
2013-10-25 06:58:05 -07:00
Adam Green 969733ae8f serial_putc() to make better use of Tx FIFO
If don't know if this is an issue that anyone cares about.  I am also
not sure what the best way to solve it is either.  I just thought I
would issue a pull request with this commit to bring the issue to light
and show a possible solution that I have tested on my mbed-1768 device.

Previously the serial_putc() API didn't make any use of the Tx FIFO
since the serial_writable() API it utilizes only returns true when the
FIFO is completely empty.  This is due to the fact that the THRE bit of
the UART's LSR (Line Status Register) only goes high when the whole
FIFO is empty.

I noticed this when doing some performance testing with the network
stack.  I went from calling printf() to output 3 bytes every 10 seconds
(with packet drop stats) to instead output 4 bytes every 10 seconds.
I thought these should easily fit in the 16 byte FIFO but outputting
one extra byte caused an additional three 550 byte UDP packets to be
dropped.  This should only happen if the additional character being
sent to the UART was taking away extra CPU cycles from the network
stack.

My solution is to keep track of the number of bytes that have been
placed in the Tx FIFO since it was last detected as being completely
empty (via the THRE bit).  Only once this count hits 16 does the code
then block, waiting for the THRE bit to go high.  Each time the THRE
bit does go high, the count is reset to 0 again and it is incremented
for each byte that is loaded into the THR.
2013-10-25 15:17:06 +03:00
Bogdan Marinescu 544ac9e728 Disable DEVICE_STDIO_MESSAGES for LPC81X
Because the LPC81X HAL implementation calls error(), which in turn calls
fprintf(), quite a bit of code is added to the image, which is not a good
idea on such resource constrained targets.
2013-10-25 14:51:01 +03:00
Joris Aerts 739f2a6375 Add can_api hal implementation to LPC11CXX target
Most of the functionality works, interrupts might need a little more work.
2013-10-22 11:02:10 -07:00
Joris Aerts 067e446ae2 Add CAN->filter to API and add placeholders to hal's
Add filter function and modify CAN->read definition to allow reading specific messages.
2013-10-22 10:57:28 -07:00
0xc0170 b0537af763 gpio irq enable/disable
- InterruptIn disable_irq/enable_irq
2013-10-19 22:28:29 +02:00
Andreas Rebert a0a6cbe1d3 Merge branch 'master' into lpc4088 2013-10-11 14:02:59 +02:00
Andreas Rebert a574fd73b3 Bugfixes for I2C and port impl 2013-10-11 14:01:49 +02:00
Joris Aerts 7ed6acb08a Move pwmout_api.c/PeripheralNames.h to LPC11XX_11CXX common
Because CT32B1 (P1_1, P1_2 and P1_3) is used by us_ticker.c for wait and ticker function. Since wait/ticker is commonly used by mbed code and I decided CT32B1 of LPC11XX should only be used for this function, not for PwmOut.
P1_6 and P1_7 are used by UART (USBTX/USBRX) and I think they should not be assigned to other function.
2013-09-30 08:11:56 -07:00
Joris Aerts 4d0c864b16 Move adc_pinmap.h to LPC11XX_11CXX common
Merge back into analog_api.c. P1_3/ADC0_4 (SWDIO) now disabled for both targets
2013-09-30 08:07:26 -07:00
Joris Aerts e1967755a5 Move spi_pinmap.h to LPC11XX_11CXX common
Merge back into spi_api.c. P0_10/SPI_0 (SWCLK) now disabled for both targets
2013-09-27 19:10:08 -07:00
Joris Aerts e9f5c8d3ca Move README.md to LPC11XX_11CXX common 2013-09-27 18:56:11 -07:00
Joris Aerts 3fe31ad50e Move objects.h to LPC11XX_11CXX common
Use #if DEVICE_CAN for can_s definition
2013-09-27 18:53:19 -07:00
Bogdan Marinescu 8f57c1e847 Merge remote-tracking branch 'github/master' 2013-09-25 10:27:17 +01:00
Bogdan Marinescu 30907d7772 Refactor LPC1114 and LPC11C24 code
Since most of the code for LPC1114 and LPC11C24 is similar, refactor the
code structure to avoid duplication of the common code.
2013-09-25 10:17:19 +01:00
Andreas Rebert bb35d16521 Merged bugfixes and improvments for LPC1768 target to LPC4088 target 2013-09-23 11:39:52 +02:00
Emilio Monti 38ed9eb6a0 Merge pull request #72 from jorisa/master
Split uVision project source files in groups mbed/hal/src
2013-09-19 01:46:53 -07:00
Bogdan Marinescu 81b372d362 Merge pull request #73 from ytsuboi/master
Fixed LPC1114 ADC offset problem
2013-09-19 01:35:42 -07:00
Toyomasa Watarai 866858a816 Fixed LPC1114 ADC offset problem 2013-09-19 16:19:04 +09:00
Toyomasa Watarai f4bfe5aedb Revert "Fixed ADC offset problem"
This reverts commit 399acd1d6f.
2013-09-19 16:16:52 +09:00
Toyomasa Watarai 399acd1d6f Fixed ADC offset problem 2013-09-19 16:16:05 +09:00
Joris Aerts 979bba6864 Don't call mbed_interface_disconnect when DEVICE_SEMIHOST is disabled 2013-09-18 14:10:29 -07:00
Emilio Monti 96ea3db1b3 Merge pull request #66 from dinau/lpc2368_mod
LPC2368 mod
2013-09-16 08:00:20 -07:00
dinau efbc52465d LPC2368 [GCC_ARM]: Silence some warnings. 2013-09-13 22:01:21 +09:00
Emilio Monti 2481fbe2a2 Merge pull request #62 from arebert/lpc4088
LPC4088: PIN mode fix, export to external tools and MAC address retrieval
2013-09-13 05:59:14 -07:00
Erik Olieman 94ff741989 LPC1768 InterruptIn speedup
Use __CLZ to speed up GPIO interrupt processing.
2013-09-11 18:46:18 +03:00
Bogdan Marinescu 171dda705c Merge pull request #63 from jorisa/master
Fix hardfault when attaching callback to CAN2 when CAN1 is not defined
2013-09-10 03:22:55 -07:00
Joris Aerts efd3d8d8e0 Fix hardfault when attaching callback to CAN2 when CAN1 is not defined
Fault is triggered by trying to read LPC_CAN1->IER when the peripheral is powered off. Fixed by checking the power control register before checking the IER register.
2013-09-09 09:06:04 -07:00
Bogdan Marinescu cfa6a1d912 Merge pull request #61 from ytsuboi/master
Fixed problem in PWMOUT mapping table
2013-09-09 08:22:11 -07:00
Andreas Rebert 00cfdbad2a Merge remote-tracking branch 'upstream/master' into lpc4088 2013-09-09 14:13:08 +02:00
unknown 0e36bdd457 Bugfix: PIN Modes was not set correctly
Added: Export to uVision and Code Red toolchains
2013-09-09 14:10:11 +02:00
Bogdan Marinescu 1f243a900c Merge remote-tracking branch 'github/master' 2013-09-09 12:31:42 +03:00
Bogdan Marinescu fded46b459 [LPC1768] Fix serial_clear
serial_clear() erroneously disabled the UART FIFOs.
Reported by Adam Green.
2013-09-09 12:28:11 +03:00
Toyomasa Watarai d0d2df3ce5 Fixed problem in PWMOUT mapping table
Fixed problem in PWMOUT output issue.
Startup code cean-up (correced exception names).
Corrected test cases.
2013-09-09 18:15:51 +09:00
Bogdan Marinescu d51411294f Merge pull request #57 from adamgreen/serialTxDropsRx
serial_putc() can cause rx bytes to be dropped
2013-09-09 01:19:29 -07:00
Joris Aerts 743e178455 Fix MASKED_ACCESS bug in gpio_init, now same as LPC11xx (Also use PIN_SHIFT instead of magic number 8 in gpio_set) 2013-09-08 18:57:40 -07:00
Adam Green 5d27f98c7b serial_putc() can cause rx bytes to be dropped
While fixing this issue in the various LPC* ports, I noticed a comment
pointing to this mbed forum post which summarizes this bug quite well:
  https://mbed.org/forum/bugs-suggestions/topic/4473/

This bug was introduced in the following commit:
2662e105c4

The following code was added to serial_putc() as part of this commit:
    uint32_t lsr = obj->uart->LSR;
    lsr = lsr;
    uint32_t thr = obj->uart->THR;
    thr = thr;

As the forum post indicates, this causes the serial_putc() routine to
actually eat an inbound received byte if it exists since reading THR is
really reading the RBR, the Receiver Buffer Register.  This code looks
like code that was probably added so that the developer could take a
snapshot of these registers and look at them in the debugger.  It
probably got committed in error.
2013-09-07 00:44:44 -07:00
Bogdan Marinescu 95f6826196 Refactor code for LPC810/LPC812
There were lots of overlaps in the code for LPC810 and LPC812, including
duplicated source files. This commit adds a TARGET_LPC81X_COMMON folder in
both HAL and CMSIS, this folder keeps common code for the targets.
2013-09-05 19:00:19 +03:00
ytsuboi 8dd6bdb701 [LPC810] add LPC810 support 2013-08-24 15:49:16 +09:00
Toyomasa Watarai 1ff64de847 Fixed gpio_irq_api bugs
Corrected improper implementation of channel_ids[] usage.
Revemod redundant arrays e.g. pin_names[] and trigger_events[]
2013-08-21 16:46:03 +09:00
Toyomasa Watarai 10e30b5cfb Fixed error handling and cleanup 2013-08-21 10:46:37 +09:00
Toyomasa Watarai 1d1c8c6391 Removed SWCLK and SWDIO pins from pinmap 2013-08-16 00:17:52 +09:00
Toyomasa Watarai 9f2a930f31 Fixed GPIO read operation 2013-08-14 22:43:03 +09:00
Toyomasa Watarai b632d8db46 Removed redundant code in serial_api 2013-08-14 22:29:31 +09:00
Toyomasa Watarai 83e065d1bc Fixed missing mask register setting for I2C 2013-08-14 22:28:30 +09:00
Adam Green cc56997a70 Cast to matching enumeration type instead of uint32_t
This commit targets the LPC11U24 code, whereas a previous one
targetted similar issues in the LPC1768 mbed HAL code.

These changes were made to silence GCC warnings and fix potential bugs
where they would never be equal when the enumeration wasn't a 32-bit
type.

For example, pinmap.c used to contain this code:
    if (pin == (uint32_t)NC) return;
I switched it to:
    if (pin == (PinName)NC) return;

I wonder why this casting to uint32_t was done in the first place?
Maybe another supported compiler requires it?
2013-08-13 01:47:19 -07:00
Adam Green 8fe7276b98 Silence signed/unsigned comparison warnings in GCC.
Why do the wait APIs take a signed integer if they are going to be
compared to unsigned quantities?
2013-08-13 01:47:19 -07:00
Adam Green c411823656 Fix operator precedence warning in can_api.c
The original code was:
    if(LPC_CAN1->IER | LPC_CAN2->IER != 0) {

This would actually be interpreted as:
    if(LPC_CAN1->IER | (LPC_CAN2->IER != 0)) {
I simplified it to:
    if(LPC_CAN1->IER | LPC_CAN2->IER) {
With the comparison removed, the GCC warning no longer fires since the
user's intent is no longer unclear.  However, the end result should be
the same.
2013-08-13 01:47:19 -07:00
Adam Green 15f833bc1b Cast to matching enumeration type instead of uint32_t
These were done to silence GCC warnings and fix potential bugs where
they would never be equal when the enumeration wasn't a 32-bit type.

For example, common/pinmap_common.c used to contain this code:
    if (pin == (uint32_t)NC)
I switched it to:
    if (pin == (PinName)NC)

I wonder why this casting to uint32_t was done in the first place?
Maybe another supported compiler requires it?
2013-08-13 01:47:19 -07:00
Andreas Rebert 75dba19438 Updated pin mapping and CAN HAL for LPC4088 target 2013-08-08 13:57:02 +02:00
Matthew Else e1eb357c53 Added changes to PWM API from LPC1114 to LPC11C24 2013-08-07 09:45:47 +01:00
Matthew Else b437a3ca22 Removed can_api.c from TARGET_LPC11CXX, as it's not ready for pull request yet. 2013-08-07 09:43:28 +01:00
Toyomasa Watarai 0c0b51f663 Fixed pwm_api bug
Corrected pwm_timer_map table for LPC1114
2013-08-07 16:24:58 +09:00
Matthew Else 548d18ebd7 Pull in changes to the main mbed code base. 2013-08-06 20:04:32 +01:00
Matthew Else d29ebefbd9 Begin to add can_api.c to LPC11C24 codebase. Not complete yet, which is why it's #if 0ed out. Lots of build errors come up if #if0 isn't there, which is why it is for now. 2013-08-06 17:41:31 +01:00
Emilio Monti e42786649f The LPC1347 board does not have an interface chip 2013-08-06 16:36:03 +01:00
Matthew Else 45470aba31 Updated READMEs 2013-08-06 15:09:41 +01:00
Matthew Else bf02700a32 Merge https://github.com/jorisa/mbed 2013-08-06 09:43:52 +01:00
Joris Aerts c747e2533f Rename some argument and enum names to match existing naming
Add CAN->mode(Mode mode) function (not implemented in hal)
2013-08-05 17:28:27 -07:00
Matthew Else ef28879863 Merged remote tracking branch 'upstream/master' 2013-08-05 17:22:01 +01:00
Matthew Else 2c45596673 Merge https://github.com/jorisa/mbed 2013-08-05 17:11:58 +01:00
Matthew Else 7c8c7228c8 Pushed LPC1114 I2C updates to the LPC11C24 2013-08-05 17:09:22 +01:00
matthewelse 7827d62504 Added alternative DIP package names for pins in the LPC1114
Added this so it is consistent with the notebook page.
2013-08-02 10:38:05 +01:00
Joris Aerts f685efa9b2 Merge remote-tracking branch 'upstream/master' 2013-08-01 17:24:20 -07:00
Matthew Else d899612525 Merge branch 'forpullrequest' 2013-08-01 16:25:28 +01:00
Matthew Else 0f7ece02a8 Fixed I2C API 2013-08-01 16:23:13 +01:00
Matthew Else df5c36a9ae Uncommented i2c_wait_SI(obj), as it should not have been commented out. 2013-08-01 16:04:18 +01:00
Matthew Else dc68b76d0f Added timeout for i2c_stop in LPC1114 target. 2013-08-01 15:46:05 +01:00
Joris Aerts a16dc72272 Add @param documentation for new event parameter
Add clear irq to attach() template function
Call irq_handler for every interrupt set
2013-07-31 10:45:28 -07:00
Joris Aerts 63b2b271d1 Refactor CAN interrupt handling to LPC176X HAL implementation
Add handlers for other CAN interrupt events
Changed CAN private entities to protected
2013-07-31 07:26:32 -07:00
Joris Aerts 8ef8aac36e Merge remote-tracking branch 'upstream/master' 2013-07-30 19:16:34 -07:00
Joris Aerts 51bfe267f4 Add can_t->index to struct and set it during can_init 2013-07-30 15:17:40 -07:00
matthewelse 429d2e61eb Enabled CAN for LPC11CXX in device.h 2013-07-29 10:59:18 +01:00
Matthew Else 200b263dcd Added basic stuff necessary to compile for LPC11C24 target. 2013-07-27 18:12:35 +01:00
Matthew Else 153153f261 Added serial_break_clear/serial_break_set
Fixes #24
2013-07-26 11:44:09 +01:00
Matthew Else 3172fd97ca Fix both edge bug in gpio_irq_api.c
Fixes #22
2013-07-26 09:41:20 +01:00
Matthew Else a356553c7d Fixed incorrect use of static in port_api.c
This was causing errors when compiling in GCC_ARM
2013-07-25 16:01:45 +01:00
Matthew Else c3ebd47071 Tidying up gpio_irq_api.c 2013-07-25 10:43:49 +01:00
Matthew Else a7ba27618d Fixed bug in gpio_irq_api
Test interruptin now works. Fixes #16
2013-07-25 10:26:46 +01:00
Matthew Else df067bd4e9 Complete support for GPIO interrupts. 2013-07-24 16:02:01 +01:00
Matthew Else 3d08be9700 Attempt to fix the interrupts problem. 2013-07-24 11:00:07 +01:00
Toyomasa Watarai a125a25a97 Implemented PortIn, PortOut and PortInOut API #8
Followingt test cases have been passed:
* PortOut (#24)
* PortOut PortIn (#9)
* PortInOut (#8)
2013-07-24 18:37:12 +09:00
matthewelse d67d4f7fc1 Create README.md 2013-07-23 15:54:13 +01:00
Matthew Else 55f91f1da8 Fixed errors in gpio_irq_api.c 2013-07-23 15:44:24 +01:00
Matthew Else c56d1a5236 Fully implemented GPIO_IRQ
* Removed unused variables/comments.
* As of yet, untested...
2013-07-23 15:35:38 +01:00
Matthew Else 819ca5547c Removed extraneous comment from the function 2013-07-23 14:21:40 +01:00
Matthew Else 8011992021 Fully implemented gpio_irq_set 2013-07-23 14:19:33 +01:00
Matthew Else fea818fccb Updates to interrupt handling 2013-07-22 13:56:56 +01:00
Matthew Else 1da8e8a2c7 Started to implement gpio_irq_set 2013-07-22 13:30:00 +01:00
Matthew Else 4cf6f09411 Enabled the interrupts api to compile 2013-07-22 12:46:46 +01:00
Toyomasa Watarai 2a989551aa Fixed gpio_api
Corrected base address of GPIO port register
2013-07-22 18:53:45 +09:00
Matthew Else 1097af7091 Added DIP package pins to PinNames.h 2013-07-22 09:30:47 +01:00
ytsuboi ca31bda530 Removed printf debug lines 2013-07-22 14:55:19 +09:00
Toyomasa Watarai 794ab9cbd3 Fixed #9 and test ticker test code
Clean-up GPIO stuff, but it shoud be same behavior as before.
2013-07-21 23:04:46 +09:00
Matthew Else 84a76cd8d8 Added a load of debug lines
Basically this outputs a load of stuff to the serial port. I'm just
using this to get an idea of where the error lies within the code...
2013-07-19 16:56:49 +01:00
Matthew Else 66ca1c9db2 Refactored bits of gpio_api.c
In between the last two commits, I added debugging lines using serial to
try and locate the line of code that was causing the issues with GPIO.
However, didn't get anywhere with this because the gpio_write function
is defined in a header file, rather than in an implementation file, so
the printf function can't go there. As a result, it's just refactoring.
2013-07-19 15:23:25 +01:00
Matthew Else a9bb4aa5cb Lots of changes, fixing build bugs and renaming
Files renamed to fit with the new style folder structure
2013-07-19 13:59:50 +01:00