the fish that looks like a jet
Dependencies: ADXL345 ADXL345_I2C IMUfilter ITG3200 mbed Servo
PwmReader.cpp
- Committer:
- sandwich
- Date:
- 2014-01-30
- Revision:
- 7:e005cfaff8d1
- Parent:
- 6:a4d6f3e4bf28
File content as of revision 7:e005cfaff8d1:
#include "PwmReader.h" //Constructors PwmReader::PwmReader(PinName pwmInPort, float min, float max) { if (min > max) { error("PwmReader min value greater than max value!"); } di = new InterruptIn(pwmInPort); pwmMin = min; pwmMax = max; lastRise = 0; period = 0; duty = 0.0; di->mode(PullDown); di->rise(this,&PwmReader::pwmRise); // attach the address of the flip function to the rising edge di->fall(this,&PwmReader::pwmFall); t.start(); } PwmReader::~PwmReader() { delete di; t.stop(); } // public methods float PwmReader::getDuty() { float smallDelta = (duty > pwmMin) ? (duty - pwmMin) : 0.0; float dutyAdjusted = smallDelta / (pwmMax-pwmMin); return dutyAdjusted; } // private methods void PwmReader::pwmRise() { int rise = t.read_us(); if( (lastRise > 0) && (rise > lastRise) ) { period = rise - lastRise; } lastRise = rise; } void PwmReader::pwmFall() { int fall = t.read_us(); if(period > 0 ) { int delta = fall - lastRise; duty = float(delta)/float(period); } }