Ben Katz / FastPWM3

Dependents:   qonly_controller foc-ed_in_the_bot_compact foc-ed_in_the_bot_compact CurrentModeSine ... more

Fork of FastPWM by Erik -

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?

UserRevisionLine numberNew 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