libnds
|
Contains defines, macros and functions for ARM7 and ARM9 timer operation. It also contains a simplified API for timer use and some cpu timing functions. More...
#include <nds/ndstypes.h>
Macros | |
#define | BUS_CLOCK (33513982) |
the speed in which the timer ticks in hertz. | |
#define | TIMER0_CR (*(vu16*)0x04000102) |
Same as TIMER_CR(0). | |
#define | TIMER0_DATA (*(vu16*)0x04000100) |
Same as TIMER_DATA(0). | |
#define | TIMER1_CR (*(vu16*)0x04000106) |
Same as TIMER_CR(1). | |
#define | TIMER1_DATA (*(vu16*)0x04000104) |
Same as TIMER_DATA(1). | |
#define | TIMER2_CR (*(vu16*)0x0400010A) |
Same as TIMER_CR(2). | |
#define | TIMER2_DATA (*(vu16*)0x04000108) |
Same as TIMER_DATA(2). | |
#define | TIMER3_CR (*(vu16*)0x0400010E) |
Same as TIMER_CR(3). | |
#define | TIMER3_DATA (*(vu16*)0x0400010C) |
Same as TIMER_DATA(3). | |
#define | TIMER_CASCADE (1<<2) |
When set will cause the timer to count when the timer below overflows (unavailable for timer 0). | |
#define | TIMER_CR(n) (*(vu16*)(0x04000102+((n)<<2))) |
Returns a dereferenced pointer to the data register for timer control Register. More... | |
#define | TIMER_DATA(n) (*(vu16*)(0x04000100+((n)<<2))) |
Returns a dereferenced pointer to the data register for timer number "n". More... | |
#define | TIMER_ENABLE (1<<7) |
Enables the timer. | |
#define | TIMER_FREQ(n) (-BUS_CLOCK/(n)) |
A macro that calculates TIMER_DATA(n) settings for a given frequency of n. will calculate the correct value for TIMER_DATA(n) given the frequency in hertz (number of times the timer should overflow per second). More... | |
#define | TIMER_FREQ_1024(n) (-(BUS_CLOCK>>10)/(n)) |
A macro that calculates TIMER_DATA(n) settings for a given frequency of n. will calculate the correct value for TIMER_DATA(n) given the frequency in hertz (number of times the timer should overflow per second). More... | |
#define | TIMER_FREQ_256(n) (-(BUS_CLOCK>>8)/(n)) |
A macro that calculates TIMER_DATA(n) settings for a given frequency of n. will calculate the correct value for TIMER_DATA(n) given the frequency in hertz (number of times the timer should overflow per second). More... | |
#define | TIMER_FREQ_64(n) (-(BUS_CLOCK>>6)/(n)) |
A macro that calculates TIMER_DATA(n) settings for a given frequency of n. will calculate the correct value for TIMER_DATA(n) given the frequency in hertz (number of times the timer should overflow per second). More... | |
#define | TIMER_IRQ_REQ (1<<6) |
Causes the timer to request an Interrupt on overflow. | |
Enumerations |
Functions | |
u32 | cpuEndTiming () |
ends cpu Timing. More... | |
u32 | cpuGetTiming () |
returns the number of ticks which have elapsed since cpuStartTiming. More... | |
void | cpuStartTiming (int timer) |
begins cpu Timing using two timers for 32bit resolution. More... | |
u16 | timerElapsed (int timer) |
returns the ticks elapsed since the last call to timerElapsed(). More... | |
u16 | timerPause (int timer) |
pauses the specified timer. More... | |
void | timerStart (int timer, ClockDivider divider, u16 ticks, VoidFn callback) |
start a hardware timer. Callback is tied directly to interrupt table and called directly, resulting in less latency than the attached timer. More... | |
u16 | timerStop (int timer) |
Stops the specified timer. More... | |
static u16 | timerTick (int timer) |
returns the raw ticks of the specified timer. More... | |
static void | timerUnpause (int timer) |
unpauses the specified timer. More... | |
Contains defines, macros and functions for ARM7 and ARM9 timer operation. It also contains a simplified API for timer use and some cpu timing functions.
The timers are fed with a 33.513982 MHz source on the ARM9 and ARM7.
#define TIMER_CR | ( | n | ) | (*(vu16*)(0x04000102+((n)<<2))) |
Returns a dereferenced pointer to the data register for timer control Register.
Example Usage: TIMER_CR(x) = TIMER_ENABLE | ClockDivider_64;
Possible bit defines:
#define TIMER_DATA | ( | n | ) | (*(vu16*)(0x04000100+((n)<<2))) |
Returns a dereferenced pointer to the data register for timer number "n".
TIMER_DATA(n) when set will latch that value into the counter. Every time the counter rolls over, TIMER_DATA(0) will return to the latched value. This allows you to control the frequency of the timer using the following formula:
TIMER_DATA(x) = -(BUS_CLOCK/(freq * divider));
Example Usage: TIMER_DATA(0) = value; were 0 can be 0 through 3 and value is 16 bits.
#define TIMER_FREQ | ( | n | ) | (-BUS_CLOCK/(n)) |
A macro that calculates TIMER_DATA(n) settings for a given frequency of n. will calculate the correct value for TIMER_DATA(n) given the frequency in hertz (number of times the timer should overflow per second).
Example Usage:
//calls the timerCallBack function 5 times per second. timerStart(0, ClockDivider_1024, TIMER_FREQ_1024(5), timerCallBack);
Max frequency is: 33554432Hz Min frequency is: 512Hz
#define TIMER_FREQ_1024 | ( | n | ) | (-(BUS_CLOCK>>10)/(n)) |
A macro that calculates TIMER_DATA(n) settings for a given frequency of n. will calculate the correct value for TIMER_DATA(n) given the frequency in hertz (number of times the timer should overflow per second).
Example Usage:
//calls the timerCallBack function 5 times per second. timerStart(0, ClockDivider_1024, TIMER_FREQ_1024(5), timerCallBack);
Max frequency is: 32768Hz Min frequency is: 0.5Hz
#define TIMER_FREQ_256 | ( | n | ) | (-(BUS_CLOCK>>8)/(n)) |
A macro that calculates TIMER_DATA(n) settings for a given frequency of n. will calculate the correct value for TIMER_DATA(n) given the frequency in hertz (number of times the timer should overflow per second).
Example Usage:
//calls the timerCallBack function 5 times per second. timerStart(0, ClockDivider_1024, TIMER_FREQ_1024(5), timerCallBack);
Max frequency is: 131072Hz Min frequency is: 2Hz
#define TIMER_FREQ_64 | ( | n | ) | (-(BUS_CLOCK>>6)/(n)) |
A macro that calculates TIMER_DATA(n) settings for a given frequency of n. will calculate the correct value for TIMER_DATA(n) given the frequency in hertz (number of times the timer should overflow per second).
Example Usage:
//calls the timerCallBack function 5 times per second. timerStart(0, ClockDivider_1024, TIMER_FREQ_1024(5), timerCallBack);
Max frequency is: 524288Hz Min frequency is: 8Hz
enum ClockDivider |
u32 cpuEndTiming | ( | ) |
ends cpu Timing.
u32 cpuGetTiming | ( | ) |
returns the number of ticks which have elapsed since cpuStartTiming.
void cpuStartTiming | ( | int | timer | ) |
begins cpu Timing using two timers for 32bit resolution.
timer | The base hardware timer to use (0 - 2). |
u16 timerElapsed | ( | int | timer | ) |
returns the ticks elapsed since the last call to timerElapsed().
timer | The hardware timer to use (0 - 3). |
u16 timerPause | ( | int | timer | ) |
pauses the specified timer.
timer | The hardware timer to use (0 - 3). |
void timerStart | ( | int | timer, |
ClockDivider | divider, | ||
u16 | ticks, | ||
VoidFn | callback | ||
) |
start a hardware timer. Callback is tied directly to interrupt table and called directly, resulting in less latency than the attached timer.
timer | The hardware timer to use (0 - 3). |
divider | The timer channel clock divider (clock will tick at 33.513982 MHz / divider) |
ticks | The number of ticks which must elapse before the timer overflows |
callback | The callback to be called when the timer expires (if null, no IRQ will be generated by the timer) |
u16 timerStop | ( | int | timer | ) |
Stops the specified timer.
timer | The hardware timer to use (0 - 3). |
|
inlinestatic |
returns the raw ticks of the specified timer.
timer | The hardware timer to use (0 - 3). |
|
inlinestatic |
unpauses the specified timer.
timer | The hardware timer to use (0 - 3). |