打印

开发板-CY8CKIT-003 定时器中断时间不对

[复制链接]
3930|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我使用了定时器中断 发现定时时间不对 是我哪里弄错了么?我的配置如下





clock的配置


中断函数

主函数
extern uint8 timerflag;
void main()
{
    /* Place your initialization/startup code here (e.g. MyInst_Start()) */

// VDAC test
uint8 count = 0;
uint8 timercount = 0;
CYGlobalIntEnable;
VDAC8_Start();
VDAC8_SetSpeed(VDAC8_HIGHSPEED);
VDAC8_SetRange(VDAC8_RANGE_1V);

isr_1_Start();
Timer_1_Start();
while(1)
{
  
  if(timerflag)
  {
   // 100us
   timerflag = 0;
   timercount++;
   if(timercount == 10)
   {
    // 1ms
    timercount = 0;
    VDAC8_SetValue(sinArray[count]);   // 50/255* 4.080 = 0.8V
    count += 1;
    if(count == 256)
    count = 0;
    // T = 1ms * 256 = 256ms
   }
  }
  else
  {
   
  }
  
}

}
/* [] END OF FILE */


本来是为了实现一个正弦波的
按照我的设想 由于我的数组大小为256  周期应该为256ms
可是实际用示波器测试出来的波形周期约为70ms
这是为什么呢?
之前用定时器中断控制LED闪烁也发现了同样的问题
沙发
jxin| | 2012-10-12 15:42 | 只看该作者
中断用的不准确

使用特权

评论回复
板凳
PSoC小子| | 2012-10-12 15:52 | 只看该作者
1, 如果没有猜错的话,你的 Creator 应该是很老的版本了。 现在的最新版是 Creator 2.1 CP4, 建议使用最新版本进行学习。
2, 你的中断函数是不是截图接错了?有点看不懂。
3, 如果单纯为了学习,可以采用你的方法产生一个正弦波,但是要用到实际设计中最好使用 DMA+ VDAC 来产生正弦波,这样CPU就可以节省下来干别的事情而不是频繁的响应中断。 具体可以参考我我的帖子https://bbs.21ic.com/viewthread.php?tid=311265&highlight=

使用特权

评论回复
地板
wangku001wei|  楼主 | 2012-10-12 16:33 | 只看该作者
中断用的不准确
jxin 发表于 2012-10-12 15:42

恩 您好 貌似是因为我没有进行Timer TC 的中断源清理例程 Timer_1_ReadStatusRegister();     //Timer TC 的中断源清理

使用特权

评论回复
5
wangku001wei|  楼主 | 2012-10-12 16:34 | 只看该作者
1, 如果没有猜错的话,你的 Creator 应该是很老的版本了。 现在的最新版是 Creator 2.1 CP4, 建议使用最新版本进行学习。
2, 你的中断函数是不是截图接错了?有点看不懂。
3, 如果单纯为了学习,可以采用你的方法 ...
PSoC小子 发表于 2012-10-12 15:52

恩 我去下载看看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

44

帖子

1

粉丝