chad
Dependencies: MCP23017 WattBob_TextLCD mbed-rtos mbed
Diff: main.cpp
- Revision:
- 14:ede0e7ed2745
- Parent:
- 13:ad04937ca366
- Child:
- 15:85616bc0e2ae
diff -r ad04937ca366 -r ede0e7ed2745 main.cpp --- a/main.cpp Tue Mar 07 22:32:06 2017 +0000 +++ b/main.cpp Wed Mar 08 15:36:57 2017 +0000 @@ -8,107 +8,138 @@ #include "main.h" + + // 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 FILE *fp; // pointer to uSD object +//SDFileSystem sd(p5, p6, p7, p8, "sd"); //uSD pinout + // Digital I/O p11 to p20 -DigitalIn Fq(p11); // Digital frequency in for measurement -DigitalIn DS(p12); // Digital switch input -DigitalIn DS_s(p13); // Digital shutdown switch -DigitalOut WD_pulse_out(p14); // Watchdog Pulse -SDFileSystem sd(p5, p6, p7, p8, "sd"); //uSD pinout +DigitalIn Fq(p11); // Digital frequency in for measurement +DigitalIn DS(p12); // Digital switch input +DigitalIn DS_s(p13); // Digital shutdown switch +DigitalOut WD_pulse_out(p14); // Watchdog Pulse +DigitalOut led1(LED1); +DigitalOut led2(LED2); // Analogue I/O p15 to p20 -AnalogIn A1_(p15); // Analogue input to be filtered -AnalogIn A2_(p16); // Analogue input to be filtered +AnalogIn A1_(p15); // Analogue input to be filtered +AnalogIn A2_(p16); // Analogue input to be filtered // Timer objects -//Ticker tick; // Clock timer for CycExec -Thread tick; -Timer timer; // Frequency Timer -Timer T5; // Timer for idle states +//Ticker tick; // Clock timer for CycExec +Ticker ticker; +//Timer timer; // Frequency Timer +//Timer T5; // Timer for idle states // Constant Declaration const int SampFreq = 100; // Sampling Frequency const int WD = 6000; // Watchdog pulse length // Variable Declaration -long int tck = 0; // Used to define what task is called (CycExec) +int tck = 1; // Used to define what task is called (CycExec) -bool FqIn = Fq; // Frequency input boolean +int FqIn = Fq; // Frequency input boolean int period = 0; // Frequency timer variable (Frequency Check) int freq = 0; // Frequency return variable (Frequency Check) -bool DSIn = DS; // Switch Input boolean +int DSIn = DS; // Switch Input boolean int switch_state = 0; int WD_pulse; -int A1_in = A1_; // Analogue 1 input variable -int A2_in = A2_; // Analogue 2 input variable +int A1_in = A1_; // Analogue 1 input variable +int A2_in = A2_; // Analogue 2 input variable int A1_val = 0; // Analogue 1 return variable (Analogue In) int A2_val = 0; // Analogue 2 return variable (Analogue In) -bool DS_sIn = DS_s; // Shutdown Switch boolean +int DS_sIn = DS_s; // Shutdown Switch int error_code = 0; // Error code variable int logcount = 0; // Keep track of log number + + //////////////////////////////////////////////////////////////////////////////// // // Main Program // void CycExec() -{/* - if(tck % 40 == 4){ // Every Second (needs offset) - Task1(); - } - else if(tck % 13 == 8){ // Every 1/3 sec - Task2(); - } - else if(tck % 80 == 7){ // Every 2 sec - Task3(); - } - else if(tck % 20 == 0){ // Every 1/2 sec - Task4(); - } - else if(tck % 80 == 1){ // Every 2 sec - Task5(); - } - else if(tck % 20 == 3){ // Every 0.5 sec - Task6(); - } - else if(tck % 20 == 10){ // Every 1/2 sec - Task7(); - }*/ - //else{ - // Task8(); - //} - Task1(); - tck++; - WD_pulse_out = WD_pulse; -} +{ + /* + if(tck == 2){ // Every Second (needs offset) + //Task1(); + lcd->locate(0,0); + } + else if(tck == 4){ // Every 1/3 sec + //Task2(); + lcd->printf("Test"); + } + else if(tck % 80 == 7){ // Every 2 sec + Task3(); + } + else if(tck % 20 == 0){ // Every 1/2 sec + Task4(); + } + else if(tck % 80 == 1){ // Every 2 sec + Task5(); + } + else if(tck % 20 == 3){ // Every 0.5 sec + Task6(); + } + else if(tck % 20 == 10){ // Every 1/2 sec + Task7(); + } + else{ + Task8(); + } */ + + + //lcd->locate(0,0); + //lcd->printf("Tck: %d", tck); + led2 = !led2; + + tck++; + //WD_pulse_out = WD_pulse; +} + int main() -{ +{ // LCD Init par_port = new MCP23017(p9, p10, 0x40); // initialise 16-bit I/O chip + par_port->config(0x0F00, 0x0F00, 0x0F00); + 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 ("/sd/log.txt", "a"); // Pointer to log file on uSD - fprintf(fp, "Log of Frazer Legge's Embedded Software Assignment 2\n\n"); + //mkdir("/sd/logs", 0777); + //fp = fopen ("/sd/logs/log.txt", "w"); // Pointer to log file on uSD + //fprintf(fp, "Log of Frazer Legge's Embedded Software Assignment 2\n\n"); + + //tick.start(CycExec); + + ticker.attach(&CycExec, 0.025); // Period set to 25ms - // - //tick.attach(&CycExec, 0.025); // Period set to 25ms + /*lcd->locate(0,0); + lcd->printf("Tck: %d", tck);*/ + while(1){ - tick.start(&CycExec); - wait_ms(100); + led1 = !led1; + wait(0.2); } -} \ No newline at end of file +} + + + +