My modifications/additions to the code

Dependencies:   ADXL345 ADXL345_I2C IMUfilter ITG3200 Servo fishgait mbed-rtos mbed pixy_cam

Fork of robotic_fish_ver_4_8 by jetfishteam

Committer:
sandwich
Date:
Fri Jul 11 14:30:36 2014 +0000
Revision:
25:4f2f441eceec
Parent:
22:807d5467fbf6
latest revision

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rkk 8:0574a5db1fc4 1 #include "PwmIn.h"
rkk 8:0574a5db1fc4 2
rkk 8:0574a5db1fc4 3 PwmIn::PwmIn(PinName p, float dutyMin, float dutyMax)
rkk 8:0574a5db1fc4 4 : _p(p) {
rkk 8:0574a5db1fc4 5 _p.rise(this, &PwmIn::rise);
rkk 8:0574a5db1fc4 6 _p.fall(this, &PwmIn::fall);
rkk 8:0574a5db1fc4 7 _period = 20000;
rkk 8:0574a5db1fc4 8 _pulsewidth = 0;
rkk 8:0574a5db1fc4 9 _t.start();
rkk 8:0574a5db1fc4 10 _risen = false;
rkk 8:0574a5db1fc4 11 _dutyMin = dutyMin;
rkk 8:0574a5db1fc4 12 _dutyMax = dutyMax;
rkk 8:0574a5db1fc4 13 _dutyDelta = dutyMax - dutyMin;
rkk 8:0574a5db1fc4 14
rkk 8:0574a5db1fc4 15 }
rkk 8:0574a5db1fc4 16
rkk 8:0574a5db1fc4 17 float PwmIn::period() {
rkk 8:0574a5db1fc4 18 return float(_period)/1000000;
rkk 8:0574a5db1fc4 19 }
rkk 8:0574a5db1fc4 20
rkk 8:0574a5db1fc4 21 float PwmIn::pulsewidth() {
rkk 8:0574a5db1fc4 22 return float(_pulsewidth)/1000000;
rkk 8:0574a5db1fc4 23 }
rkk 8:0574a5db1fc4 24
rkk 8:0574a5db1fc4 25 float PwmIn::dutycycle() {
rkk 8:0574a5db1fc4 26 return float(_pulsewidth) / float(_period);
rkk 8:0574a5db1fc4 27 }
rkk 8:0574a5db1fc4 28
rkk 8:0574a5db1fc4 29 float PwmIn::dutycyclescaledup() {
rkk 8:0574a5db1fc4 30 float duty = float(_pulsewidth) / float(_period);
rkk 8:0574a5db1fc4 31 float dutyAdjusted = (duty > _dutyMin) ? ((duty-_dutyMin)/_dutyDelta) : 0.0;
rkk 8:0574a5db1fc4 32 return (dutyAdjusted < 1.0) ? dutyAdjusted : 1.0;
rkk 8:0574a5db1fc4 33
rkk 8:0574a5db1fc4 34 }
rkk 8:0574a5db1fc4 35
rkk 8:0574a5db1fc4 36 void PwmIn::rise()
rkk 8:0574a5db1fc4 37 {
rkk 8:0574a5db1fc4 38 _tmp = _t.read_us();
rkk 8:0574a5db1fc4 39 if(_tmp > 19000) {
rkk 8:0574a5db1fc4 40 _period = _tmp;
rkk 8:0574a5db1fc4 41 _risen = true;
rkk 8:0574a5db1fc4 42 _t.reset();
rkk 8:0574a5db1fc4 43 }
rkk 8:0574a5db1fc4 44 }
rkk 8:0574a5db1fc4 45
rkk 8:0574a5db1fc4 46 void PwmIn::fall()
rkk 8:0574a5db1fc4 47 {
rkk 8:0574a5db1fc4 48 _tmp = _t.read_us();
sandwich 22:807d5467fbf6 49 if(_tmp > 500 && _tmp < 5000 && _risen == true) {
rkk 8:0574a5db1fc4 50 _pulsewidth = _tmp;
rkk 8:0574a5db1fc4 51 _risen = false;
rkk 8:0574a5db1fc4 52 }
rkk 8:0574a5db1fc4 53 }
rkk 8:0574a5db1fc4 54
rkk 8:0574a5db1fc4 55