aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--atmel-samd/boards/arduino_zero/board.c3
-rw-r--r--atmel-samd/boards/board.h3
-rw-r--r--atmel-samd/boards/circuitplayground_express/board.c16
-rw-r--r--atmel-samd/boards/feather_m0_adalogger/board.c3
-rw-r--r--atmel-samd/boards/feather_m0_basic/board.c3
-rw-r--r--atmel-samd/boards/feather_m0_express/board.c3
-rw-r--r--atmel-samd/boards/gemma_m0/board.c3
-rw-r--r--atmel-samd/boards/metro_m0_express/board.c3
-rw-r--r--atmel-samd/boards/trinket_m0/board.c6
-rw-r--r--atmel-samd/main.c3
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;