My forked repository. DISCO_F407VG, DISCO_F303VC, DISCO_F051R8 and DISCO_F100RB maybe added.
Dependents: FastPWM-DISCO-test
Fork of FastPWM by
FastPWM.cpp
- Committer:
- Sissors
- Date:
- 2012-07-12
- Revision:
- 0:f8c1b0ad5371
- Child:
- 2:4b8de6ae5885
File content as of revision 0:f8c1b0ad5371:
#include "FastPWM.h" FastPWM::FastPWM(PinName pin) : PWMObject(pin){ _duty=0; _period=0.02; if (pin==p26||pin==LED1) MR=&LPC_PWM1->MR1; else if (pin==p25||pin==LED2) MR=&LPC_PWM1->MR2; else if (pin==p24||pin==LED3) MR=&LPC_PWM1->MR3; else if (pin==p23||pin==LED4) MR=&LPC_PWM1->MR4; else if (pin==p22) MR=&LPC_PWM1->MR5; else if (pin==p21) MR=&LPC_PWM1->MR6; else error("No hardware PWM pin\n\r"); period(_period); } void FastPWM::period(double seconds) { LPC_PWM1->MR0 = (unsigned int) (seconds * (double)F_CLK); pulsewidth(_duty*seconds); _period = seconds; } void FastPWM::period_ms(int ms) { period((double)ms*1000.0); } void FastPWM::period_us(int us) { period((double)us*1000000.0); } void FastPWM::period_us(double us) { period(us*1000000.0); } void FastPWM::pulsewidth(double seconds) { *MR=(unsigned int) (seconds * (double)F_CLK); } void FastPWM::pulsewidth_ms(int ms) { pulsewidth((double)ms*1000.0); } void FastPWM::pulsewidth_us(int us) { pulsewidth((double)us*1000000.0); } void FastPWM::pulsewidth_us(double us) { pulsewidth(us*1000000.0); } void FastPWM::write(double duty) { _duty=duty; pulsewidth(duty*_period); } double FastPWM::read( void ) { return _duty; } FastPWM & FastPWM::operator= (double value) { write(value); return(*this); } FastPWM::operator double() { return _duty; }