首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

s12xep中一个关于PIT定时中断的一个BUG

s12xep中一个关于PIT定时中断的一个BUG

PIT模块中用一个相同的8位计数器作中断定时时,PIT1中断定时若是PIT0的倍数,则PIT1的中断不会发生!但PIT0中断定时是PIT1的倍数时,两个中断都能发生!
我PIT模块的配置如下
void SetupPIT(void)
{
PITCE = 0x03; //enable PIT 0 and 1
PITMUX = 0x00; //MUX to micro couter0
PITMTLD0 = 99; //8 bits micro counter0
PITLD0 =3999; //PIT0 10ms
PITLD1=799; //PIT1 2ms there will be a problem when PIT1 times PIT0,
//but no problem when PIT0 times PIT1
PITCFLMT_PFLMT= 0x01; //load micro counter0
PITFLT = 0x03; //load counter0 and 1
PITINTE = 0x03; //enable INT
PITCFLMT_PITE = 1; //enable PIT module
}
我想请问这是我配置上有问题还是这个8位计数器和16位计数器的接口时本身存在的硬件BUG,谢谢!
好像PIT0清中断时会把PIT1的中断标志位清掉
2# killsister

我在dp512中发现,
用TFLG1_CnF = 1会把整个TFLG1清0,
而用TFLG1 = TFLG1_CnF_MASK就没问题
返回列表