谁能解释一下这个灵异现象???
32U4(Leonardo)5V工作电压USB供电,想测试一下timer1的CTC模式,按下图公式算出1KHz对应的各寄存器参数:代码如下
volatile unsigned long counter = 0;
volatile boolean tick = false;
volatile unsigned long time_end = 0;
unsigned long time_start = 0;
void setup(){
delay(5000);
TCCR1A = 0;
TCCR1B = 0b00001001;
TCCR1C = 0;
OCR1A = 7999; // 1000
//OCR1A = 15999; //500
TIMSK1 = 0x02;
sei();
time_start = millis();
}
void loop(){
if (tick)
{
Serial.print("time_start = ");
Serial.print(time_start);
Serial.print(", ");
Serial.print("time_end = ");
Serial.print(time_end);
Serial.print(", ");
Serial.print("minus = ");
Serial.print(time_end - time_start);
Serial.print(", ");
Serial.print("counter = ");
Serial.println(counter);
tick = false;
}
}
ISR(TIMER1_COMPA_vect){
cli();
if (counter++ == 500)
{
time_end = millis();
tick = true;
TCCR1B = 0;
}
sei();
}
运行结果如下:
time_start = 5000, time_end = 5250, minus = 250, counter = 501
这TM不是2KHz了吗?
谁能告诉我这是为什么?难道Atmel的手册写错了? 没错,是你没看明白,那个频率是波的频率,波的频率要/2,就是公式里的2。
页:
[1]