我正在學習Assembly,並且發現定時器/計數器的部分讓我很困惑...在課堂上,我們使用TC1的週期測量示例在AVR(metaAVR 328P)中:在AVR(彙編)中使用TC1測量未知信號的週期
使用TC1來測量未知信號的週期。已知該時段短於128毫秒。假設時鐘頻率是16 MHz。使用時鐘週期數作爲週期的單位。
給我們的解決方案是:
由於輸入捕獲寄存器是16位,即可以在沒有預分頻器被測量的信號的最長週期爲:2^16÷16 MHz = 4.096毫秒。
要衡量一個週期等於128毫秒,我們有兩個選擇:
設置預分頻係數爲1,跟蹤倍定時器計數器溢出的數量。
設置預比例因子爲64,並且不記錄定時器計數器溢出的次數。
我們將使用的64
我得到的是可以測量的最長週期是4.096毫秒的預分頻係數。但是這兩種選擇從哪裏來?如果我們將prescalor設置爲1,則時鐘頻率將爲16 MHz,那麼會發生什麼?如果我們將其設置爲64,時鐘週期將爲16MHz/64 = 250 000 Hz = 250 KHz,那麼會發生什麼?我只是沒有看到設置頻率如何跟蹤定時器計數器溢出的次數......爲什麼我們需要預先調整頻率?我們試圖找出時鐘週期數,所以
clock cyles *預分頻後的時鐘頻率=週期?
上面的公式是正確的嗎?在這一點上,我覺得我很困惑自己,所以任何暗示將非常感激。