/*---------------------------------------------------------------------------* Project: CtrBrom - OS - include File: timer.h Copyright 2008 Nintendo. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo Company Ltd., and are protected by Federal copyright law. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. $Date:: $ $Rev$ $Author$ *---------------------------------------------------------------------------*/ #ifndef BROM_OS_TIMER_H_ #define BROM_OS_TIMER_H_ #ifdef __cplusplus extern "C" { #endif #include #include #include #include #ifndef SDK_ARM11 //---------------------------------------------------------------------- //---- pre-scaler typedef enum { OS_TIMER_PRESCALER_1 = (0UL << REG_OS_TM0CNT_H_PS_SHIFT), // x 1 OS_TIMER_PRESCALER_64 = (1UL << REG_OS_TM0CNT_H_PS_SHIFT), // x 64 OS_TIMER_PRESCALER_256 = (2UL << REG_OS_TM0CNT_H_PS_SHIFT), // x 256 OS_TIMER_PRESCALER_1024 = (3UL << REG_OS_TM0CNT_H_PS_SHIFT) // x 1024 } OSTimerPrescaler; //---- timer number typedef enum { OS_TIMER_0 = 0, OS_TIMER_1 = 1, OS_TIMER_2 = 2, OS_TIMER_3 = 3, OS_TIMER_NUM = 4 } OSTimer; //---- timer number ( if use 32 bit timer ) typedef enum { OS_TIMER32_01 = 0, OS_TIMER32_12 = 1, OS_TIMER32_23 = 2 } OSTimer32; //---- timer number ( if use 48 bit timer ) typedef enum { OS_TIMER48_012 = 0, OS_TIMER48_123 = 1 } OSTimer48; //================================================================================ // TIMER //================================================================================ /*---------------------------------------------------------------------------* Name: osInitTimer Description: Initialize Timers Arguments: None Returns: None *---------------------------------------------------------------------------*/ void osInitTimer( void ); /*---------------------------------------------------------------------------* Name: i_osSetTimerCount Description: set timer count Arguments: id timerNo count count value to be set to timer Returns: None *---------------------------------------------------------------------------*/ static inline void i_osSetTimerCount( OSTimer id, u16 count ) { SDK_ASSERT(OS_TIMER_0 <= id && id <= OS_TIMER_3); *((REGType16 *)((u32)REG_TM0CNT_L_ADDR + id * 4)) = count; } /*---------------------------------------------------------------------------* Name: i_osSetTimerControl Description: set timer control Arguments: id timerNo control control value to be set to timer Returns: None *---------------------------------------------------------------------------*/ static inline void i_osSetTimerControl( OSTimer id, u16 control ) { SDK_ASSERT(OS_TIMER_0 <= id && id <= OS_TIMER_3); *((REGType16 *)((u32)REG_TM0CNT_H_ADDR + id * 4)) = control; } /*---------------------------------------------------------------------------* Name: i_osStartTimer Description: set timer(s) and start Arguments: id timerNo count count value to be set to timer preScale preScale Returns: None *---------------------------------------------------------------------------*/ // // use 1 timer, 16bit counter, timer interrupt occurs by overflow // void i_osStartTimer( OSTimer id, u16 count, OSTimerPrescaler preScale ); // // use 2 timers, 32bit counter, timer interrupt occurs by overflow // void i_osStartTimer32( OSTimer32 id, u32 count, OSTimerPrescaler preScale ); // // use 3 timers, 48bit counter, timer interrupt occurs by overflow // void i_osStartTimer48( OSTimer48 id, u64 count, OSTimerPrescaler preScale ); // // use all 4 timers, 64bit counter, timer3 interrupt occurs by overflow // void i_osStartTimer64( u64 count, OSTimerPrescaler preScale ); /*---------------------------------------------------------------------------* Name: i_osStopTimer Description: stop timer(s) Arguments: id timerNo Returns: None *---------------------------------------------------------------------------*/ // // stop a timer // void i_osStopTimer( OSTimer id ); // // stop 2 timers // void i_osStopTimer32( OSTimer32 id ); // // stop 3 timers // void i_osStopTimer48( OSTimer48 id ); // // stop all 4 timers // void i_osStopTimer64( void ); #endif // SDK_ARM11 #ifdef __cplusplus } /* extern "C" */ #endif /* BROM_OS_TIMER_H_ */ #endif