📄 ttimer.c.svn-base
字号:
/**
* This code and information is part of Trident DPTV API (TDAPI)
*
* Copyright (C) Trident Multimedia Technologies (Shanghai) Co., Ltd.
* 2005 All rights reserved.
*
* This file contains functions related to M16C/60 timer.
*
* Revision:
* 06/03/2005 Created by Lewis, Archie.
*
*/
#include "tdefs.h"
#include "tio.h"
#include "ttimer.h"
#include "ioctrl.h"
Gdata Dword t_dwTimerCount;
#ifdef _CX32_LCD_MACHINE_
extern Byte tdHWI2CErrorTimer;
#endif
TimerMS s_uTimer20Ms;
#define MAGICNUM 10 // shall be adjusted later for more accurate
Void tdInitTimer(Word wOSCKHz)
{
// udf = 0;
TA01RUN = 0x00;
#ifdef _USE_SECOND_CC_
#endif
TA23RUN = 0x00;
TA45RUN = 0x00;
TB0RUN = 0x00;
TA01MOD = 0x03;//0x41
#ifdef _USE_SECOND_CC_
#endif
TA23MOD = 0x05;
TA45MOD = 0xdd;
TB0MOD = 0x35;
TA1FFCR = 0x00;
#ifdef _USE_SECOND_CC_
#endif
TA3FFCR = 0x00;
TA5FFCR = 0x0b;
TB0FFCR = 0xC3;
TA0REG = (((Dword)wOSCKHz - MAGICNUM)/128 -1)& 0xFF;
//TA1REG = (((Word)wOSCKHz_int*20 - MAGICNUM_int)/8 -1)>> 8;
TA1REG = 20;
#ifdef _USE_SECOND_CC_
#endif
TA2REG = 0x01;
TA3REG = 0xFF;
TA4REG = (((Dword)wOSCKHz*8/25 - MAGICNUM)/8 -1)& 0xFF;
TA5REG = (((Dword)wOSCKHz*8/25 - MAGICNUM)/8 -1)>> 8;
TB0RG0L = (((Dword)wOSCKHz*20 - MAGICNUM)/8 -1)& 0xFF;
TB0RG0H = (((Dword)wOSCKHz*20 - MAGICNUM)/8 -1)>> 8;
INTTA0 = INT_PRIORITY_B; //TimerA01, 1ms timer
INTTA1 = INT_PRIORITY_C;
#ifdef _USE_SECOND_CC_
#endif
INTTA2 = INT_PRIORITY_OFF; //TimerA23, 4ms timer
INTTA3 = INT_PRIORITY_OFF;
INTTA4 = INT_PRIORITY_OFF; //TimerA45
INTTA5 = INT_PRIORITY_OFF;
INTTB00 = INT_PRIORITY_OFF; //TimerB0, 20ms timer
TA01RUN = 0x07;
#ifdef _USE_SECOND_CC_
#endif
TA23RUN = 0x05;
TA45RUN = 0x07;
TB0RUN = 0x0d;
}
void tdTimerA0Service(Void) //tdTimer0Service(Void) //TA01
{
t_dwTimerCount++;
tdIR1msTimer();
tdCallBack1msTimer();
}
void tdTimerA1Service(Void) //tdTimer2Service(Void) //TA23
{
/*#ifdef _USE_SECOND_CC_
tdCallBack4msTimer();
#endif */
tdCallBack20msTimer();
#ifdef _CX32_LCD_MACHINE_
tdHWI2CErrorTimer++;
#endif
}
void tdTimerA45Service(Void) //tdTimer3Service(Void) //TA45
{
/*#ifdef _SYSTEM_SUPPORT_TTX_
tdLine6TimerISR(32);
#endif */
}
void tdTimerB0Service(Void) //tdTimer1Service(Void) //TB0
{
// tdCallBack20msTimer();
// tdHWI2CErrorTimer++;
}
Byte tdGetTimerBCurrentCount(Void)
{
Byte TB0CurrentVal;
TB0CP0I = 0;
TB0CurrentVal = TB0CP0H;
return TB0CurrentVal;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -