8000 ports/nrf: Rewrite using RTCounter logic. · RetiredWizard/micropython@27f02d1 · GitHub
[go: up one dir, main page]

Skip to content

Commit 27f02d1

Browse files
committed
ports/nrf: Rewrite using RTCounter logic.
RTCounter starts up the 2nd RTC unit (micropython#1) and demonstrates retrieving the currently elapsed seconds. Signed-off-by: RetiredWizard <github@retiredwizard.com>
1 parent 8549bf9 commit 27f02d1

File tree

26 files changed

+8
-102
lines changed

26 files changed

+8
-102
lines changed

ports/nrf/Makefile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ INC += -I./modules/board
7676
INC += -I./modules/nrf
7777
INC += -I../../shared/readline
7878
INC += -I./drivers/bluetooth
79-
INC += -I./drivers/bluetooth/s140_nrf52_6.1.1/s140_nrf52_6.1.1_API/include
8079
INC += -I./drivers
8180
INC += -I../../lib/nrfx/
8281
INC += -I../../lib/nrfx/drivers

ports/nrf/boards/actinius_icarus/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
#define MICROPY_PY_MACHINE_UART (1)
3434
#define MICROPY_PY_MACHINE_HW_PWM (0)
3535
#define MICROPY_PY_MACHINE_HW_SPI (1)
36-
#define MICROPY_PY_MACHINE_RTC (0)
3736
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
3837
#define MICROPY_PY_MACHINE_I2C (1)
3938
#define MICROPY_PY_MACHINE_ADC (0)

ports/nrf/boards/arduino_nano_33_ble_sense/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
#define MICROPY_PY_MACHINE_UART (1)
1717
#define MICROPY_PY_MACHINE_HW_PWM (1)
1818
#define MICROPY_PY_MACHINE_HW_SPI (1)
19-
#define MICROPY_PY_MACHINE_RTC (1)
2019
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
2120
#define MICROPY_PY_MACHINE_I2C (1)
2221
#define MICROPY_PY_MACHINE_ADC (1)

ports/nrf/boards/arduino_primo/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
#define MICROPY_PY_MACHINE_UART (1)
3535
#define MICROPY_PY_MACHINE_HW_PWM (1)
3636
#define MICROPY_PY_MACHINE_HW_SPI (1)
37-
#define MICROPY_PY_MACHINE_RTC (1)
3837
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
3938
#define MICROPY_PY_MACHINE_I2C (1)
4039
#define MICROPY_PY_MACHINE_ADC (1)

ports/nrf/boards/blueio_tag_evim/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
#define MICROPY_PY_MACHINE_UART (1)
3535
#define MICROPY_PY_MACHINE_HW_PWM (1)
3636
#define MICROPY_PY_MACHINE_HW_SPI (1)
37-
#define MICROPY_PY_MACHINE_RTC (1)
3837
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
3938
#define MICROPY_PY_MACHINE_I2C (1)
4039
#define MICROPY_PY_MACHINE_ADC (1)

ports/nrf/boards/dvk_bl652/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
#define MICROPY_PY_MACHINE_UART (1)
3232
#define MICROPY_PY_MACHINE_PWM (1)
3333
#define MICROPY_PY_MACHINE_HW_SPI (1)
34-
#define MICROPY_PY_MACHINE_RTC (1)
3534
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
3635
#define MICROPY_PY_MACHINE_I2C (1)
3736
#define MICROPY_PY_MACHINE_ADC (1)

ports/nrf/boards/evk_nina_b1/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232

3333
#define MICROPY_PY_MACHINE_UART (1)
3434
#define MICROPY_PY_MACHINE_HW_SPI (1)
35-
#define MICROPY_PY_MACHINE_RTC (1)
3635
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
3736
#define MICROPY_PY_MACHINE_I2C (1)
3837
#define MICROPY_PY_MACHINE_ADC (1)

ports/nrf/boards/evk_nina_b3/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@
4848
#define MICROPY_PY_MACHINE_UART (1)
4949
#define MICROPY_PY_MACHINE_HW_PWM (1)
5050
#define MICROPY_PY_MACHINE_HW_SPI (1)
51-
#define MICROPY_PY_MACHINE_RTC (1)
5251
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
5352
#define MICROPY_PY_MACHINE_I2C (1)
5453
#define MICROPY_PY_MACHINE_ADC (1)

ports/nrf/boards/feather52/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
#define MICROPY_PY_MACHINE_UART (1)
3232
#define MICROPY_PY_MACHINE_HW_PWM (1)
3333
#define MICROPY_PY_MACHINE_HW_SPI (1)
34-
#define MICROPY_PY_MACHINE_RTC (1)
3534
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
3635
#define MICROPY_PY_MACHINE_I2C (1)
3736
#define MICROPY_PY_MACHINE_ADC (1)

ports/nrf/boards/ibk_blyst_nano/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
#define MICROPY_PY_MACHINE_UART (1)
3535
#define MICROPY_PY_MACHINE_HW_PWM (1)
3636
#define MICROPY_PY_MACHINE_HW_SPI (1)
37-
#define MICROPY_PY_MACHINE_RTC (1)
3837
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
3938
#define MICROPY_PY_MACHINE_I2C (1)
4039
#define MICROPY_PY_MACHINE_ADC (1)

ports/nrf/boards/idk_blyst_nano/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
#define MICROPY_PY_MACHINE_UART (1)
3535
#define MICROPY_PY_MACHINE_HW_PWM (1)
3636
#define MICROPY_PY_MACHINE_HW_SPI (1)
37-
#define MICROPY_PY_MACHINE_RTC (1)
3837
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
3938
#define MICROPY_PY_MACHINE_I2C (1)
4039
#define MICROPY_PY_MACHINE_ADC (1)

ports/nrf/boards/microbit/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
#define MICROPY_PY_MUSIC (1)
3333
#define MICROPY_PY_MACHINE_SOFT_PWM (1)
3434
#define MICROPY_PY_MACHINE_HW_SPI (1)
35-
#define MICROPY_PY_MACHINE_RTC (0)
3635
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
3736
#define MICROPY_PY_MACHINE_I2C (1)
3837
#define MICROPY_PY_MACHINE_ADC (1)

ports/nrf/boards/nrf52840-mdk-usb-dongle/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
#define MICROPY_PY_MACHINE_UART (1)
3232
#define MICROPY_PY_MACHINE_HW_PWM (1)
3333
#define MICROPY_PY_MACHINE_HW_SPI (1)
34-
#define MICROPY_PY_MACHINE_RTC (1)
3534
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
3635
#define MICROPY_PY_MACHINE_I2C (1)
3736
#define MICROPY_PY_MACHINE_ADC (1)
2851

ports/nrf/boards/particle_xenon/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
#define MICROPY_PY_MACHINE_UART (1)
3232
#define MICROPY_PY_MACHINE_HW_PWM (1)
3333
#define MICROPY_PY_MACHINE_HW_SPI (1)
34-
#define MICROPY_PY_MACHINE_RTC (1)
3534
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
3635
#define MICROPY_PY_MACHINE_I2C (1)
3736
#define MICROPY_PY_MACHINE_ADC (1)

ports/nrf/boards/pca10000/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030

3131
#define MICROPY_PY_MACHINE_UART (1)
3232
#define MICROPY_PY_MACHINE_HW_SPI (0)
33-
#define MICROPY_PY_MACHINE_RTC (0)
3433
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
3534
#define MICROPY_PY_MACHINE_I2C (0)
3635
#define MICROPY_PY_MACHINE_ADC (0)

ports/nrf/boards/pca10001/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030

3131
#define MICROPY_PY_MACHINE_UART (1)
3232
#define MICROPY_PY_MACHINE_HW_SPI (0)
33-
#define MICROPY_PY_MACHINE_RTC (0)
3433
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
3534
#define MICROPY_PY_MACHINE_I2C (1)
3635
#define MICROPY_PY_MACHINE_ADC (1)

ports/nrf/boards/pca10028/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030

3131
#define MICROPY_PY_MACHINE_UART (1)
3232
#define MICROPY_PY_MACHINE_HW_SPI (1)
33-
#define MICROPY_PY_MACHINE_RTC (0)
3433
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
3534
#define MICROPY_PY_MACHINE_I2C (1)
3635
#define MICROPY_PY_MACHINE_ADC (1)

ports/nrf/boards/pca10031/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030

3131
#define MICROPY_PY_MACHINE_UART (1)
3232
#define MICROPY_PY_MACHINE_HW_SPI (1)
33-
#define MICROPY_PY_MACHINE_RTC (0)
3433
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
3534
#define MICROPY_PY_MACHINE_I2C (1)
3635
#define MICROPY_PY_MACHINE_ADC (1)

ports/nrf/boards/pca10040/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
#define MICROPY_PY_MACHINE_UART (1)
3232
#define MICROPY_PY_MACHINE_HW_PWM (1)
3333
#define MICROPY_PY_MACHINE_HW_SPI (1)
34-
#define MICROPY_PY_MACHINE_RTC (1)
3534
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
3635
#define MICROPY_PY_MACHINE_I2C (1)
3736
#define MICROPY_PY_MACHINE_ADC (1)

ports/nrf/boards/pca10056/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
#define MICROPY_PY_MACHINE_UART (1)
3232
#define MICROPY_PY_MACHINE_HW_PWM (1)
3333
#define MICROPY_PY_MACHINE_HW_SPI (1)
34-
#define MICROPY_PY_MACHINE_RTC (1)
3534
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
3635
#define MICROPY_PY_MACHINE_I2C (1)
3736
#define MICROPY_PY_MACHINE_ADC (1)

ports/nrf/boards/pca10059/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
#define MICROPY_PY_MACHINE_UART (1)
3232
#define MICROPY_PY_MACHINE_HW_PWM (1)
3333
#define MICROPY_PY_MACHINE_HW_SPI (1)
34-
#define MICROPY_PY_MACHINE_RTC (1)
3534
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
3635
#define MICROPY_PY_MACHINE_I2C (1)
3736
#define MICROPY_PY_MACHINE_ADC (1)

ports/nrf/boards/pca10090/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
#define MICROPY_PY_MACHINE_HW_PWM (0)
3535
#define MICROPY_PY_MACHINE_HW_SPI (1)
3636
#define MICROPY_PY_MACHINE_TIMER_NRF (0)
37-
#define MICROPY_PY_MACHINE_RTC (0)
3837
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
3938
#define MICROPY_PY_MACHINE_I2C (1)
4039
#define MICROPY_PY_MACHINE_ADC (0)

ports/nrf/boards/seeed_xiao_nrf52/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
#define MICROPY_PY_MACHINE_UART (1)
3737
#define MICROPY_PY_MACHINE_HW_PWM (1)
3838
#define MICROPY_PY_MACHINE_HW_SPI (1)
39-
#define MICROPY_PY_MACHINE_RTC (1)
4039
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
4140
#define MICROPY_PY_MACHINE_I2C (1)
4241
#define MICROPY_PY_MACHINE_ADC (1)

ports/nrf/boards/wt51822_s4at/mpconfigboard.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232

3333
#define MICROPY_PY_MACHINE_UART (1)
3434
#define MICROPY_PY_MACHINE_HW_SPI (1)
35-
#define MICROPY_PY_MACHINE_RTC (0)
3635
#define MICROPY_PY_MACHINE_RTCOUNTER (1)
3736
#define MICROPY_PY_MACHINE_I2C (1)
3837
#define MICROPY_PY_MACHINE_ADC (1)

ports/nrf/modules/machine/rtc.c

Lines changed: 7 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -28,102 +28,32 @@
2828
* THE SOFTWARE.
2929
*/
3030

31-
#include <stdio.h>
32-
#include <string.h>
33-
34-
#include <time.h>
35-
#include <sys/time.h>
36-
37-
#include "py/nlr.h"
38-
#include "py/obj.h"
3931
#include "py/runtime.h"
4032
#include "modmachine.h"
4133

4234
#if MICROPY_PY_MACHINE_RTC
4335

44-
#include "ble_drv.h"
45-
#include "nrf_nvic.h"
46-
#include "nrfx_rtc.h"
4736
#include "py/mphal.h"
48-
#include "py/mperrno.h"
4937
#include "shared/timeutils/timeutils.h"
5038

51-
// Circuitpython
52-
53-
// common-hal/microcontroller/__init__.c
54-
55-
#if (BLUETOOTH_SD != 132) && (BLUETOOTH_SD != 140)
56-
nrf_nvic_state_t nrf_nvic_state = {0};
57-
#endif
58-
59-
static volatile uint32_t nesting_count = 0;
60-
static uint8_t is_nested_critical_region;
61-
62-
void common_hal_mcu_disable_interrupts() {
63-
if (nesting_count == 0) {
64-
// Unlike __disable_irq(), this should only be called the first time
65-
// "is_nested_critical_region" is sd's equivalent of our nesting count
66-
// so a nested call would store 0 in the global and make the later
67-
// exit call not actually reenable interrupts
68-
//
69-
// This only disables interrupts of priority 2 through 7; levels 0, 1,
70-
// and 4, are exclusive to softdevice and should never be used, so
71-
// this limitation is not important.
72-
sd_nvic_critical_region_enter(&is_nested_critical_region);
73-
}
74-
__DMB();
75-
nesting_count++;
76-
}
77-
78-
void common_hal_mcu_enable_interrupts() {
79-
if (nesting_count == 0) {
80-
// This is very very bad because it means there was mismatched disable/enables so we
81-
// crash.
82-
// reset_into_safe_mode(HARD_CRASH);
83-
}
84-
nesting_count--;
85-
if (nesting_count > 0) {
86-
return;
87-
}
88-
__DMB();
89-
sd_nvic_critical_region_exit(is_nested_critical_region);
90-
}
91-
92-
// port.c
93-
static volatile struct {
94-
uint32_t prefix;
95-
uint64_t overflowed_ticks;
96-
uint32_t suffix;
97-
} overflow_tracker __attribute__((section(".uninitialized")));
98-
const nrfx_rtc_t rtc_instance = NRFX_RTC_INSTANCE(2);
99-
100-
uint64_t port_get_raw_ticks(uint8_t *subticks) {
101-
common_hal_mcu_disable_interrupts();
102-
uint32_t rtc = nrfx_rtc_counter_get(&rtc_instance);
103-
uint64_t overflow_count = overflow_tracker.overflowed_ticks;
104-
common_hal_mcu_enable_interrupts();
105-
106-
if (subticks != NULL) {
107-
*subticks = (rtc % 32);
108-
}
109-
return overflow_count + rtc / 32;
110-
}
111-
112-
// RTC.C
39+
// Circuitpython RTC.C
11340

11441
#define RTC_OFFSET_CHECK_PREFIX 0x25ea7e2a
11542
#define RTC_OFFSET_CHECK_SUFFIX 0x2b80b69e
11643

11744
// This is the time in seconds since 2000 that the RTC was started.
11845
__attribute__((section(".uninitialized"))) static uint32_t rtc_offset[3];
11946

47+
12048
void rtc_get_time(timeutils_struct_time_t *tm) {
121-
uint64_t ticks_s = port_get_raw_ticks(NULL) / 1024;
49+
// uint64_t ticks_s = port_get_raw_ticks(NULL) / 1024;
50+
uint64_t ticks_s = mp_hal_ticks_ms() / 999;
12251
timeutils_seconds_since_2000_to_struct_time(rtc_offset[1] + ticks_s, tm);
12352
}
12453

12554
void rtc_set_time(timeutils_struct_time_t *tm) {
126-
uint64_t ticks_s = port_get_raw_ticks(NULL) / 1024;
55+
// uint64_t ticks_s = port_get_raw_ticks(NULL) / 1024;
56+
uint64_t ticks_s = mp_hal_ticks_ms() / 999;
12757
uint32_t epoch_s = timeutils_seconds_since_2000(
12858
tm->tm_year, tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec
12959
);
@@ -224,4 +154,4 @@ MP_DEFINE_CONST_OBJ_TYPE(
224154
locals_dict, &machine_rtc_locals_dict
225155
);
226156

227-
#endif
157+
#endif // MICROPY_PY_MACHINE_RTC

ports/nrf/mpconfigport.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@
205205
#endif
206206

207207
#ifndef MICROPY_PY_MACHINE_RTC
208-
#define MICROPY_PY_MACHINE_RTC (0)
208+
#define MICROPY_PY_MACHINE_RTC (1)
209209
#endif
210210

211211
#ifndef MICROPY_PY_TIME_TICKS

0 commit comments

Comments
 (0)
0