![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
chad
Dependencies: MCP23017 WattBob_TextLCD mbed-rtos mbed
Diff: main.cpp
- Revision:
- 4:70553c83c65a
- Parent:
- 0:10e3e2697134
- Child:
- 5:e1ade53bce83
--- a/main.cpp Tue Mar 07 14:02:10 2017 +0000 +++ b/main.cpp Tue Mar 07 15:15:13 2017 +0000 @@ -1,12 +1,85 @@ +// Paramater Allocation +// Paramater: 17 +// Log Option: 1 (uSD) +// Watchdog Pulse Length: 6ms +// Watchdog Repetion Rate: 0.5 +// Error Display: 1 (LCD) +// Execution time display: Task5 (LDC display) + + + #include "mbed.h" +#include "MCP23017.h" +#include "WattBob_TextLCD.h" +#include "SDFileSystem" + +#define BACK_LIGHT_ON(INTERFACE) INTERFACE->write_bit(1,BL_BIT) +#define BACK_LIGHT_OFF(INTERFACE) INTERFACE->write_bit(0,BL_BIT) -DigitalOut myled(LED1); +// Pointers to LCD Screen +MCP23017 *par_port; // pointer to 16-bit parallel I/O chip +WattBob_TextLCD *lcd; // pointer to 2*16 character LCD object + +// Digital I/O p11 to p20 +DigitalIn FqIn(p11); // Digital frequency in for measurement +DigitalIn DSIn(p12); // Digital switch input +DigitalOut WD_pulse(p14); // Watchdog Pulse +SDFileSystem uSD(p5, p6, p7, p8, "uSD"); //uSD pinout + +// Analogue I/O p15 to p20 +AnalogIn A1_in(p15); // Analogue input to be filtered +AnalogIn A2_in(p16); // Analogue input to be filtered + +// Timer objects +Timer timer; // Frequency Timer +Timer tick; // Clock timer for CycExec +Timer idle; // Timer for idle states + +// Constant Declaration +const int SampFreq = 100; + +// Variable Declaration +long int tck = 0; // Used to define what task is called (CycExec) -int main() { - while(1) { - myled = 1; - wait(0.2); - myled = 0; - wait(0.2); - } +int period = 0; // Frequency timer variable (Frequency Check) +int freq = 0; // Frequency return variable (Frequency Check) + +bool switch_state = 0; // Switch high or low (Digital In) + +int A1_val = 0; // Analogue 1 return variable (Analogue In) +int A2_val = 0; // Analogue 2 return variable (Analogue In) + + +//////////////////////////////////////////////////////////////////////////////// +// +// Main Program +// + +int main() +{ + // LCD Init + par_port = new MCP23017(p9, p10, 0x40); // initialise 16-bit I/O chip + lcd = new WattBob_TextLCD(par_port); // initialise 2*26 char display + par_port->write_bit(1,BL_BIT); // turn LCD backlight ON + lcd->cls(); // clear display + + // .csv log Init + fp = fopen ("/uSD/log.csv", "w"); // Pointer to log file on uSD + fprintf(fp, "Log of Frazer Legge's Embedded Software Assignment 2\n\n"); + + // + tick.attach(&CycExec, 0.025); // Period set to 25ms + while(1){ + } } + +void CycExec() +{ + idle.stop(); + + if(tck % 40 = 0) // Every Second (needs offset) + + + + +