See graph

Dependencies:   MCP23017 SDFileSystem WattBob_TextLCD mbed

Fork of Embedded_Software_Assignment_2 by Steven Kay

main.cpp

Committer:
sk398
Date:
2016-02-29
Revision:
6:ceda53939eb8
Parent:
5:250f51c80ac1
Child:
7:2973bf297f3d

File content as of revision 6:ceda53939eb8:

/* #####################################################################
                               main.cpp
                               ---------
                
                     Embedded Software - Assignment 2
                     --------------------------------
 
 Written by:        Steven Kay
 
 Date:              February 2016
 
 Function:          This 
 
 Version:           1.0
 
 Version History
 ---------------
 
 1.1                rgdfgdfgdfggdfgdg
 
 1.0                gdgddfdddgd
    
 ##################################################################### */

#include "mbed.h"
#include "Tasks.h"
#include "MCP23017.h"
#include "WattBob_TextLCD.h"

#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);

Task1 task1(p11);                               // Square wave Measurement
Task2 task2_switch1(p12);                       // Read digital Output
Task3 task3(p13);                               // Watchdog Pulse
Task4 task4(p15,p16);                           // Read analog Inputs
Task5 task5(p9,p10,0x40);                       // Output to LCD Display
Task6 task6;                                    // Logical checks
Task7 task7(p5,p6,p7,p8,"SD","/SD/A2");         // SD Card Write

int main() {
    
    volatile int task1Frequency;
    volatile int task2SwitchState;
    volatile float task4AnalogChannels[2];
    volatile int errorState;
    char logData[50];
    
    task1Frequency = task1.ReadFrequency();
//    printf("Task 1 Frequency %d Hz\r\n",task1Frequency);
    
    task2SwitchState = task2_switch1.digitalInState();
//    printf("Switch 1 State: %d\r\n",task2SwitchState);

    task3.OutputWatchdogPulse();
    
    float *analogReading = task4.returnAnalogReadings();
    task4AnalogChannels[0] = *(analogReading);
    task4AnalogChannels[1]= *(analogReading+1);
//    printf("Analog Readings:\r\nChannel 1-%f\r\nChannel 2-%f\r\n",task4AnalogChannels[0],task4AnalogChannels[1]);
    
    errorState = task6.updateErrorCode( task2SwitchState,
                                        task4AnalogChannels[0],
                                        task4AnalogChannels[1]  );
    
    task5.updateDisplay(task1Frequency,
                        task2SwitchState,
                        errorState,
                        task4AnalogChannels[0],
                        task4AnalogChannels[1]  );

    if(task7.openFile("/SD/A2/test.csv","a"))
    {
        printf("File not opened");
    }
    else
    {
        int a = sprintf(logData,"Freq=%d,SW1=%d,A1=%1.3f,A2=%1.3f\n",task1Frequency,
                        task2SwitchState,task4AnalogChannels[0],task4AnalogChannels[1]);
        task7.writeData(logData);
        task7.closeFile();
    }

    while(1) {
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
    }
}