mirror of
https://github.com/rvtr/ctr_firmware.git
synced 2025-10-31 07:51:08 -04:00
チックタイマーを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:
parent
70a45b43b5
commit
5d0ced34ea
@ -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
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user