ATtiny84 pwm导致闪烁

时间:2015-04-26 12:15:31

标签: avr pwm attiny

我对avr编程很新,我试图简单地淡化3个独立连接到ATtiny84 pwm引脚的L​​ED。现在我的代码应该是两个不同LED的亮度。这是我的代码:

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
    DDRB   |= (1 << PB2);                   // PWM output on PB2
    TCCR0A = (1 << COM0A1) | (1 << WGM00);  // phase correct PWM mode
    OCR0A  = 0x10;                          // initial PWM pulse width

    TCCR0B = (1 << CS01);   // clock source = CLK/8, start PWM

    DDRA |= (1<<PA6);       // make OC1A (DDA6) PWM output pin
    TCCR1A = (1<<COM1A1) | (1<<COM1B0) | (1<<WGM00);  // Clear OC1A/OC1B on Compare Match (bit 7 + 6)
    // PWM, Phase Correct
    TCCR1B = (1<<CS02);   // 256 prescaler

    while(1)
    {
        // change PWM pulse width every 2 seconds
        _delay_ms(2000);
        OCR0A  = 0x10;
        OCR1A  = 0x10;
        _delay_ms(2000);
        OCR0A  = 0x30;
        OCR1A  = 0x30;
        _delay_ms(2000);
        OCR0A  = 0x50;
        OCR1A  = 0x50;
        _delay_ms(2000);
        OCR0A  = 0xA0;
        OCR1A  = 0xA0;
    }
}

代码主要是从互联网上复制而来,我并不是很了解初始化,但现在连接到PB2的led工作正常,但连接到PA6的LED工作不正常。 PA6 LED相应地改变了它的亮度,但它也快速地闪烁(大约每秒10次)。

首先我认为它与PA6有关,也是编程的MOSI引脚,但是断开程序员没有帮助。

任何帮助表示赞赏!此外,任何有关avr编程的提示都非常受欢迎!

1 个答案:

答案 0 :(得分:2)

如果您还没看过,这是您的微控制器的相关数据表:ATtiny84 Datasheet。查看TCCR *定时器配置寄存器可能会显示一些内容。