【问题标题】:Timer in Counter Mode using arduino mega 2560使用arduino mega 2560在计数器模式下的定时器
【发布时间】:2014-01-06 13:10:33
【问题描述】:

我正在使用 arduino mega 2560,我想使用定时器 1 的计数器,我在引脚 11 上为定时器 1 计数器提供了 100 Hz 的时钟,我还配置了定时器 1 寄存器 B 并设置了 CS(时钟选择)位,但由于某种原因它不起作用。以下是我的代码,如果有人可以在这里指出我的错误或修改代码以更正它或只是提供任何建议,将不胜感激。我也附上了文件。

int val;
void setup()
{
startCounting();
}

void loop()
{ 
  val =TCNT1;
  Serial.println(val);
}

void startCounting()  //Encoder FrequencyCounter Start
{
/*  Timer 1 would be used for frequency counter. Using event counter mode of timer.*/ 

TCNT1=0x00;          //Reset Timer 1 Counter.
TCCR1A=0x00;
TCCR1B=0x07;       // To set all pins CSn2,CSn1,CSn0 to use external clock source on Tn Pin. Clock on rising edge.
                                    //pin 11 for timer 1 will be used as an external clock.
}

【问题讨论】:

    标签: timer arduino avr atmega


    【解决方案1】:

    正如您所说并且 CSn2:0 = 7 您正在尝试使用外部时钟源。然而,此模式下的输入引脚不是 OCnA(OC1A=引脚 11)而是 Tn,它将驱动 CLK(Tn) 并增加 TCNTn。

    不幸的是,在 ArduinoMega 上,板上只有 T0(D38) 和 T5(D47) 实现了头。其余的 T1、2、3 和 4 不是从芯片本身路由的。

    !不要乱用 Timer0。 核心库使用它。

    您可以尝试移至 Timer5 并使用 D47 上的 T5 作为 100Hz 输入。

    如果您尝试创建频率计数器,我建议您使用输入捕获。示例见InputCapture.ino

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多