Embedded software Assessment 2

Dependencies:   MCP23017 SDFileSystem USBDevice WattBob_TextLCD mbed

main.cpp

Committer:
muaiyd
Date:
2014-02-28
Revision:
17:dba09fb3f508
Parent:
16:0a2138a18f26
Child:
18:f485d46a7acb

File content as of revision 17:dba09fb3f508:

/*
This software is built to test (Cyclic Executive). Five main functions are used in and every one of them
has its own time of repetition. To execute this, a Ticker was used to call a function every 100 mSec.
In other words, when 100 mSec is passed, the Cycle function is called and so on every 100 mSec. In this
software a benefit is a token place for the difference between a float division with integer one. For example
float(Counter/4.0)-Counter/4 if the Counter is a real repetition of 4 so the result of this will be 0. As a 
result every 4 cycle (400 mSec) the condition be true and calling the function. Also, after 8 cycles (800 mSec)
the condition is true for two factions, but the processor will implement on the priority that it was put in 
the program.

*/
#include "Function.h"

uint16_t Counter=0;
void CycleFunction(); 
 
int main(){
    Init_LCD();
    InitFile();
    LogTimer.start();
    //Call the CycleFunction every 100 msec can see that on pin30
    Cycle.attach(&CycleFunction,0.1);      
}

void CycleFunction(){
    TickerPin=!(TickerPin);
    Counter++;
    //Can see the period of execute every function below on the pin that
    //writen infront of it
    if((float(Counter/4.0)-Counter/4)==0) ReadDigitalin();  //Pin 21
    if((float(Counter/8.0)-Counter/8)==0) ReadAnalogin();   //Pin 22
    if((float(Counter/10.0)-Counter/10)==0) FreqMsur();     //Pin 23
    if((float(Counter/15.0)-Counter/15)==0) BinaryCounter();//Pin 24
    if((float(Counter/18.0)-Counter/18)==0) InputCheck();   //Pin 25
    if((float(Counter/20.0)-Counter/20)==0) Display();      //Pin 26
    if((float(Counter/50.0)-Counter/50)==0) LogFile();      //Pin 27
    //The least common multiple for all the above is 1800 cycles
    // so every 180 Sec all the functions are repeated
    if(Counter==1800) Counter=0;  
}