极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15397|回复: 5

Arduino 的输入捕捉(ICP)怎么不行呢?

[复制链接]
发表于 2012-8-10 13:27:45 | 显示全部楼层 |阅读模式
想用Arduino的PB0口来读取PWM的电平变化,以便计算信号频率。但是按照寄存器设置后,发现进不了中断。哪里出了错误?ICP1这个口,对于触发的电平有要求吗?datasheet上没有说呢?
下面是例程,很简单,就是循环然后等中断:
  1. int i=0;

  2. /* Initial Function*/
  3. void ICPinit(){
  4.   SREG = 0;
  5.   TCCR1B = (1 << CS12) | (1 << CS10);  //  1/1024
  6.   TCCR1B = (0 << ICNC1) | (1 << ICES1);  // Enable Noise Canclation & Set the Rising edg detect
  7.   TIMSK1 = (1 << ICIE1);  // Enable the Input Capture Interrupt
  8.   ICR1 = 0;  // Clear the ICR
  9.   TCNT1 = 0;  // Clear Counter1
  10.   SREG = 0x80;  // Enable the Total Interrupt
  11. }

  12. void setup(){
  13.   pinMode(8,INPUT);           // 这是对应Mega328的12#脚
  14.   ICPinit();
  15. }

  16. void loop(){
  17.   while(1){
  18.     digitalWrite(13,HIGH);
  19.   }
  20. }

  21. #pragma interrupt_handler timer1_CAPT:11
  22. void timer1_CAPT(void)
  23. {
  24.   digitalWrite(13,LOW);
  25.   i = ICR1;
  26.   TCNT1 = 0;
  27. }
复制代码
回复

使用道具 举报

发表于 2012-8-10 15:09:48 | 显示全部楼层
lz既然已经用avr的寄存器操作了,何必对GPIO的操作还使用arduino呢...
不知道你是否用jtag,发现进不了中断的?

我在msp430用过捕获模式, 计数器要设置为连续计数,不能设为计数至某个值然后归零,否则的话,没有设置计数基准的话,计数器值永远是0....
你可以看下 会不会是这个问题

我不懂avr ,只能提供给你一个可能的思路了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-10 16:48:13 | 显示全部楼层
本帖最后由 Freeman 于 2012-8-10 16:55 编辑
┏ωǒ┛菰独 发表于 2012-8-10 15:09
lz既然已经用avr的寄存器操作了,何必对GPIO的操作还使用arduino呢...
不知道你是否用jtag,发现进不了中断的 ...


谢谢你的回复  手头没有jtag仿真器啊。所以想用13脚的LED来监测一下。 我也是新手,觉得arduino还是方便些的,只是偶然用到这个功能,才看了看寄存器的操作。
关于第二段话,我也在奇怪这个问题,到底TCNT2有没有开始计数呢,每次读出来都是0,但是datasheet上也没找到特别的话啊,我就设置了WGM12:0 = 0  这三位规定它工作模式为normal,不就应该可以工作了吗?还非要打开计数器溢出中断它才会开始计数吗?
谢谢您的帮助
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-11 02:27:01 | 显示全部楼层
搞定了……
回复 支持 反对

使用道具 举报

发表于 2012-9-7 15:02:06 | 显示全部楼层
Freeman 发表于 2012-8-11 02:27
搞定了……

可否把搞定了的程序贴出来大家学习下
回复 支持 反对

使用道具 举报

发表于 2012-9-19 11:00:33 | 显示全部楼层
关注,楼主或是谁能把解决思路说说吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-7 05:36 , Processed in 0.058851 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表