【问题标题】:ATtiny84 pwm led flickerATtiny84 pwm led 闪烁
【发布时间】:2015-04-26 12:15:30
【问题描述】:

我对 avr 编程相当陌生,我正在尝试简单地淡化 3 个独立连接到 ATtiny84 pwm 引脚的 LED。现在我有代码应该改变两个不同 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 编程的技巧!

【问题讨论】:

    标签: avr pwm attiny


    【解决方案1】:

    以防万一您还没有查看,这是您的微控制器的相关数据表:ATtiny84 Datasheet。查看 TCCR* 定时器配置寄存器可能会发现一些东西。

    【讨论】:

      猜你喜欢
      • 2022-06-11
      • 2015-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多