aboutsummaryrefslogtreecommitdiffstats
path: root/src/wiring/pwm.c
diff options
context:
space:
mode:
authorPerry Hung <iperry@alum.mit.edu>2010-03-23 00:55:40 -0400
committerPerry Hung <iperry@alum.mit.edu>2010-03-23 01:25:00 -0400
commit3639ad2cf027da7425ebe76382842c006acec05a (patch)
tree65682fc68e0625c4ff41f7cdc169482ec6d77672 /src/wiring/pwm.c
parent48be688f451e81d2a81c76a85dadf18093e672ab (diff)
downloadlibrambutan-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.c25
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);