aboutsummaryrefslogtreecommitdiffstats
path: root/wirish/wirish_digital.cpp
diff options
context:
space:
mode:
authorMarti Bolivar <mbolivar@leaflabs.com>2011-03-25 20:09:30 -0400
committerMarti Bolivar <mbolivar@leaflabs.com>2011-03-25 20:09:30 -0400
commitf8081eeb04c9cb511adaf58e201c7cfbe1ddfbd4 (patch)
treea4de9665dd2d2340820b888c47e252c233ff9421 /wirish/wirish_digital.cpp
parent63ea7464925b8cbeb8623d08a2bde0b1d2044047 (diff)
downloadlibrambutan-f8081eeb04c9cb511adaf58e201c7cfbe1ddfbd4.tar.gz
librambutan-f8081eeb04c9cb511adaf58e201c7cfbe1ddfbd4.zip
Final stm32_pin_info design candidate; ADC3 support on Native.
Added an adc_dev to struct stm32_pin_info. This was necessary to add support for the channels on the Native which are only connected to ADC3, but it does add a bunch of NULLs to the PIN_MAPs. I don't think any other peripherals need representation on a per-pin basis. Each peripheral library will be responsible for keeping track of related GPIO ports and bits, and we can throw #defines in to boards/*.h for other things (e.g. BOARD_SPI1_MISO_PIN). Fleshed out the ADC refactor and brought it more in keeping with the new design as it evolves. A couple of other tweaks. Notably: waitForButtonPress() now takes a default argument meaning "wait forever". Removed Maple-specific documentation from core functions in io.h; this information will need to go into the individual board docs files.
Diffstat (limited to 'wirish/wirish_digital.cpp')
-rw-r--r--wirish/wirish_digital.cpp28
1 files changed, 12 insertions, 16 deletions
diff --git a/wirish/wirish_digital.cpp b/wirish/wirish_digital.cpp
index 278cf10..115e91e 100644
--- a/wirish/wirish_digital.cpp
+++ b/wirish/wirish_digital.cpp
@@ -70,20 +70,14 @@ void pinMode(uint8 pin, WiringPinMode mode) {
return;
}
- gpio_set_mode(PIN_MAP[pin].gpio_device, PIN_MAP[pin].gpio_pin, outputMode);
+ gpio_set_mode(PIN_MAP[pin].gpio_device, PIN_MAP[pin].gpio_bit, outputMode);
if (PIN_MAP[pin].timer_device != NULL) {
- /* enable/disable timer channels if we're switching into or
- out of pwm */
- if (pwm) {
- timer_set_mode(PIN_MAP[pin].timer_device,
- PIN_MAP[pin].timer_chan,
- TIMER_PWM);
- } else {
- timer_set_mode(PIN_MAP[pin].timer_device,
- PIN_MAP[pin].timer_chan,
- TIMER_DISABLED);
- }
+ /* Enable/disable timer channels if we're switching into or
+ * out of PWM. */
+ timer_set_mode(PIN_MAP[pin].timer_device,
+ PIN_MAP[pin].timer_channel,
+ pwm ? TIMER_PWM : TIMER_DISABLED);
}
}
@@ -93,7 +87,7 @@ uint32 digitalRead(uint8 pin) {
return 0;
}
- return gpio_read_bit(PIN_MAP[pin].gpio_device, PIN_MAP[pin].gpio_pin) ?
+ return gpio_read_bit(PIN_MAP[pin].gpio_device, PIN_MAP[pin].gpio_bit) ?
HIGH : LOW;
}
@@ -102,7 +96,7 @@ void digitalWrite(uint8 pin, uint8 val) {
return;
}
- gpio_write_bit(PIN_MAP[pin].gpio_device, PIN_MAP[pin].gpio_pin, val);
+ gpio_write_bit(PIN_MAP[pin].gpio_device, PIN_MAP[pin].gpio_bit, val);
}
void togglePin(uint8 pin) {
@@ -110,12 +104,14 @@ void togglePin(uint8 pin) {
return;
}
- gpio_toggle_bit(PIN_MAP[pin].gpio_device, PIN_MAP[pin].gpio_pin);
+ gpio_toggle_bit(PIN_MAP[pin].gpio_device, PIN_MAP[pin].gpio_bit);
}
+#define BUTTON_DEBOUNCE_DELAY 10
+
uint8 isButtonPressed() {
if (digitalRead(BOARD_BUTTON_PIN)) {
- delay(1);
+ delay(BUTTON_DEBOUNCE_DELAY);
while (digitalRead(BOARD_BUTTON_PIN))
;
return true;