Embedded software Assessment 2
Dependencies: MCP23017 SDFileSystem USBDevice WattBob_TextLCD mbed
FreqMesure.h
- Committer:
- muaiyd
- Date:
- 2014-03-04
- Revision:
- 20:00a9a95ef083
- Child:
- 22:644d53f1f291
File content as of revision 20:00a9a95ef083:
/*************************************************************************************** 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); //Pin 23 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(); }