diff options
author | Perry Hung <iperry@alum.mit.edu> | 2010-03-23 00:55:40 -0400 |
---|---|---|
committer | Perry Hung <iperry@alum.mit.edu> | 2010-03-23 01:25:00 -0400 |
commit | 3639ad2cf027da7425ebe76382842c006acec05a (patch) | |
tree | 65682fc68e0625c4ff41f7cdc169482ec6d77672 /src/wiring/pwm.c | |
parent | 48be688f451e81d2a81c76a85dadf18093e672ab (diff) | |
download | librambutan-3639ad2cf027da7425ebe76382842c006acec05a.tar.gz librambutan-3639ad2cf027da7425ebe76382842c006acec05a.zip |
Unified analog, digital, and timer pin mappings to implement the mapping
we discussed. There's no such thing as A0-A15 anymore. You should now
be able to do something like:
unsigned int val;
pinMode(15, INPUT_ANALOG);
val = analogRead(15);
Diffstat (limited to 'src/wiring/pwm.c')
-rw-r--r-- | src/wiring/pwm.c | 25 |
1 files changed, 4 insertions, 21 deletions
diff --git a/src/wiring/pwm.c b/src/wiring/pwm.c index e6e100f..2cc815c 100644 --- a/src/wiring/pwm.c +++ b/src/wiring/pwm.c @@ -25,27 +25,10 @@ #include "wiring.h" #include "timers.h" -#include "gpio.h" +#include "io.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 -}; +extern const PinMapping PIN_MAP[NR_MAPLE_PINS]; void pwmWrite(uint8_t pin, uint16_t duty_cycle) { TimerCCR ccr; @@ -54,9 +37,9 @@ void pwmWrite(uint8_t pin, uint16_t duty_cycle) { return; } - ccr = PIN_TO_TIMER[pin]; + ccr = PIN_MAP[pin].timer_channel; - if (ccr == NOT_A_TIMER) + if (ccr == TIMER_INVALID) return; timer_pwm_write_ccr(ccr, duty_cycle); |