題:
為什麼Arduino定時器寄存器不為0?
Paul
2018-07-28 18:14:57 UTC
view on stackexchange narkive permalink

我正在嘗試使用計時器寄存器對Arduino Mega 2560進行一些計時。

以下代碼的輸出使我感到困惑:

 無效設置(){//建立串行連接Serial.begin(9600); while(!Serial){} //定時器1的打印控制寄存器Serial.println(TCCR1A); //輸出1個Serial.println(TCCR1B); //輸出3} void loop(){}  

為什麼 TCCR1A 等於 1 TCCR1B 等於 3 ?芯片的文檔說寄存器的初始值為零。我當然可以將它們設置為零,但是我想理解為什麼它如此工作。其他16位計時器(3、4和5)的值相同。

一 回答:
Majenko
2018-07-28 18:24:37 UTC
view on stackexchange narkive permalink

Arduino內核在啟動時執行操作。其中之一是配置準備好PWM操作的計時器。

以下是 wiring.c init()中的相關位:

  //將計時器1的預分頻因子設置為64 sbi(TCCR1B,CS11);#if F_CPU > = 8000000L sbi(TCCR1B,CS10);#endif#如果已定義(TCCR1A)&&定義了(WGM10) sbi(TCCR1A,WGM10);#endif  


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 4.0許可。
Loading...