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
- Committer:
- Sissors
- Date:
- 2012-07-25
- Revision:
- 3:3094d3806cfc
- Parent:
- 2:4b8de6ae5885
File content as of revision 3:3094d3806cfc:
#include "FastPWM.h"
FastPWM::FastPWM(PinName pin) : PWMObject(pin){
//Set clock source
LPC_SC->PCLKSEL0|=1<<12;
_duty=0;
_period=0.02;
if (pin==p26||pin==LED1) {
PWMUnit=1;
MR=&LPC_PWM1->MR1;
}
else if (pin==p25||pin==LED2){
PWMUnit=2;
MR=&LPC_PWM1->MR2;
}
else if (pin==p24||pin==LED3){
PWMUnit=3;
MR=&LPC_PWM1->MR3;
}
else if (pin==p23||pin==LED4){
PWMUnit=4;
MR=&LPC_PWM1->MR4;
}
else if (pin==p22){
PWMUnit=5;
MR=&LPC_PWM1->MR5;
}
else if (pin==p21){
PWMUnit=6;
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);
LPC_PWM1->LER |= 1;
_period = seconds;
pulsewidth(_duty*_period);
}
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);
LPC_PWM1->LER |= 1<<PWMUnit;
_duty=seconds/_period;
}
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;
}
