Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Timer 计数器模式下使用arduino mega 2560的定时器_Timer_Arduino_Avr_Atmega - Fatal编程技术网

Timer 计数器模式下使用arduino mega 2560的定时器

Timer 计数器模式下使用arduino mega 2560的定时器,timer,arduino,avr,atmega,Timer,Arduino,Avr,Atmega,我使用的是arduino mega 2560,我想使用定时器1的计数器,我已经为定时器1计数器的引脚11提供了100 Hz的时钟,我还配置了定时器1寄存器B,并设置了CS(时钟选择)位,但由于某种原因它不工作。下面是我的代码,如果有人能在这里指出我的错误或修改代码来纠正它或只是给出任何建议,我将不胜感激。我还附上了文件 int val; void setup() { startCounting(); } void loop() { val =TCNT1; Serial.println

我使用的是arduino mega 2560,我想使用定时器1的计数器,我已经为定时器1计数器的引脚11提供了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.
}

当您声明CSn2:0=7时,您正试图使用外部时钟源。然而,该模式下的输入引脚不是OCnA(OC1A=引脚11),而是Tn,它将驱动CLK(Tn)并增加TCNTn

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

!!不要弄乱计时器。核心库使用它

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

如果您试图创建一个频率计数器,我建议使用输入捕获。有关示例,请参见