有关PSOC3的定时器设置问题

[复制链接]
3867|5
 楼主| 错意_相逢 发表于 2010-11-4 12:16 | 显示全部楼层 |阅读模式
各位大侠,小弟在用PSOC3的定时器,出现了一下问题,望各位大侠指点一二:

想用定时器产生一个1ms的中断,用于生产系统时基。刚开始将定时器配置成Fixed Function模式,在这种模式下,中断结束后似乎没有清楚中断标志,然后会马上再次进入中断。跟CYPRESS的FAE咨询了一下,对方告之在现在的芯片上使用Fixed模式都会有现在的问题,说是11月份新出的IC会改进这个BUG。

然后FAE建议使用UDB模式,并且在中断程序中添加函数isr_1_GetState();按照FAE的指点修正后,发现现在的中断只在上电时响应一次。从中断中退出后,系统不再进入中断。

现向各位求救,望大侠们不吝赐教!

我将配置表和中断程序附上。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 错意_相逢 发表于 2010-11-4 12:22 | 显示全部楼层
有关isr_1_GetState();函数。

FAE说此函数能自动清楚中断标志,可我时钟没有看明白它是怎么自动清楚的。
/*******************************************************************************
* Function Name: isr_1_GetState
********************************************************************************
* Summary:
*   Gets the state (enabled, disabled) of the Interrupt.
*
*
* Parameters:
*   void.
*
*
* Return:
*   1 if enabled, 0 if disabled.
*
*
*******************************************************************************/
uint8 isr_1_GetState(void)
{
    /* Get the state of the general interrupt. */
    return (*isr_1_INTC_SET_EN & isr_1__INTC_MASK) ? 1:0;
}

看函数的代码就怎么简单,仅仅只有一个返回值,莫非其内部还有其他的机制能让程序在访问此变量的时候能自动清零?
这个问题也是百思不得其解。
其高人们顺便解释一下。
yufe 发表于 2010-11-4 14:31 | 显示全部楼层
确实很奇怪啊
jxin 发表于 2010-11-5 18:25 | 显示全部楼层
你应该用Timer_GetInterruptSource (void)或Timer_ReadStatusRegister (void)而不是isr_1_GetState(); 来清除现在的中断以允许下次timer 中断的到来
 楼主| 错意_相逢 发表于 2010-11-6 09:28 | 显示全部楼层
4# jxin

高人,搞定了,非常感谢
guoyt 发表于 2011-9-14 13:33 | 显示全部楼层
一语道破天机啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

4

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部