我想将PWM占空比从20%更改为70%。虽然虽然我更改了OCR1AL值。占空比保持不变。这是为什么?我应该更改其他内容吗?据我了解,OCR1A显示最高值时,它是我可以用来更改占空比的唯一参数(寄存器)。
.include "m16def.inc"
.cseg
PWM:
;input
ldi r16, 0x00
out DDRA, r16
;output
ldi r16, 0xff
out DDRD, r16
out PORTD, r16
ldi r20, 0xc1
out TCCR1A, r20
ldi r20, 0x01
out TCCR1B, r20
ldi r20, 0x00
out OCR1AH, r20
ldi r20, 0x33
out OCR1AL , r20
in r22, TIFR
andi r22, 0b00000100
out PORTD, r22
SW0:
in r23, PINA
cpi r23, 0b11111110
brne SW0
ldi r16, 0x82
in r17, OCR1AL
ADD r16,r17
out OCR1AL, r16
jmp SW0
ldi r16, 0x00
out PORTD, r16
我正在使用4MHz的AVR ATmega16
答案 0 :(得分:0)
您的问题与计时器设置有关。您应该先检查一下。 如果要使用16位计时器,则应使用以下配置来设置计时器设置: 类型:快速PWM前0xFFFF
您可以在微控制器数据表中找到如何配置计时器。
在此配置之后,如果您更改高8位,则占空比将发生变化。
我认为您的设置是针对8位定时器的,因此您必须将OCR1AL从0更改为255,以将占空比从0更改为100%。