Always-On Timer words

The Always-On Timer is a timer on the RP2350 which can count time in milliseconds as long as a small amount of power is applied to the MCU. It can be driven by the XOSC, the LPOSC, or an external clock source tied to a GPIO at 1 kHz. It can also be synchronized by an external clock source tied to a GPIO at 1 Hz. By convention in zeptoforth it counts the number of milliseconds since 1 Jan 1970 00:00:00.000.

The Always-On Timer has the ability to trigger an alarm, which can wake up the RP2350 when it is in a low-power state.

Note that on power-up the Always-On Timer is initialized to enabled using the XOSC as a time source with a time of 0, i.e. 1 Jan 1970 00:00:00.000.

aon-timer

The aon-timer module contains the following words:

enable-timer

( – )

Enable the Always-On Timer.

disable-timer

( – )

Disable the Always-On Timer.

timer-enabled?

( – enabled? )

Get whether the Always-On Timer is enabled. On bootup this will return true.

time!

( D: time – )

Set the Always-On Timer time to a double-cell value in milliseconds, typically from 1 Jan 1970 00:00:00.000.

time@

( – D: time )

Get the time in milliseconds of the Always-On Timer as a double-cell value, typically from 1 Jan 1970 00:00:00.000.

clear-time

( – )

Clear the Always-On Timer.

enable-alarm

( – )

Enable the Always-On Timer alarm.

disable-alarm

( – )

Disable the Always-On Timer alarm.

alarm-enabled?

( – )

Get whether the Always-On Timer alarm is enabled. On power-up this is false.

alarm!

( D: time – )

Set the Always-On Timer alarm time to a double-cell value in milliseconds, typically from 1 Jan 1970 00:00:00.000.

alarm@

( – D: time )

Get the alarm time in milliseconds of the Always-On Timer as a double-cell value, typically from 1 Jan 1970 00:00:00.000.

enable-alarm-wake-up

( – )

Enable the Always-On Timer alarm wake-up from low power mode.

disable-alarm-wake-up

( – )

Disable the Always-On Timer alarm wake-up from low power mode.

alarm-wake-up-enabled?

( – )

Get whether the Always-On Timer alarm wake-up from low power mode is enabled. On power-up this is false.

lposc-timer

( – )

Switch to LPOSC as the source of the 1 kHz timer tick.

xosc-timer

( – )

Switch to XOSC as the source of the 1 kHz timer tick.

gpio-1khz-timer

( – )

Switch to a GPIO as the source of the 1 kHz timer tick.

sync-gpio-1hz-timer

( – )

Synchronize with a GPIO as the source of the second counter.

unsync-gpio-1hz-timer

( – )

Unsynchronize with a GPIO as the source of the second counter.

lposc-timer?

( – flag )

Get whether the timer is running from the LPOSC.

xosc-timer?

( – flag )

Get whether the timer is running from the XOSC.

gpio-1khz-timer?

( – flag )

Get whether the timer is running from a 1 kHz GPIO source.

sync-gpio-1hz-timer?

( – flag )

Get whether the timer is synchronized with a GPIO as the source of the second counter.

source-sel!

( gpio – )

Set a GPIO as a source selection.

source-sel-drive-lpck!

( gpio – )

Set a GPIO as a source selection to drive the 32 kHz low power clock.

source-sel@

( – gpio )

Get the source selection GPIO.

drive-lpck?

( – flag )

Get whether a GPIO is driving the low power clock.

x-invalid-source-sel-gpio

( – )

GPIO is not a valid GPIO for source selection exception