Skip to content

Commit 4a4f29b

Browse files
committed
atmel-samd: Rework status LED implementation
* Track status pin use by user code separately so it can take over the pins and then give them back. * Switch to hardware SPI for APA102 on Gemma and Trinket. * Merge microcontroller/types.h into microcontroller/Pin.h to better match approach going forwards.
1 parent 8505de1 commit 4a4f29b

62 files changed

Lines changed: 266 additions & 113 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

atmel-samd/boards/feather_m0_express/mpconfigboard.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#define MICROPY_HW_BOARD_NAME "Adafruit Feather M0 Express"
44
#define MICROPY_HW_MCU_NAME "samd21g18"
55

6-
#define MICROPY_HW_NEOPIXEL &pin_PA06
6+
#define MICROPY_HW_NEOPIXEL (&pin_PA06)
77

88
#define SPI_FLASH_BAUDRATE (1000000)
99

atmel-samd/boards/feather_m0_express/pins.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,6 @@ STATIC const mp_map_elem_t board_global_dict_table[] = {
2323
{ MP_OBJ_NEW_QSTR(MP_QSTR_D11), (mp_obj_t)&pin_PA16 },
2424
{ MP_OBJ_NEW_QSTR(MP_QSTR_D12), (mp_obj_t)&pin_PA19 },
2525
{ MP_OBJ_NEW_QSTR(MP_QSTR_D13), (mp_obj_t)&pin_PA17 },
26+
{ MP_OBJ_NEW_QSTR(MP_QSTR_NEOPIXEL), (mp_obj_t)&pin_PA06 },
2627
};
2728
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);

atmel-samd/boards/gemma_m0/mpconfigboard.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
#define MICROPY_HW_BOARD_NAME "Adafruit Gemma M0"
44
#define MICROPY_HW_MCU_NAME "samd21e18"
55

6-
#define MICROPY_HW_APA102_MOSI &pin_PA04
7-
#define MICROPY_HW_APA102_SCK &pin_PA05
6+
#define MICROPY_HW_APA102_MOSI (&pin_PA04)
7+
#define MICROPY_HW_APA102_SCK (&pin_PA05)
8+
9+
// #define CIRCUITPY_BITBANG_APA102
810

911
#define MICROPY_PORT_A (PORT_PA04 | PORT_PA05 | PORT_PA24 | PORT_PA25)
1012
#define MICROPY_PORT_B (0)

atmel-samd/boards/gemma_m0/pins.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,7 @@ STATIC const mp_map_elem_t board_global_dict_table[] = {
55
{ MP_OBJ_NEW_QSTR(MP_QSTR_D1), (mp_obj_t)&pin_PA02 },
66
{ MP_OBJ_NEW_QSTR(MP_QSTR_D2), (mp_obj_t)&pin_PA09 },
77
{ MP_OBJ_NEW_QSTR(MP_QSTR_D0), (mp_obj_t)&pin_PA08 },
8+
{ MP_OBJ_NEW_QSTR(MP_QSTR_APA102_MOSI), (mp_obj_t)&pin_PA04 },
9+
{ MP_OBJ_NEW_QSTR(MP_QSTR_APA102_SCK), (mp_obj_t)&pin_PA05 },
810
};
911
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);

atmel-samd/boards/metro_m0_flash/mpconfigboard.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
#define MICROPY_HW_LED_TX PIN_PA27
77
#define MICROPY_HW_LED_RX PIN_PA31
88

9-
#define MICROPY_HW_NEOPIXEL &pin_PA30
9+
#define MICROPY_HW_NEOPIXEL (&pin_PA30)
1010

1111
#define SPI_FLASH_BAUDRATE (1000000)
1212

atmel-samd/boards/trinket_m0/mpconfigboard.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
#define MICROPY_HW_BOARD_NAME "Adafruit Trinket M0"
44
#define MICROPY_HW_MCU_NAME "samd21e18"
55

6-
#define MICROPY_HW_APA102_MOSI &pin_PA01
7-
#define MICROPY_HW_APA102_SCK &pin_PA00
6+
// Rev B - Black
7+
#define MICROPY_HW_APA102_MOSI (&pin_PA04)
8+
#define MICROPY_HW_APA102_SCK (&pin_PA05)
89

9-
#define MICROPY_PORT_A (PORT_PA00 | PORT_PA01 | PORT_PA24 | PORT_PA25)
10+
#define MICROPY_PORT_A (PORT_PA04 | PORT_PA05 | PORT_PA24 | PORT_PA25)
1011
#define MICROPY_PORT_B (0)
1112

1213
#define AUTORESET_DELAY_MS 500

atmel-samd/boards/trinket_m0/pins.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,7 @@ STATIC const mp_map_elem_t board_global_dict_table[] = {
77
{ MP_OBJ_NEW_QSTR(MP_QSTR_D4), (mp_obj_t)&pin_PA06 },
88
{ MP_OBJ_NEW_QSTR(MP_QSTR_D3), (mp_obj_t)&pin_PA07 },
99
{ MP_OBJ_NEW_QSTR(MP_QSTR_D13),(mp_obj_t)&pin_PA10 },
10+
{ MP_OBJ_NEW_QSTR(MP_QSTR_APA102_MOSI), (mp_obj_t)&pin_PA04 },
11+
{ MP_OBJ_NEW_QSTR(MP_QSTR_APA102_SCK), (mp_obj_t)&pin_PA05 },
1012
};
1113
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);

atmel-samd/common-hal/analogio/AnalogIn.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ void common_hal_analogio_analogin_construct(analogio_analogin_obj_t* self,
4848
// No ADC function on that pin
4949
mp_raise_ValueError("Pin does not have ADC capabilities");
5050
}
51+
claim_pin(pin);
5152

5253
self->pin = pin;
5354

atmel-samd/common-hal/analogio/AnalogIn.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
#ifndef __MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_ANALOGIO_ANALOGIN_H__
2828
#define __MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_ANALOGIO_ANALOGIN_H__
2929

30-
#include "common-hal/microcontroller/types.h"
30+
#include "common-hal/microcontroller/Pin.h"
3131

3232
// Don't reorder these includes because they are dependencies of adc_feature.h.
3333
// They should really be included by adc_feature.h.

atmel-samd/common-hal/analogio/AnalogOut.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ void common_hal_analogio_analogout_construct(analogio_analogout_obj_t* self,
4949
mp_raise_OSError(MP_EIO);
5050
return;
5151
}
52+
claim_pin(pin);
5253

5354
struct dac_chan_config config_analogout_chan;
5455
dac_chan_get_config_defaults(&config_analogout_chan);

0 commit comments

Comments
 (0)