我的目标是从我的 ATtiny84 输出 1ms 高、50hz 的 PWM 信号。时钟以 1mhz 运行,因此我设置了比较输出模式,以便输出引脚应清除 19000 个时钟滴答并设置为 1000。
该设备以 5V 供电,我有一个示波器从引脚 A5 (OC1B) 读取平坦的 5V 输出,没有调制。我的代码在这里:
#include <avr\io.h>
void init_pwm_generator()
{
PORTA &= ~(1 << (PORTA5));
ICR1 = 20000;
TCCR1A = (1<<COM1B1) | (1<COM1B0) | (1<<WGM11);
TCCR1B = (1<<WGM13) | (1<<WGM12) | (1<<CS10);
}
int main(void)
{
DDRA |= (1 << (DDA5));
init_pwm_generator();
while(1)
{
OCR1B = ICR1 - 1000;
}
}
我不明白为什么这不起作用!