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.
Dependents: qonly_controller foc-ed_in_the_bot_compact foc-ed_in_the_bot_compact CurrentModeSine ... more
Fork of FastPWM by
FastPWM.cpp@2:4b8de6ae5885, 2012-07-12 (annotated)
- Committer:
- Sissors
- Date:
- Thu Jul 12 19:26:43 2012 +0000
- Revision:
- 2:4b8de6ae5885
- Parent:
- 0:f8c1b0ad5371
- Child:
- 3:3094d3806cfc
ms and us functions were multiplying by 1k(k) instead of dividing
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Sissors | 0:f8c1b0ad5371 | 1 | #include "FastPWM.h" |
| Sissors | 0:f8c1b0ad5371 | 2 | |
| Sissors | 0:f8c1b0ad5371 | 3 | FastPWM::FastPWM(PinName pin) : PWMObject(pin){ |
| Sissors | 0:f8c1b0ad5371 | 4 | _duty=0; |
| Sissors | 0:f8c1b0ad5371 | 5 | _period=0.02; |
| Sissors | 0:f8c1b0ad5371 | 6 | if (pin==p26||pin==LED1) |
| Sissors | 0:f8c1b0ad5371 | 7 | MR=&LPC_PWM1->MR1; |
| Sissors | 0:f8c1b0ad5371 | 8 | else if (pin==p25||pin==LED2) |
| Sissors | 0:f8c1b0ad5371 | 9 | MR=&LPC_PWM1->MR2; |
| Sissors | 0:f8c1b0ad5371 | 10 | else if (pin==p24||pin==LED3) |
| Sissors | 0:f8c1b0ad5371 | 11 | MR=&LPC_PWM1->MR3; |
| Sissors | 0:f8c1b0ad5371 | 12 | else if (pin==p23||pin==LED4) |
| Sissors | 0:f8c1b0ad5371 | 13 | MR=&LPC_PWM1->MR4; |
| Sissors | 0:f8c1b0ad5371 | 14 | else if (pin==p22) |
| Sissors | 0:f8c1b0ad5371 | 15 | MR=&LPC_PWM1->MR5; |
| Sissors | 0:f8c1b0ad5371 | 16 | else if (pin==p21) |
| Sissors | 0:f8c1b0ad5371 | 17 | MR=&LPC_PWM1->MR6; |
| Sissors | 0:f8c1b0ad5371 | 18 | else |
| Sissors | 0:f8c1b0ad5371 | 19 | error("No hardware PWM pin\n\r"); |
| Sissors | 0:f8c1b0ad5371 | 20 | |
| Sissors | 0:f8c1b0ad5371 | 21 | period(_period); |
| Sissors | 0:f8c1b0ad5371 | 22 | } |
| Sissors | 0:f8c1b0ad5371 | 23 | |
| Sissors | 0:f8c1b0ad5371 | 24 | void FastPWM::period(double seconds) { |
| Sissors | 0:f8c1b0ad5371 | 25 | LPC_PWM1->MR0 = (unsigned int) (seconds * (double)F_CLK); |
| Sissors | 0:f8c1b0ad5371 | 26 | pulsewidth(_duty*seconds); |
| Sissors | 0:f8c1b0ad5371 | 27 | _period = seconds; |
| Sissors | 0:f8c1b0ad5371 | 28 | } |
| Sissors | 0:f8c1b0ad5371 | 29 | |
| Sissors | 0:f8c1b0ad5371 | 30 | void FastPWM::period_ms(int ms) { |
| Sissors | 2:4b8de6ae5885 | 31 | period((double)ms/1000.0); |
| Sissors | 0:f8c1b0ad5371 | 32 | } |
| Sissors | 0:f8c1b0ad5371 | 33 | |
| Sissors | 0:f8c1b0ad5371 | 34 | void FastPWM::period_us(int us) { |
| Sissors | 2:4b8de6ae5885 | 35 | period((double)us/1000000.0); |
| Sissors | 0:f8c1b0ad5371 | 36 | } |
| Sissors | 0:f8c1b0ad5371 | 37 | |
| Sissors | 0:f8c1b0ad5371 | 38 | void FastPWM::period_us(double us) { |
| Sissors | 2:4b8de6ae5885 | 39 | period(us/1000000.0); |
| Sissors | 0:f8c1b0ad5371 | 40 | } |
| Sissors | 0:f8c1b0ad5371 | 41 | |
| Sissors | 0:f8c1b0ad5371 | 42 | void FastPWM::pulsewidth(double seconds) { |
| Sissors | 0:f8c1b0ad5371 | 43 | *MR=(unsigned int) (seconds * (double)F_CLK); |
| Sissors | 0:f8c1b0ad5371 | 44 | } |
| Sissors | 0:f8c1b0ad5371 | 45 | |
| Sissors | 0:f8c1b0ad5371 | 46 | void FastPWM::pulsewidth_ms(int ms) { |
| Sissors | 2:4b8de6ae5885 | 47 | pulsewidth((double)ms/1000.0); |
| Sissors | 0:f8c1b0ad5371 | 48 | } |
| Sissors | 0:f8c1b0ad5371 | 49 | |
| Sissors | 0:f8c1b0ad5371 | 50 | void FastPWM::pulsewidth_us(int us) { |
| Sissors | 2:4b8de6ae5885 | 51 | pulsewidth((double)us/1000000.0); |
| Sissors | 0:f8c1b0ad5371 | 52 | } |
| Sissors | 0:f8c1b0ad5371 | 53 | |
| Sissors | 0:f8c1b0ad5371 | 54 | void FastPWM::pulsewidth_us(double us) { |
| Sissors | 2:4b8de6ae5885 | 55 | pulsewidth(us/1000000.0); |
| Sissors | 0:f8c1b0ad5371 | 56 | } |
| Sissors | 0:f8c1b0ad5371 | 57 | |
| Sissors | 0:f8c1b0ad5371 | 58 | void FastPWM::write(double duty) { |
| Sissors | 0:f8c1b0ad5371 | 59 | _duty=duty; |
| Sissors | 0:f8c1b0ad5371 | 60 | pulsewidth(duty*_period); |
| Sissors | 0:f8c1b0ad5371 | 61 | } |
| Sissors | 0:f8c1b0ad5371 | 62 | |
| Sissors | 0:f8c1b0ad5371 | 63 | double FastPWM::read( void ) { |
| Sissors | 0:f8c1b0ad5371 | 64 | return _duty; |
| Sissors | 0:f8c1b0ad5371 | 65 | } |
| Sissors | 0:f8c1b0ad5371 | 66 | |
| Sissors | 0:f8c1b0ad5371 | 67 | FastPWM & FastPWM::operator= (double value) { |
| Sissors | 0:f8c1b0ad5371 | 68 | write(value); |
| Sissors | 0:f8c1b0ad5371 | 69 | return(*this); |
| Sissors | 0:f8c1b0ad5371 | 70 | } |
| Sissors | 0:f8c1b0ad5371 | 71 | |
| Sissors | 0:f8c1b0ad5371 | 72 | FastPWM::operator double() { |
| Sissors | 0:f8c1b0ad5371 | 73 | return _duty; |
| Sissors | 0:f8c1b0ad5371 | 74 | } |
| Sissors | 0:f8c1b0ad5371 | 75 |
