如何更改PWM AVR的占空比(组件-无C)

时间:2019-05-30 08:00:49

标签: assembly timer avr pwm

我想将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

1 个答案:

答案 0 :(得分:0)

您的问题与计时器设置有关。您应该先检查一下。 如果要使用16位计时器,则应使用以下配置来设置计时器设置: 类型:快速PWM前0xFFFF

您可以在微控制器数据表中找到如何配置计时器。

在此配置之后,如果您更改高8位,则占空比将发生变化。

我认为您的设置是针对8位定时器的,因此您必须将OCR1AL从0更改为255,以将占空比从0更改为100%。