Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
soft_pwn.cpp@0:cff19fd9a3be, 2015-11-04 (annotated)
- Committer:
- sewins
- Date:
- Wed Nov 04 21:47:34 2015 +0000
- Revision:
- 0:cff19fd9a3be
Published beginnings of PWM expansion
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| sewins | 0:cff19fd9a3be | 1 | #include "soft_pwm.h" |
| sewins | 0:cff19fd9a3be | 2 | |
| sewins | 0:cff19fd9a3be | 3 | SoftPwm::SoftPwm(float initialPeriod, float initialDutyCycle) |
| sewins | 0:cff19fd9a3be | 4 | { |
| sewins | 0:cff19fd9a3be | 5 | this->period = initialPeriod; |
| sewins | 0:cff19fd9a3be | 6 | this->dutyCycle = initialDutyCycle; |
| sewins | 0:cff19fd9a3be | 7 | |
| sewins | 0:cff19fd9a3be | 8 | this->timer.start(); |
| sewins | 0:cff19fd9a3be | 9 | } |
| sewins | 0:cff19fd9a3be | 10 | |
| sewins | 0:cff19fd9a3be | 11 | float SoftPwm::getPeriod() |
| sewins | 0:cff19fd9a3be | 12 | { |
| sewins | 0:cff19fd9a3be | 13 | return this->period; |
| sewins | 0:cff19fd9a3be | 14 | } |
| sewins | 0:cff19fd9a3be | 15 | float SoftPwm::getDutyCycle() |
| sewins | 0:cff19fd9a3be | 16 | { |
| sewins | 0:cff19fd9a3be | 17 | return this->dutyCycle; |
| sewins | 0:cff19fd9a3be | 18 | } |
| sewins | 0:cff19fd9a3be | 19 | void SoftPwm::setPeriod(float newPeriod) |
| sewins | 0:cff19fd9a3be | 20 | { |
| sewins | 0:cff19fd9a3be | 21 | this->period = newPeriod; |
| sewins | 0:cff19fd9a3be | 22 | } |
| sewins | 0:cff19fd9a3be | 23 | void SoftPwm::setDutyCycle(float newDutyCycle) |
| sewins | 0:cff19fd9a3be | 24 | { |
| sewins | 0:cff19fd9a3be | 25 | this->dutyCycle = newDutyCycle; |
| sewins | 0:cff19fd9a3be | 26 | } |
| sewins | 0:cff19fd9a3be | 27 | |
| sewins | 0:cff19fd9a3be | 28 | bool SoftPwm::isOn() |
| sewins | 0:cff19fd9a3be | 29 | { |
| sewins | 0:cff19fd9a3be | 30 | float onPhaseDuration = this->dutyCycle * this->period; |
| sewins | 0:cff19fd9a3be | 31 | float currentTime = this->timer.read(); |
| sewins | 0:cff19fd9a3be | 32 | if (currentTime > this->period) { |
| sewins | 0:cff19fd9a3be | 33 | this->timer.reset(); |
| sewins | 0:cff19fd9a3be | 34 | } |
| sewins | 0:cff19fd9a3be | 35 | if (currentTime<onPhaseDuration) { |
| sewins | 0:cff19fd9a3be | 36 | return true; |
| sewins | 0:cff19fd9a3be | 37 | } else { |
| sewins | 0:cff19fd9a3be | 38 | return false; |
| sewins | 0:cff19fd9a3be | 39 | } |
| sewins | 0:cff19fd9a3be | 40 | } |