チックタイマーを32bit使用できるように修正。

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_firmware@216 b871894f-2f95-9b40-918c-086798483c85
This commit is contained in:
nakasima 2009-01-27 06:34:57 +00:00
parent 70a45b43b5
commit 5d0ced34ea
3 changed files with 12 additions and 11 deletions

View File

@ -75,19 +75,20 @@ static void i_osSetTimer(OSAlarm *alarm)
// osEnterTimerCallback(OSi_ALARM_TIMER, i_osAlarmHandler, NULL);
//---- set count and let timer be enable
if (delta <= 0)
if (delta <= 1)
{
#ifdef SDK_ARM11
// ARM11は0設定禁止
timerCount = 1;
#else // SDK_ARM9
// ARM9は0xFFFF設定禁止
// ARM9は~0設定禁止
timerCount = (u16)~1;
#endif // SDK_ARM9
}
else if (delta < OS_TICK_LO_LIMIT)
{
#ifdef SDK_ARM11
timerCount = delta;
timerCount = delta - 1;
#else // SDK_ARM9
timerCount = (u16)(~delta);
#endif // SDK_ARM9
@ -95,7 +96,7 @@ static void i_osSetTimer(OSAlarm *alarm)
else
{
#ifdef SDK_ARM11
timerCount = OS_TICK_LO_LIMIT;
timerCount = OS_TICK_LO_MASK;
#else // SDK_ARM9
timerCount = 0;
#endif // SDK_ARM9

View File

@ -73,7 +73,7 @@ void osInitTick(void)
#ifdef SDK_ARM11
osStopTimer(OSi_TICK_TIMER);
osEnableTimerReload(OSi_TICK_TIMER);
osStartTimer(OSi_TICK_TIMER, OS_TICK_LO_LIMIT, OS_TICK_PRESCALE);
osStartTimer(OSi_TICK_TIMER, OS_TICK_LO_MASK, OS_TICK_PRESCALE);
#else // SDK_ARM9
//---- setting timer
osSetTimerControl(OSi_TICK_TIMER, 0);
@ -93,7 +93,7 @@ void osInitTick(void)
osEnableInterruptID(OSi_TICK_IE_TIMER_ID);
//---- need to reset
i_osNeedResetTimer = TRUE;
i_osNeedResetTimer = FALSE;
}
}
@ -130,7 +130,7 @@ static void i_osCountUpTick(void)
{
#ifdef SDK_ARM11
osStopTimer(OSi_TICK_TIMER);
osStartTimer(OSi_TICK_TIMER, OS_TICK_LO_LIMIT, OS_TICK_PRESCALE);
osStartTimer(OSi_TICK_TIMER, OS_TICK_LO_MASK, OS_TICK_PRESCALE);
#else // SDK_ARM9
osSetTimerControl(OSi_TICK_TIMER, 0);
#ifdef OS_TICK_USE_2TIMERS
@ -192,7 +192,7 @@ u64 osGetTick(void)
#ifdef SDK_ARM11
// ARM11はダウンカウンタ、ARM9はアップカウンタの違いはここで補正される
countL = OS_TICK_LO_LIMIT - countL;
countL = OS_TICK_LO_MASK - countL;
#endif // SDK_ARM11
countH = i_osTickCounter;

View File

@ -65,7 +65,7 @@ extern void i_osSetTick( u64 );
#ifdef SDK_ARM11
#define OS_TICK_CLOCK HW_CPU_CLOCK
#define OS_TICK_PRESCALE 2
#define OS_TICK_HI_SHIFT 28 // 2の累乗単位でチック管理するのであれば32は指定できない初期値0では割り込みが発生しないため、最大31
#define OS_TICK_HI_SHIFT 28 // <EFBFBD>Åå32
#define OS_TICK_LO_MASK ((u32)(OS_TICK_HI_LSB-1))
#define OS_TICK_LO_MSB ((u32)(OS_TICK_HI_LSB>>1))
#define OS_TICK_HI_LSB (1ULL<<OS_TICK_HI_SHIFT)
@ -74,11 +74,11 @@ extern void i_osSetTick( u64 );
#define OS_TICK_CLOCK HW_SYSTEM_CLOCK
#define OS_TICK_PRESCALE 64
#ifndef OS_TICK_USE_2TIMERS
#define OS_TICK_HI_SHIFT 16 // 初期値0でも割り込み発生
#define OS_TICK_HI_SHIFT 16 // <EFBFBD>Åå16
#define OS_TICK_LO_MASK ((u16)(OS_TICK_HI_LSB-1))
#define OS_TICK_LO_MSB ((u16)(OS_TICK_HI_LSB>>1))
#else // OS_TICK_USE_2TIMERS
#define OS_TICK_HI_SHIFT 32 // 初期値0でも割り込み発生
#define OS_TICK_HI_SHIFT 32 // <EFBFBD>Åå32
#define OS_TICK_LO_MASK ((u32)(OS_TICK_HI_LSB-1))
#define OS_TICK_LO_MSB ((u32)(OS_TICK_HI_LSB>>1))
#endif // OS_TICK_USE_2TIMERS