diff options
author | iperry <iperry@749a229e-a60e-11de-b98f-4500b42dc123> | 2009-12-17 02:37:07 +0000 |
---|---|---|
committer | iperry <iperry@749a229e-a60e-11de-b98f-4500b42dc123> | 2009-12-17 02:37:07 +0000 |
commit | 32e57dac2e61e79b029593eb4d34d727bcc10678 (patch) | |
tree | 98d7ff41993576bb150d13d5f63dc744f6812852 /src/wiring/pwm.c | |
download | librambutan-32e57dac2e61e79b029593eb4d34d727bcc10678.tar.gz librambutan-32e57dac2e61e79b029593eb4d34d727bcc10678.zip |
Initial commit of library code, moved from leaftest repo
git-svn-id: https://leaflabs.googlecode.com/svn/trunk/library@69 749a229e-a60e-11de-b98f-4500b42dc123
Diffstat (limited to 'src/wiring/pwm.c')
-rw-r--r-- | src/wiring/pwm.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/wiring/pwm.c b/src/wiring/pwm.c new file mode 100644 index 0000000..0c33c3a --- /dev/null +++ b/src/wiring/pwm.c @@ -0,0 +1,40 @@ +#include "wiring.h" +#include "timers.h" +#include "gpio.h" +#include "pwm.h" + +#define NOT_A_TIMER 0 + +static const TimerCCR PIN_TO_TIMER[NR_MAPLE_PINS] = { + TIMER2_CH4_CCR, // D0/A6 + TIMER2_CH3_CCR, // D1/A7 + TIMER2_CH1_CCR, // D2/A8 + TIMER2_CH2_CCR, // D3/A9 + NOT_A_TIMER, // D4 + TIMER4_CH1_CCR, // D5 + TIMER1_CH1_CCR, // D6 + TIMER1_CH2_CCR, // D7 + TIMER1_CH3_CCR, // D8 + TIMER4_CH2_CCR, // D9 + NOT_A_TIMER, // D10/A10 + TIMER3_CH2_CCR, // D11/A11 + TIMER3_CH1_CCR, // D12/A12 + NOT_A_TIMER, // D13/A13 +}; + +void pwmWrite(uint8_t pin, uint16_t duty_cycle) { + TimerCCR ccr; + + if (pin >= NR_MAPLE_PINS) { + return; + } + + ccr = PIN_TO_TIMER[pin]; + + if (ccr == NOT_A_TIMER) + return; + + timer_pwm_write_ccr(ccr, duty_cycle); +} + + |