System Management code
Dependencies: mbed CANBuffer Watchdog MODSERIAL mbed-rtos xbeeRelay IAP
Fork of SystemManagement by
main.cpp
- Committer:
- pspatel321
- Date:
- 2015-01-06
- Revision:
- 33:6bc82b6b62e5
- Parent:
- 32:e70407021ad2
- Child:
- 34:18bcf276d3bf
File content as of revision 33:6bc82b6b62e5:
#include "IOobjects.h"
#include "runTime.h"
#include "outDiagnostics.h"
#include "serviceCAN.h"
int main() {
wdt.kick(); // Kick the watchdog timer
pc.baud(BAUD);
pc.format(8, SerialBase::None, 2); // 2 Stop bits, reduce bad serial packets
can.mode(FIFO);
DigitalOut led1(LED1);
bool normalReset = true;
// Did a watchdog reset occur since last power cycle?
if (wdt.checkFlag()) {
wdt.clearFlag(); // Clear flag
data.watchdogReset = true;
pc.printf("Sys Mgmt Watchdog Reset\r\n");
led1=1;
normalReset=false;
}
// Did a brownout reset occur since last power cycle?
if (LPC_SC->RSID & (1<<3)) {
LPC_SC->RSID = (1<<3); // Clear flag
pc.printf("Sys Mgmt Brownout Reset\r\n");
normalReset=false;
}
// Print normal reset string
if (normalReset) pc.printf("Sys Mgmt Reset\r\n");
// Start the 10Hz data thread
// Thread gather(runTime::thread_gather, 0, osPriorityHigh);
// Start the 100Hz data timer (more time critical than thread)
//RtosTimer sample(runTime::thread_sample, osTimerPeriodic);
//sample.start(FAST_LOOP*1000);
// Start the serial, CAN threads
Thread serial_out(outDiagnostics::thread_serialOut, 0, osPriorityAboveNormal, 6000); // Allocate 6kB RAM stack
//Thread can_out(outDiagnostics::thread_canOut, 0, osPriorityAboveNormal); // Allocate 256B RAM stack
wdt.kick(WDT_TIME); // Startup complete, normal timeout
// Background task
while(1) {
// Service CAN and Xbee logic
//if (canbus::serviceCAN());
//canbus::receiveMsgXbee();
wdt.kick();
}
}
