aboutsummaryrefslogtreecommitdiffstats
path: root/src/wiring/io.h
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/io.h
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/io.h')
-rw-r--r--src/wiring/io.h29
1 files changed, 12 insertions, 17 deletions
diff --git a/src/wiring/io.h b/src/wiring/io.h
index a313b2b..9f6aa4a 100644
--- a/src/wiring/io.h
+++ b/src/wiring/io.h
@@ -27,6 +27,8 @@
#define _IO_H
#include <inttypes.h>
+#include "gpio.h"
+#include "adc.h"
#ifdef __cplusplus
extern "C"{
@@ -75,23 +77,6 @@ extern "C"{
#define D38 38
#define D39 39
-#define A0 D14
-#define A1 D15
-#define A2 D16
-#define A3 D17
-#define A4 D18
-#define A5 D19
-#define A6 D0
-#define A7 D1
-#define A8 D2
-#define A9 D3
-#define A10 D10
-#define A11 D11
-#define A12 D12
-#define A13 D13
-#define A14 D26
-#define A15 D11
-
typedef enum WiringPinMode {
OUTPUT,
OUTPUT_OPEN_DRAIN,
@@ -103,6 +88,16 @@ typedef enum WiringPinMode {
PWM
} WiringPinMode;
+typedef struct PinMapping {
+ GPIO_Port *port;
+ uint32 pin;
+ uint32 adc;
+ TimerCCR timer_channel;
+} PinMapping;
+
+#define ADC_INVALID 0xFFFFFFFF
+#define TIMER_INVALID (TimerCCR)0xFFFFFFFF
+
/* Set pin to mode
* pinMode(pin, mode):
* pin -> {0-38, D0-D39, A0-16}