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

pull/153/head
sg- 2014-01-29 22:33:41 -06:00
parent f1fa9a0c25
commit 28f0cf71b3
7 changed files with 13 additions and 248 deletions

View File

@ -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);
}
}

View File

@ -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

View File

@ -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
}
}

View File

@ -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

View File

@ -141,10 +141,6 @@ typedef enum {
// ISP port
// -----------------------------------------------------------
ISP = P2_10,
// Reserved / NC pins
// -----------------------------------------------------------
RSVD2 = P3_26,
// Other mbed Pin Names
LED = P3_25,

View File

@ -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

View File

@ -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