summaryrefslogtreecommitdiff
path: root/ports
diff options
context:
space:
mode:
authorDan Halbert <halbert@halwitz.org>2019-03-01 14:07:32 -0500
committerGitHub <noreply@github.com>2019-03-01 14:07:32 -0500
commit17bf2afa414d605676643be301a05d74c3b68290 (patch)
tree640270114605db6c574ff7886f6ed44f8455af08 /ports
parent1ba761086a057387a7a14d9df1bf267850fa303d (diff)
parent263134dcd3e1d0151be081a2ba04b358f732035e (diff)
Merge pull request #1607 from pewpew-game/pewpew10.x-4.x
Add support for PewPew 10.x boards
Diffstat (limited to 'ports')
-rw-r--r--ports/atmel-samd/boards/pewpew10/board.c37
-rw-r--r--ports/atmel-samd/boards/pewpew10/mpconfigboard.h34
-rw-r--r--ports/atmel-samd/boards/pewpew10/mpconfigboard.mk22
-rw-r--r--ports/atmel-samd/boards/pewpew10/pins.c35
-rw-r--r--ports/atmel-samd/supervisor/port.c8
-rw-r--r--ports/atmel-samd/timer_handler.c14
-rw-r--r--ports/atmel-samd/timer_handler.h1
7 files changed, 147 insertions, 4 deletions
diff --git a/ports/atmel-samd/boards/pewpew10/board.c b/ports/atmel-samd/boards/pewpew10/board.c
new file mode 100644
index 000000000..d7e856d61
--- /dev/null
+++ b/ports/atmel-samd/boards/pewpew10/board.c
@@ -0,0 +1,37 @@
+/*
+ * This file is part of the MicroPython project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include "boards/board.h"
+
+void board_init(void) {
+}
+
+bool board_requests_safe_mode(void) {
+ return false;
+}
+
+void reset_board(void) {
+}
diff --git a/ports/atmel-samd/boards/pewpew10/mpconfigboard.h b/ports/atmel-samd/boards/pewpew10/mpconfigboard.h
new file mode 100644
index 000000000..09618431b
--- /dev/null
+++ b/ports/atmel-samd/boards/pewpew10/mpconfigboard.h
@@ -0,0 +1,34 @@
+#define MICROPY_HW_BOARD_NAME "PewPew 10.2"
+#define MICROPY_HW_MCU_NAME "samd21e18"
+
+#define MICROPY_PORT_A (PORT_PA24 | PORT_PA25)
+#define MICROPY_PORT_B (0)
+#define MICROPY_PORT_C (0)
+
+#define CIRCUITPY_INTERNAL_NVM_SIZE 0
+
+#define BOARD_FLASH_SIZE (0x00040000 - 0x2000 - 0x010000)
+
+
+#define IGNORE_PIN_PB00 1
+#define IGNORE_PIN_PB01 1
+#define IGNORE_PIN_PB02 1
+#define IGNORE_PIN_PB03 1
+#define IGNORE_PIN_PB04 1
+#define IGNORE_PIN_PB05 1
+#define IGNORE_PIN_PB06 1
+#define IGNORE_PIN_PB07 1
+#define IGNORE_PIN_PB08 1
+#define IGNORE_PIN_PB09 1
+#define IGNORE_PIN_PB10 1
+#define IGNORE_PIN_PB11 1
+#define IGNORE_PIN_PB12 1
+#define IGNORE_PIN_PB13 1
+#define IGNORE_PIN_PB14 1
+#define IGNORE_PIN_PB15 1
+#define IGNORE_PIN_PB16 1
+#define IGNORE_PIN_PB17 1
+#define IGNORE_PIN_PB22 1
+#define IGNORE_PIN_PB23 1
+#define IGNORE_PIN_PB30 1
+#define IGNORE_PIN_PB31 1
diff --git a/ports/atmel-samd/boards/pewpew10/mpconfigboard.mk b/ports/atmel-samd/boards/pewpew10/mpconfigboard.mk
new file mode 100644
index 000000000..983e48e21
--- /dev/null
+++ b/ports/atmel-samd/boards/pewpew10/mpconfigboard.mk
@@ -0,0 +1,22 @@
+LD_FILE = boards/samd21x18-bootloader.ld
+USB_VID = 0x239A
+USB_PID = 0x801D
+USB_PRODUCT = "PewPew 10.2"
+USB_MANUFACTURER = "Radomir Dopieralski"
+
+INTERNAL_FLASH_FILESYSTEM = 1
+LONGINT_IMPL = NONE
+
+CHIP_VARIANT = SAMD21E18A
+CHIP_FAMILY = samd21
+
+FROZEN_MPY_DIRS += $(TOP)/frozen/pew-pewpew-standalone-10.x
+
+CIRCUITPY_PEW = 1
+CIRCUITPY_ANALOGIO = 1
+CIRCUITPY_MATH = 1
+CIRCUITPY_NEOPIXEL_WRITE = 1
+CIRCUITPY_RTC = 0
+CIRCUITPY_SAMD = 0
+CIRCUITPY_USB_MIDI = 0
+CIRCUITPY_SMALL_BUILD = 1
diff --git a/ports/atmel-samd/boards/pewpew10/pins.c b/ports/atmel-samd/boards/pewpew10/pins.c
new file mode 100644
index 000000000..4a8225ad9
--- /dev/null
+++ b/ports/atmel-samd/boards/pewpew10/pins.c
@@ -0,0 +1,35 @@
+#include "shared-bindings/board/__init__.h"
+
+#include "supervisor/shared/board_busses.h"
+
+STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
+ { MP_ROM_QSTR(MP_QSTR__R1), MP_ROM_PTR(&pin_PA05) },
+ { MP_ROM_QSTR(MP_QSTR__R2), MP_ROM_PTR(&pin_PA11) },
+ { MP_ROM_QSTR(MP_QSTR__R3), MP_ROM_PTR(&pin_PA28) },
+ { MP_ROM_QSTR(MP_QSTR__R4), MP_ROM_PTR(&pin_PA09) },
+ { MP_ROM_QSTR(MP_QSTR__R5), MP_ROM_PTR(&pin_PA16) },
+ { MP_ROM_QSTR(MP_QSTR__R6), MP_ROM_PTR(&pin_PA27) },
+ { MP_ROM_QSTR(MP_QSTR__R7), MP_ROM_PTR(&pin_PA17) },
+ { MP_ROM_QSTR(MP_QSTR__R8), MP_ROM_PTR(&pin_PA22) },
+
+ { MP_ROM_QSTR(MP_QSTR__C8), MP_ROM_PTR(&pin_PA10) },
+ { MP_ROM_QSTR(MP_QSTR__C7), MP_ROM_PTR(&pin_PA18) },
+ { MP_ROM_QSTR(MP_QSTR__C6), MP_ROM_PTR(&pin_PA19) },
+ { MP_ROM_QSTR(MP_QSTR__C5), MP_ROM_PTR(&pin_PA06) },
+ { MP_ROM_QSTR(MP_QSTR__C4), MP_ROM_PTR(&pin_PA23) },
+ { MP_ROM_QSTR(MP_QSTR__C3), MP_ROM_PTR(&pin_PA07) },
+ { MP_ROM_QSTR(MP_QSTR__C2), MP_ROM_PTR(&pin_PA14) },
+ { MP_ROM_QSTR(MP_QSTR__C1), MP_ROM_PTR(&pin_PA15) },
+
+ { MP_ROM_QSTR(MP_QSTR_P1), MP_ROM_PTR(&pin_PA30) },
+ { MP_ROM_QSTR(MP_QSTR_P2), MP_ROM_PTR(&pin_PA31) },
+ { MP_ROM_QSTR(MP_QSTR_P3), MP_ROM_PTR(&pin_PA00) },
+ { MP_ROM_QSTR(MP_QSTR_P4), MP_ROM_PTR(&pin_PA01) },
+ { MP_ROM_QSTR(MP_QSTR_P5), MP_ROM_PTR(&pin_PA02) },
+ { MP_ROM_QSTR(MP_QSTR_P6), MP_ROM_PTR(&pin_PA03) },
+ { MP_ROM_QSTR(MP_QSTR_P7), MP_ROM_PTR(&pin_PA04) },
+
+ { MP_ROM_QSTR(MP_QSTR__BUTTONS), MP_ROM_PTR(&pin_PA08) },
+
+};
+MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);
diff --git a/ports/atmel-samd/supervisor/port.c b/ports/atmel-samd/supervisor/port.c
index aee082de0..8d25806b7 100644
--- a/ports/atmel-samd/supervisor/port.c
+++ b/ports/atmel-samd/supervisor/port.c
@@ -68,9 +68,10 @@
#include "tusb.h"
-#ifdef CIRCUITPY_GAMEPAD_TICKS
+#if CIRCUITPY_GAMEPAD
#include "shared-module/gamepad/__init__.h"
#endif
+#include "shared-module/_pew/PewPew.h"
extern volatile bool mp_msc_enabled;
@@ -222,9 +223,12 @@ void reset_port(void) {
reset_gclks();
-#ifdef CIRCUITPY_GAMEPAD_TICKS
+#if CIRCUITPY_GAMEPAD
gamepad_reset();
#endif
+#if CIRCUITPY_PEW
+ pew_reset();
+#endif
reset_event_system();
diff --git a/ports/atmel-samd/timer_handler.c b/ports/atmel-samd/timer_handler.c
index 26f984d96..059d4330e 100644
--- a/ports/atmel-samd/timer_handler.c
+++ b/ports/atmel-samd/timer_handler.c
@@ -30,6 +30,7 @@
#include "timer_handler.h"
#include "common-hal/pulseio/PulseOut.h"
+#include "shared-module/_pew/PewPew.h"
static uint8_t tc_handler[TC_INST_NUM];
@@ -44,8 +45,17 @@ void shared_timer_handler(bool is_tc, uint8_t index) {
// Make sure to add the handler #define to timer_handler.h
if (is_tc) {
uint8_t handler = tc_handler[index];
- if (handler == TC_HANDLER_PULSEOUT) {
- pulseout_interrupt_handler(index);
+ switch(handler) {
+ case TC_HANDLER_PULSEOUT:
+ pulseout_interrupt_handler(index);
+ break;
+ case TC_HANDLER_PEW:
+#if CIRCUITPY_PEW
+ pewpew_interrupt_handler(index);
+#endif
+ break;
+ default:
+ break;
}
}
}
diff --git a/ports/atmel-samd/timer_handler.h b/ports/atmel-samd/timer_handler.h
index f7a6e6e0e..e249fca36 100644
--- a/ports/atmel-samd/timer_handler.h
+++ b/ports/atmel-samd/timer_handler.h
@@ -28,6 +28,7 @@
#define TC_HANDLER_NO_INTERRUPT 0x0
#define TC_HANDLER_PULSEOUT 0x1
+#define TC_HANDLER_PEW 0x2
void set_timer_handler(bool is_tc, uint8_t index, uint8_t timer_handler);
void shared_timer_handler(bool is_tc, uint8_t index);