TIMER0¶
Timer¶
Provides a generic Timer core.
The Timer is implemented as a countdown timer that can be used in various modes: - Polling : Returns current countdown value to software. - One-Shot: Loads itself and stops when value reaches 0. - Periodic: (Re-)Loads itself when value reaches 0.
en register allows the user to enable/disable the Timer. When the Timer is enabled, it is automatically loaded with the value of load register.
When the Timer reaches 0, it is automatically reloaded with value of reload register.
The user can latch the current countdown value by writing to update_value register, it will update value register with current countdown value.
To use the Timer in One-Shot mode, the user needs to: - Disable the timer. - Set the load register to the expected duration. - (Re-)Enable the Timer.
To use the Timer in Periodic mode, the user needs to: - Disable the Timer. - Set the load register to 0. - Set the reload register to the expected period. - Enable the Timer.
For both modes, the CPU can be advertised by an IRQ that the duration/period has elapsed. (The CPU can also do software polling with update_value and value to know the elapsed duration)
Register Listing for TIMER0¶
Register |
Address |
---|---|
TIMER0_LOAD3¶
Address: 0xe0002800 + 0x0 = 0xe0002800
Bits 24-31 of TIMER0_LOAD. Load value when Timer is (re-)enabled.In One-Shot mode, the value written to this register specify the Timer’s duration in clock cycles.
TIMER0_RELOAD3¶
Address: 0xe0002800 + 0x10 = 0xe0002810
Bits 24-31 of TIMER0_RELOAD. Reload value when Timer reaches 0.In Periodic mode, the value written to this register specify the Timer’s period in clock cycles.
TIMER0_EN¶
Address: 0xe0002800 + 0x20 = 0xe0002820
Enable of the Timer.Set if to 1 to enable/start the Timer and 0 to disable the Timer
TIMER0_UPDATE_VALUE¶
Address: 0xe0002800 + 0x24 = 0xe0002824
Update of the current countdown value.A write to this register latches the current countdown value to value register.
TIMER0_VALUE3¶
Address: 0xe0002800 + 0x28 = 0xe0002828
Bits 24-31 of TIMER0_VALUE. Latched countdown value
TIMER0_EV_STATUS¶
Address: 0xe0002800 + 0x38 = 0xe0002838
This register contains the current raw level of the Event trigger. Writes to this register have no effect.
Field |
Name |
Description |
---|---|---|
[0] |
ZERO |
Level of the zero event |
TIMER0_EV_PENDING¶
Address: 0xe0002800 + 0x3c = 0xe000283c
When an Event occurs, the corresponding bit will be set in this register. To clear the Event, set the corresponding bit in this register.
Field |
Name |
Description |
---|---|---|
[0] |
ZERO |
1 if a zero event occurred. This Event is triggered on a falling edge. |
TIMER0_EV_ENABLE¶
Address: 0xe0002800 + 0x40 = 0xe0002840
This register enables the corresponding Events. Write a 0 to this register to disable individual events.
Field |
Name |
Description |
---|---|---|
[0] |
ZERO |
Write a 1 to enable the zero Event |