我使用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.
}发布于 2014-01-06 22:15:35
当您声明并拥有CSn2:0 =7时,您正在尝试使用外部时钟源。但是,这种模式下的输入引脚不是OCnA (OC1A=pin 11),而是Tn,后者将驱动CLK(Tn)和增量TCNTn。
不幸的是,在ArduinoMega上只有T0(D38)和T5(D47)是在主板上实现的。其余的T1,2,3和4不是从芯片本身路由。
!别惹Timer0。核心库使用它。
您可以尝试移动到Timer5,并在D47上使用T5作为100 the的输入。
如果您试图创建一个频率计数器,我建议使用输入捕获。有关示例,请参见InputCapture.ino
https://stackoverflow.com/questions/20950769
复制相似问题