diff options
| author | Scott Shawcroft <scott.shawcroft@gmail.com> | 2017-06-16 15:40:15 -0700 |
|---|---|---|
| committer | Scott Shawcroft <scott.shawcroft@gmail.com> | 2017-06-16 15:40:15 -0700 |
| commit | a715bf6bac8b5a3316cf96181960a82d33aca31b (patch) | |
| tree | 54763c6c00d745cadf6bc745b0cb481eda556fa3 | |
| parent | 3e23464b1ed11710714a4d6eaa98c2c84ec6f4dd (diff) | |
atmel-samd: Introduce board reset mechanic used on CircuitPlayground1.0.0-rc.1
Express to ensure the Neopixels are off after reloads.
| -rw-r--r-- | atmel-samd/boards/arduino_zero/board.c | 3 | ||||
| -rw-r--r-- | atmel-samd/boards/board.h | 3 | ||||
| -rw-r--r-- | atmel-samd/boards/circuitplayground_express/board.c | 16 | ||||
| -rw-r--r-- | atmel-samd/boards/feather_m0_adalogger/board.c | 3 | ||||
| -rw-r--r-- | atmel-samd/boards/feather_m0_basic/board.c | 3 | ||||
| -rw-r--r-- | atmel-samd/boards/feather_m0_express/board.c | 3 | ||||
| -rw-r--r-- | atmel-samd/boards/gemma_m0/board.c | 3 | ||||
| -rw-r--r-- | atmel-samd/boards/metro_m0_express/board.c | 3 | ||||
| -rw-r--r-- | atmel-samd/boards/trinket_m0/board.c | 6 | ||||
| -rw-r--r-- | atmel-samd/main.c | 3 |
10 files changed, 44 insertions, 2 deletions
diff --git a/atmel-samd/boards/arduino_zero/board.c b/atmel-samd/boards/arduino_zero/board.c index 519e5db1a..419280274 100644 --- a/atmel-samd/boards/arduino_zero/board.c +++ b/atmel-samd/boards/arduino_zero/board.c @@ -44,3 +44,6 @@ void board_init(void) bool board_requests_safe_mode(void) { return false; } + +void reset_board(void) { +} diff --git a/atmel-samd/boards/board.h b/atmel-samd/boards/board.h index a5d96c550..72f3563a9 100644 --- a/atmel-samd/boards/board.h +++ b/atmel-samd/boards/board.h @@ -39,4 +39,7 @@ void board_init(void); // way. bool board_requests_safe_mode(void); +// Reset the state of off MCU components such as neopixels. +void reset_board(void); + #endif // __MICROPY_INCLUDED_ATMEL_SAMD_BOARDS_BOARD_H__ diff --git a/atmel-samd/boards/circuitplayground_express/board.c b/atmel-samd/boards/circuitplayground_express/board.c index 9ed56d952..3b7ccff46 100644 --- a/atmel-samd/boards/circuitplayground_express/board.c +++ b/atmel-samd/boards/circuitplayground_express/board.c @@ -24,9 +24,14 @@ * THE SOFTWARE. */ +#include <string.h> + #include "boards/board.h" #include "asf/sam0/drivers/port/port.h" #include "common-hal/microcontroller/Pin.h" +#include "shared-bindings/digitalio/DigitalInOut.h" +#include "shared-bindings/neopixel_write/__init__.h" +#include "samd21_pins.h" void board_init(void) { @@ -47,3 +52,14 @@ bool board_requests_safe_mode(void) { reset_pin(PIN_PA28); return safe_mode; } + +void reset_board(void) { + uint8_t empty[30]; + memset(empty, 0, 30); + digitalio_digitalinout_obj_t neopixel_pin; + common_hal_digitalio_digitalinout_construct(&neopixel_pin, &pin_PB23); + common_hal_digitalio_digitalinout_switch_to_output(&neopixel_pin, false, + DRIVE_MODE_PUSH_PULL); + common_hal_neopixel_write(&neopixel_pin, empty, 30); + common_hal_digitalio_digitalinout_deinit(&neopixel_pin); +} diff --git a/atmel-samd/boards/feather_m0_adalogger/board.c b/atmel-samd/boards/feather_m0_adalogger/board.c index 06e67e11c..1ecbe167c 100644 --- a/atmel-samd/boards/feather_m0_adalogger/board.c +++ b/atmel-samd/boards/feather_m0_adalogger/board.c @@ -33,3 +33,6 @@ void board_init(void) bool board_requests_safe_mode(void) { return false; } + +void reset_board(void) { +} diff --git a/atmel-samd/boards/feather_m0_basic/board.c b/atmel-samd/boards/feather_m0_basic/board.c index 06e67e11c..1ecbe167c 100644 --- a/atmel-samd/boards/feather_m0_basic/board.c +++ b/atmel-samd/boards/feather_m0_basic/board.c @@ -33,3 +33,6 @@ void board_init(void) bool board_requests_safe_mode(void) { return false; } + +void reset_board(void) { +} diff --git a/atmel-samd/boards/feather_m0_express/board.c b/atmel-samd/boards/feather_m0_express/board.c index 06e67e11c..1ecbe167c 100644 --- a/atmel-samd/boards/feather_m0_express/board.c +++ b/atmel-samd/boards/feather_m0_express/board.c @@ -33,3 +33,6 @@ void board_init(void) bool board_requests_safe_mode(void) { return false; } + +void reset_board(void) { +} diff --git a/atmel-samd/boards/gemma_m0/board.c b/atmel-samd/boards/gemma_m0/board.c index 06e67e11c..1ecbe167c 100644 --- a/atmel-samd/boards/gemma_m0/board.c +++ b/atmel-samd/boards/gemma_m0/board.c @@ -33,3 +33,6 @@ void board_init(void) bool board_requests_safe_mode(void) { return false; } + +void reset_board(void) { +} diff --git a/atmel-samd/boards/metro_m0_express/board.c b/atmel-samd/boards/metro_m0_express/board.c index 519e5db1a..419280274 100644 --- a/atmel-samd/boards/metro_m0_express/board.c +++ b/atmel-samd/boards/metro_m0_express/board.c @@ -44,3 +44,6 @@ void board_init(void) bool board_requests_safe_mode(void) { return false; } + +void reset_board(void) { +} diff --git a/atmel-samd/boards/trinket_m0/board.c b/atmel-samd/boards/trinket_m0/board.c index 06e67e11c..221463146 100644 --- a/atmel-samd/boards/trinket_m0/board.c +++ b/atmel-samd/boards/trinket_m0/board.c @@ -26,10 +26,12 @@ #include "boards/board.h" -void board_init(void) -{ +void board_init(void) { } bool board_requests_safe_mode(void) { return false; } + +void reset_board(void) { +} diff --git a/atmel-samd/main.c b/atmel-samd/main.c index aaffcf90e..563237a3c 100644 --- a/atmel-samd/main.c +++ b/atmel-samd/main.c @@ -594,6 +594,7 @@ int main(void) { // Reset everything and prep MicroPython to run boot.py. reset_samd21(); + reset_board(); reset_mp(); // Turn on autoreload by default but before boot.py in case it wants to change it. @@ -656,6 +657,7 @@ int main(void) { autoreload_enable(); } reset_samd21(); + reset_board(); reset_mp(); } if (exit_code == PYEXEC_FORCED_EXIT) { @@ -665,6 +667,7 @@ int main(void) { first_run = false; skip_repl = start_mp(safe_mode); reset_samd21(); + reset_board(); reset_mp(); } else if (exit_code != 0) { break; |
