diff --git a/libraries/mbed/common/board.c b/libraries/mbed/common/board.c index d346b9ca74..2ba3c0aa40 100644 --- a/libraries/mbed/common/board.c +++ b/libraries/mbed/common/board.c @@ -19,7 +19,9 @@ WEAK void mbed_die(void); WEAK void mbed_die(void) { -#if defined(DEVICE_ERROR_RED) + __disable_irq(); // dont allow interrupts to disturb the flash pattern + +#if (DEVICE_ERROR_RED == 1) gpio_t led_red; gpio_init(&led_red, LED_RED, PIN_OUTPUT); #elif (DEVICE_ERROR_PATTERN == 1) @@ -30,18 +32,19 @@ WEAK void mbed_die(void) { #endif while (1) { -#if defined(DEVICE_ERROR_RED) +#if (DEVICE_ERROR_RED == 1) gpio_write(&led_red, 1); -#elif (DEVICE_ERROR_PATTERN == 1) +#elif (DEVICE_ERROR_PATTERN == 1) gpio_write(&led_1, 1); gpio_write(&led_2, 0); gpio_write(&led_3, 0); gpio_write(&led_4, 1); #endif + wait_ms(150); -#if defined(DEVICE_ERROR_RED) +#if (DEVICE_ERROR_RED == 1) gpio_write(&led_red, 0); #elif (DEVICE_ERROR_PATTERN == 1) @@ -50,6 +53,7 @@ WEAK void mbed_die(void) { gpio_write(&led_3, 1); gpio_write(&led_4, 0); #endif + wait_ms(150); } } diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/TARGET_MBED_LPC1768/reserved_pins.h b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/TARGET_MBED_LPC1768/reserved_pins.h index f33637f557..b392cd2f21 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/TARGET_MBED_LPC1768/reserved_pins.h +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/TARGET_MBED_LPC1768/reserved_pins.h @@ -1,8 +1,8 @@ -// List of reserved pins for LPC1114 +// List of reserved pins for MBED LPC1768 #ifndef RESERVED_PINS_H #define RESERVED_PINS_H -#define TARGET_RESERVED_PINS {P0_0, P0_11, P1_0, P1_1, P1_2} +#define TARGET_RESERVED_PINS {} #endif diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/TARGET_UBLOX_C027/C027.cpp b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/TARGET_UBLOX_C027/C027.cpp deleted file mode 100644 index 623396e4cf..0000000000 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/TARGET_UBLOX_C027/C027.cpp +++ /dev/null @@ -1,189 +0,0 @@ -#include "C027.h" - -void mbed_die(void) -{ - DigitalOut led(LED); - led = 0; - // Send SOS in Morse Code: // "... --- ... " - const char sos[] = "=.=.=...===.===.===...=.=.=......"; - const int dot = 100; // length of the dot in milliseconds (typical: 50-100 ms) - // lengths of symbols: - // di = dot - // dah = 3 dot - // char space = 3 dot - // word space = 6 dot - for (int i = 0; /* nothing */; i = sos[i+1] ? i+1 : 0) - { - led = (sos[i] == '='); - wait_ms(dot); - } -} - -C027::C027() : - mdmEn(MDMEN), mdmRst(MDMRST), mdmPwrOn(MDMPWRON), // MDM CTRL - mdmLvlOe(MDMLVLOE), mdmILvlOe(MDMILVLOE), mdmUsbDet(MDMUSBDET), // MDM IF - gpsEn(GPSEN), gpsRst(GPSRST) // GPS CTRL -{ - DigitalOut led(LED); - DigitalOut mdmRts(MDMRTS); - led = 0; // LED1: 0=off - mdmRts = 0; // RTS: 0=ready to send - // we start with the gps disabled - gpsEn = 0; // LDOEN: 1=on,0=off - gpsRst = 0; // RESET: 0=reset,1=operating - gpsIsEnabled = false; - // we start with the modem disabled - mdmLvlOe = 1; // LVLEN: 1=disabled (uart/gpio) - mdmILvlOe = 0; // ILVLEN: 0=disabled (i2c) - mdmUsbDet = 0; // USBDET: 0=disabled - mdmPwrOn = 1; // PWRON: 1=idle, 0=action - mdmEn = 0; // LDOEN: 1=on, 0=off - mdmRst = 0; // RESET: 0=reset, 1=operating - mdmIsEnabled = false; - mdmUseUsb = false; - wait_ms(50); // when USB cable is inserted the interface chip issues - // multiple resets to the target CPU We wait here for a short period to - // prevent those resets from propagating to the modem and other - // components. -} - -void C027::mdmPower(bool enable) -{ - if (!mdmIsEnabled && enable) // enable modem - { -#ifdef C027_REVA - // we need the gps ldo for the level shifters of the modem - gpsEn = 1; // LDOEN(gps): 0=off -> 1=on -#endif - mdmPwrOn = 0; // PWRON: 0=turn on - mdmEn = 0; // LDOEN: 0=off - mdmRst = 0; // RESET: 0=reset - mdmLvlOe = 1; // LVLEN: 1=disabled - mdmILvlOe = 0; // ILVLEN: 0=disabled - mdmUsbDet = mdmUseUsb ? 1 : 0; // USBDET: 0=disabled, 1=enabled - wait_ms( 10); // wait until supply switched off - mdmEn = 1; // LDOEN: 0=off -> 1=on - wait_ms( 10); // wait until supply stable and on - wait_ms(300); // power on sequence is triggered by keeping reset 50ms-300ms low - mdmRst = 1; // RESET: 0=reset -> 1=operating - wait_ms(150); // LISA-C requires 150ms low to turn on - mdmPwrOn = 1; // PWRON: 0=turn on -> 1=idle - mdmIsEnabled = true; - // the interfaces of the modem should be fully ready after a certain period - // LISA-U200 5000ms - // SARA-G350 3000ms - // LISA-C200 - wait_ms(1000); - mdmLvlOe = 0; // LVLEN: 0=enabled (uart/gpio) - if (gpsIsEnabled) - mdmILvlOe = 1; // ILVLEN: 1=enabled (i2c) - } - else if (mdmIsEnabled && !enable) // disable modem - { - mdmIsEnabled = false; - // initiate power off sequence by setting PwnOn low for >1s - mdmILvlOe = 0; // ILVLEN: 0=disabled (i2c) - mdmLvlOe = 1; // LVLEN: 1=disabled (uart/gpio) - mdmUsbDet = 0; // USBDET: 0=disabled - mdmPwrOn = 0; // PWRON: 0=active - wait_ms(1000); // send to sleep - mdmPwrOn = 1; // PWRON: 0=active -> 1=idle - // now we can savely switch off the ldo - mdmRst = 0; // RESET: 1=operating -> 0=reset - mdmEn = 0; // LDOEN: 1=on -> 0=off -#ifdef C027_REVA - // the gps ldo may no longer be needed level shifters of the modem - // so we switch it off if the gps is not enabled - if (!gpsIsEnabled) - gpsEn = 0; // LDOEN(gps): 1=on -> 0=off -#endif - } - -} - -void C027::mdmUsbEnable(bool enable) -{ - mdmUseUsb = enable; - if (mdmIsEnabled) - mdmUsbDet = mdmUseUsb ? 1 : 0; -} - -void C027::mdmReset(void) -{ - if (mdmIsEnabled) - { - mdmRst = 0; // RESET: 0=reset - // power on sequence is triggered by reset low - // LISA-U200 50ms - // SARA-G350 50ms - // LISA-C200 300ms - wait_ms(300); - mdmRst = 1; // RESET: 0=reset -> 1=operating - } -} - -void C027::mdmWakeup(void) -{ - if (mdmIsEnabled) - { - mdmPwrOn = 0; - // wakeup the device by low pulse: - // LISA-U200 50-80us - // SARA-G350 5ms - // LISA-C200 150ms - wait_ms(150); - mdmPwrOn = 1; - } -} - -void C027::mdmSleep(void) -{ - if (mdmIsEnabled) - { - mdmPwrOn = 0; - // going to sleep is triggerd by low pulse: - // LISA-U200 1000ms - // SARA-G350 n/a - // LISA-C200 n/a - wait_ms(1000); - mdmPwrOn = 1; - } -} - -void C027::gpsPower(bool enable) -{ - if (!gpsIsEnabled && enable) // enable gps - { - gpsRst = 0; // RESET: 0=reset - gpsEn = 1; // LDOEN: 0=off -> 1=on - wait_ms(1); // wait until stable - gpsRst = 1; // RESET: 0=reset -> 1=operating - gpsIsEnabled = true; - // the gps schould be fully ready after 50ms - if (mdmIsEnabled) - mdmILvlOe = 1; // ILVLEN: 0=enabled (i2c) - } - else if (gpsIsEnabled && !enable) // diasble gps - { - gpsIsEnabled = false; - mdmILvlOe = 0; // ILVLEN: 0=disabled (i2c) - gpsRst = 0; // RESET: 1=operating -> 0=reset -#ifdef C027_REVA - // the gps ldo may have to remain enabled for the level shifters of the modem - if (!mdmIsEnabled) - gpsEn = 0; // LDOEN: 1=on -> 0=off -#else - gpsEn = 0; // LDOEN: 1=on -> 0=off -#endif - } -} - -void C027::gpsReset(void) -{ - if (gpsIsEnabled) - { - gpsRst = 0; // RESET: 0=reset,1=operating - wait_ms(1); - gpsRst = 1; // RESET: 1=operating,0=reset - } -} diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/TARGET_UBLOX_C027/C027.h b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/TARGET_UBLOX_C027/C027.h deleted file mode 100644 index 4f118bca84..0000000000 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/TARGET_UBLOX_C027/C027.h +++ /dev/null @@ -1,47 +0,0 @@ -/* Platform header file, for the u-blox C27-C20/U20/G35 -* mbed Internet of Things Starter Kit -* http://mbed.org/platforms/u-blox-C027/ -* -*/ - -#ifndef C027_H -#define C027_H - -#include "mbed.h" - -// Override the weak mbed die function that flashes the leds. -// We do not have fancy leds that can be flashed on the C027. -void mbed_die(void); - -//#define C027_REVA // remove this define for the revision B boards - -class C027 -{ -public: - C027(); - - void mdmPower(bool enable); - void mdmUsbEnable(bool enable); // enable the USB interface - void mdmReset(void); - void mdmWakeup(void); - void mdmSleep(void); - void gpsPower(bool enable); - void gpsReset(void); - -private: - // modem pins - DigitalOut mdmEn; - DigitalOut mdmRst; - DigitalOut mdmPwrOn; - DigitalOut mdmLvlOe; - DigitalOut mdmILvlOe; - DigitalOut mdmUsbDet; - bool mdmIsEnabled; - bool mdmUseUsb; - // gps pins - DigitalOut gpsEn; - DigitalOut gpsRst; - bool gpsIsEnabled; -}; - -#endif diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/TARGET_UBLOX_C027/PinNames.h b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/TARGET_UBLOX_C027/PinNames.h index 69b7c683d2..c84faffa8d 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/TARGET_UBLOX_C027/PinNames.h +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/TARGET_UBLOX_C027/PinNames.h @@ -141,10 +141,6 @@ typedef enum { // ISP port // ----------------------------------------------------------- ISP = P2_10, - - // Reserved / NC pins - // ----------------------------------------------------------- - RSVD2 = P3_26, // Other mbed Pin Names LED = P3_25, diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/TARGET_UBLOX_C027/device.h b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/TARGET_UBLOX_C027/device.h index 9f79cc1b78..3b6e556a40 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/TARGET_UBLOX_C027/device.h +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/TARGET_UBLOX_C027/device.h @@ -53,6 +53,7 @@ #define DEVICE_STDIO_MESSAGES 1 +// should only enable one or the other, not both #define DEVICE_ERROR_PATTERN 0 #define DEVICE_ERROR_RED 1 diff --git a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/TARGET_UBLOX_C027/reserved_pins.h b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/TARGET_UBLOX_C027/reserved_pins.h index 48f7a7c75b..512dd6908b 100644 --- a/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/TARGET_UBLOX_C027/reserved_pins.h +++ b/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/TARGET_UBLOX_C027/reserved_pins.h @@ -1,8 +1,8 @@ -// List of reserved pins for LPC1768 +// List of reserved pins for C027 LPC1768 #ifndef RESERVED_PINS_H #define RESERVED_PINS_H -#define TARGET_RESERVED_PINS {} +#define TARGET_RESERVED_PINS {P3_26} #endif