![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Embedded software Assessment 2
Dependencies: MCP23017 SDFileSystem USBDevice WattBob_TextLCD mbed
Diff: Function.h
- Revision:
- 20:00a9a95ef083
- Parent:
- 18:f485d46a7acb
- Child:
- 22:644d53f1f291
--- a/Function.h Tue Mar 04 17:08:22 2014 +0000 +++ b/Function.h Tue Mar 04 18:42:38 2014 +0000 @@ -86,124 +86,12 @@ Write_LCD("S2=",0,12,0); Write_LCD("E",1,14,0); } -/********************************************************************** - Read TWO digital inputs every 400mS (switch_1 and switch_2) -***********************************************************************/ -void ReadDigitalin(){ - ReadDigitalinPin = !(ReadDigitalinPin); - Swch1=Switch1; - Swch2=Switch2; -} -/******************************************************************* - Read TWO analogue inputs every 800mS (Analogue_in_1 at pin 19 - and Analogue_in_2 at pin 20). Also, averaging the last 4 readings -********************************************************************/ -void ReadAnalogin(){ - ReadAnaloginPin = ! (ReadAnaloginPin); - Analug1_valu[4]=0; - Analug2_valu[4]=0; - for(int i=0;i<3;i++){ - Analug1_valu[i]=Analug1_valu[i+1]; - Analug1_valu[4]=Analug1_valu[4]+Analug1_valu[i]/4; - Analug2_valu[i]=Analug2_valu[i+1]; - Analug2_valu[4]=Analug2_valu[4]+Analug2_valu[i]/4; - } - Analug1_valu[3]=Analogue_in_1.read()*255; - Analug2_valu[3]=Analogue_in_2.read()*255; - Analug1_valu[4]=Analug1_valu[4]+Analug1_valu[3]/4; - Analug2_valu[4]=Analug2_valu[4]+Analug2_valu[3]/4; -} -/*************************************************************************************** -Measure the frequency of a 3.3v square wave signal once every second. The frequency range -is 500Hz to 1000Hz with 50% duty cycle). In this code the on complet cycle is peiod is -masured after detcting the edge also a timeout timer is seting to detect open loop. -*****************************************************************************************/ -void FreqMsur(){ - FreqMsurPin = ! (FreqMsurPin); - FreqTimeOut.start(); - // Ignore first part of the signal to detect the edge - if(!FrequencyIn){ - while(!FrequencyIn){ - if (FreqTimeOut.read_ms() > 4) - break; - } - } - else{ - while(FrequencyIn){ - if (FreqTimeOut.read_ms() > 4) - break; - } - } - //This is the begining of the edge start the timer to masure - FreqMsurT.start(); - if (FreqTimeOut.read_ms() > 4){ - FreqTimeOutHpn=1; - } - else{ - FreqTimeOutHpn=0; - } - FreqTimeOut.stop(); - FreqTimeOut.reset(); - if(!FreqTimeOutHpn){ - if(!FrequencyIn){ - while(!FrequencyIn){ - } - while(FrequencyIn){ - } - } - else{ - while(FrequencyIn){ - } - while(!FrequencyIn){ - } - } - FreqMsurT.stop(); - float Period=FreqMsurT.read_us(); - Freq=1/Period*1000000.0+0.5; //Adding 0.5 to round the frequency to nearst int - } - else{ - Freq=0xffff; - } - FreqTimeOut.stop(); - FreqMsurT.reset(); -} - -/************************************************************* -Display the following on the LCD display every 2 seconds -a. Frequency value (show as integer) -b. analogue values (show as integers) -c. digital values -d. Possible error code -**************************************************************/ -void Display(){ - DisplayPin = ! (DisplayPin); - Write_LCD(" ",0,2,0); - if( Freq<1010 && Freq>490){ - sprintf(Temp, "%d", Freq); - Write_LCD(Temp,0,2,0); - } - else{ - Write_LCD("Err",0,2,0); - } - sprintf(Temp, "%d", Analug1_valu[4]); - Write_LCD(" ",1,3,0); - Write_LCD(Temp,1,3,0); - sprintf(Temp, "%d", Analug2_valu[4]); - Write_LCD(" ",1,10,0); - Write_LCD(Temp,1,10,0); - sprintf(Temp, "%d", Swch1); - Write_LCD(Temp,0,10,0); - sprintf(Temp, "%d", Swch2); - Write_LCD(Temp,0,15,0); - sprintf(Temp, "%d", Error_Code); - Write_LCD(Temp,1,15,0); -} /************************************************************************* - Cheaking the four input + Cheaking the four input every 1.8 Sec ************************************************************************/ void InputCheck(){ - InputCheckPin = ! (InputCheckPin); + InputCheckPin = ! (InputCheckPin); //Pin 25 if(Swch1&&(Analug1_valu[4]>Analug2_valu[4])){ Error_Code=3; } @@ -217,20 +105,7 @@ Ena_BinCounter=0; } } -/*************************************************************** - Binery counter on the four Led -*****************************************************************/ -void BinaryCounter(){ - BinaryCounterPin = !(BinaryCounterPin); - if(Ena_BinCounter){ - BinLed=Bin; - Bin++; - } - else{ - BinLed=0x00; - Bin=0x00; - } -} + /*************************************************************** Initialising the SD card file *****************************************************************/ @@ -250,7 +125,7 @@ c. Filtered analogue values ***************************************************************/ void LogFile(){ - LogFilePin = ! (LogFilePin); + LogFilePin = ! (LogFilePin); //Pin 27 fp = fopen( "/sd/LogDir/LogHistory.csv" , "a"); fprintf(fp,"%i;",(LogTimer.read_ms()/1000)); if (Freq !=0xffff){