TIMER Registers: Difference between revisions
Created page with "== Registers == {| class="wikitable" border="1" ! NAME ! PHYSICAL ADDRESS ! WIDTH |- | REG_TM0VAL | 0x10003000 | 2 |- | REG_TM0CNT | 0x10003002 | 2 |- | REG_TM1VAL | 0x1000300..." |
Kernel9 treats F/64 as (ARM 9 clockrate)/128 |
||
(7 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
There are 4 timers. These timers run at a frequency of 67,027,964.0 ± 2<sup>-32</sup> Hz (i.e. exactly half the ARM9 clock frequency). | |||
= Registers = | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! | ! Old3DS | ||
! | ! Name | ||
! | ! Address | ||
! Width | |||
! Used by | |||
|- | |- | ||
| | | style="background: green" | Yes | ||
| | | [[#TIMER_VAL|TIMER_VAL]](n) | ||
| 0x10003000 + 4*n | |||
| 2 | | 2 | ||
| Boot9, Kernel9 | |||
|- | |- | ||
| | | style="background: green" | Yes | ||
| | | [[#TIMER_CNT|TIMER_CNT]](n) | ||
| | | 0x10003002 + 4*n | ||
[[ | |||
| | |||
| 2 | | 2 | ||
| Boot9, Kernel9 | |||
|} | |} | ||
= | == TIMER_VAL == | ||
Writing to | Writing to TIMER_VAL loads a starting value for one of the 4 timers, while reading it will show the current timer value. | ||
= | == TIMER_CNT == | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! | ! Bit | ||
! | ! Description | ||
|- | |- | ||
| 0 | | 1-0 | ||
| Prescaler select (0=F/1, 1=F/64, 2=F/256, 3=F/1024) | | Prescaler select (0=F/1, 1=F/64, 2=F/256, 3=F/1024) | ||
|- | |- | ||
Line 52: | Line 36: | ||
| Count-up (0=Disabled, 1=Enabled) | | Count-up (0=Disabled, 1=Enabled) | ||
|- | |- | ||
| 3 | | 5-3 | ||
| Not used | | Not used | ||
|- | |- | ||
Line 62: | Line 46: | ||
|} | |} | ||
= Count-up = | == Count-up == | ||
When count-up is enabled, the timer value will increase every time the previous timer overflows. | When count-up is enabled, the timer value will increase every time the previous timer overflows. |