gpt4 book ai didi

c - 为什么 atmega16a 的 timer0 的频率是 46.86 kHz 而不是 12 MHz?

转载 作者:太空宇宙 更新时间:2023-11-04 07:50:34 25 4
gpt4 key购买 nike

最近新买了一个USB示波器,想测avr timer0的频率。有一个 12 MHz 晶体振荡器连接到 atmega,timer0 设置为没有预分频器的快速 PWM 模式。这是代码:

#include <avr/io.h>

int main(void)
{
DDRB = 0x08;
TCCR0 |= (1<<WGM00)|(1<<WGM01)|(1<<COM01)|(1<<CS00);
OCR0 = 128;
while(1){

}
}

但在示波器上频率等于 46.90 kHz。 enter image description here

fuse 位在下一张图片上: enter image description here

但如果我延迟 1 毫秒闪烁 LED,我得到的频率约为 2 MHz。

那么,请向我解释发生了什么,以及为什么计时器会出错(或者我错在哪里)。

最佳答案

频率对我来说似乎是正确的。如果您的时钟是 12MHz 并且您有一个 8 位 PWM,您的 PWM 频率实际上是 12MHz/256 = 46.875kHz

关于c - 为什么 atmega16a 的 timer0 的频率是 46.86 kHz 而不是 12 MHz?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54162455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com