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);
|
// osEnterTimerCallback(OSi_ALARM_TIMER, i_osAlarmHandler, NULL);
|
||||||
|
|
||||||
//---- set count and let timer be enable
|
//---- set count and let timer be enable
|
||||||
if (delta <= 0)
|
if (delta <= 1)
|
||||||
{
|
{
|
||||||
#ifdef SDK_ARM11
|
#ifdef SDK_ARM11
|
||||||
|
// ARM11は0設定禁止
|
||||||
timerCount = 1;
|
timerCount = 1;
|
||||||
#else // SDK_ARM9
|
#else // SDK_ARM9
|
||||||
// ARM9は0xFFFF設定禁止
|
// ARM9は~0設定禁止
|
||||||
timerCount = (u16)~1;
|
timerCount = (u16)~1;
|
||||||
#endif // SDK_ARM9
|
#endif // SDK_ARM9
|
||||||
}
|
}
|
||||||
else if (delta < OS_TICK_LO_LIMIT)
|
else if (delta < OS_TICK_LO_LIMIT)
|
||||||
{
|
{
|
||||||
#ifdef SDK_ARM11
|
#ifdef SDK_ARM11
|
||||||
timerCount = delta;
|
timerCount = delta - 1;
|
||||||
#else // SDK_ARM9
|
#else // SDK_ARM9
|
||||||
timerCount = (u16)(~delta);
|
timerCount = (u16)(~delta);
|
||||||
#endif // SDK_ARM9
|
#endif // SDK_ARM9
|
||||||
@ -95,7 +96,7 @@ static void i_osSetTimer(OSAlarm *alarm)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
#ifdef SDK_ARM11
|
#ifdef SDK_ARM11
|
||||||
timerCount = OS_TICK_LO_LIMIT;
|
timerCount = OS_TICK_LO_MASK;
|
||||||
#else // SDK_ARM9
|
#else // SDK_ARM9
|
||||||
timerCount = 0;
|
timerCount = 0;
|
||||||
#endif // SDK_ARM9
|
#endif // SDK_ARM9
|
||||||
|
|||||||
@ -73,7 +73,7 @@ void osInitTick(void)
|
|||||||
#ifdef SDK_ARM11
|
#ifdef SDK_ARM11
|
||||||
osStopTimer(OSi_TICK_TIMER);
|
osStopTimer(OSi_TICK_TIMER);
|
||||||
osEnableTimerReload(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
|
#else // SDK_ARM9
|
||||||
//---- setting timer
|
//---- setting timer
|
||||||
osSetTimerControl(OSi_TICK_TIMER, 0);
|
osSetTimerControl(OSi_TICK_TIMER, 0);
|
||||||
@ -93,7 +93,7 @@ void osInitTick(void)
|
|||||||
osEnableInterruptID(OSi_TICK_IE_TIMER_ID);
|
osEnableInterruptID(OSi_TICK_IE_TIMER_ID);
|
||||||
|
|
||||||
//---- need to reset
|
//---- need to reset
|
||||||
i_osNeedResetTimer = TRUE;
|
i_osNeedResetTimer = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -130,7 +130,7 @@ static void i_osCountUpTick(void)
|
|||||||
{
|
{
|
||||||
#ifdef SDK_ARM11
|
#ifdef SDK_ARM11
|
||||||
osStopTimer(OSi_TICK_TIMER);
|
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
|
#else // SDK_ARM9
|
||||||
osSetTimerControl(OSi_TICK_TIMER, 0);
|
osSetTimerControl(OSi_TICK_TIMER, 0);
|
||||||
#ifdef OS_TICK_USE_2TIMERS
|
#ifdef OS_TICK_USE_2TIMERS
|
||||||
@ -192,7 +192,7 @@ u64 osGetTick(void)
|
|||||||
|
|
||||||
#ifdef SDK_ARM11
|
#ifdef SDK_ARM11
|
||||||
// ARM11はダウンカウンタ、ARM9はアップカウンタの違いはここで補正される
|
// ARM11はダウンカウンタ、ARM9はアップカウンタの違いはここで補正される
|
||||||
countL = OS_TICK_LO_LIMIT - countL;
|
countL = OS_TICK_LO_MASK - countL;
|
||||||
#endif // SDK_ARM11
|
#endif // SDK_ARM11
|
||||||
countH = i_osTickCounter;
|
countH = i_osTickCounter;
|
||||||
|
|
||||||
|
|||||||
@ -65,7 +65,7 @@ extern void i_osSetTick( u64 );
|
|||||||
#ifdef SDK_ARM11
|
#ifdef SDK_ARM11
|
||||||
#define OS_TICK_CLOCK HW_CPU_CLOCK
|
#define OS_TICK_CLOCK HW_CPU_CLOCK
|
||||||
#define OS_TICK_PRESCALE 2
|
#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_MASK ((u32)(OS_TICK_HI_LSB-1))
|
||||||
#define OS_TICK_LO_MSB ((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)
|
#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_CLOCK HW_SYSTEM_CLOCK
|
||||||
#define OS_TICK_PRESCALE 64
|
#define OS_TICK_PRESCALE 64
|
||||||
#ifndef OS_TICK_USE_2TIMERS
|
#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_MASK ((u16)(OS_TICK_HI_LSB-1))
|
||||||
#define OS_TICK_LO_MSB ((u16)(OS_TICK_HI_LSB>>1))
|
#define OS_TICK_LO_MSB ((u16)(OS_TICK_HI_LSB>>1))
|
||||||
#else // OS_TICK_USE_2TIMERS
|
#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_MASK ((u32)(OS_TICK_HI_LSB-1))
|
||||||
#define OS_TICK_LO_MSB ((u32)(OS_TICK_HI_LSB>>1))
|
#define OS_TICK_LO_MSB ((u32)(OS_TICK_HI_LSB>>1))
|
||||||
#endif // OS_TICK_USE_2TIMERS
|
#endif // OS_TICK_USE_2TIMERS
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user