Код: Выделить всё
#define F_CPU 8000000UL // atmega48 8 MHz
#include <avr/io.h>
#include <util/delay.h>
#define msleep _delay_ms
void pwm_init()
{
// switch off voltage on every D and B ports
PORTB = 0x00;
PORTD = 0x00;
// enable PD5, PD6, PD3 and PB3 for PWM output
DDRB = 0x08;
DDRD = 0x68;
// setup timers for hardware pwm
TCCR0A |= (1 << COM1B1) | (0 << COM1B0) | (1 << WGM10) | (0 << WGM11) | (1 << COM1A1) | (0 << COM1A0);
TCCR0B |= (1 << WGM12) | (0 << WGM13) | (1 << CS10);
TCCR2A |= (1 << COM1B1) | (0 << COM1B0) | (1 << WGM10) | (0 << WGM11) | (1 << COM1A1) | (0 << COM1A0);
TCCR2B |= (1 << WGM12) | (0 << WGM13) | (1 << CS10);
}
int main(void)
{
pwm_init();
while(1)
{
OCR0A = OCR0B = OCR2A = OCR2B = 0x00;
msleep(1000);
OCR0A = OCR0B = OCR2A = OCR2B = 0x3F;
msleep(1000);
OCR0A = OCR0B = OCR2A = OCR2B = 0x7F;
msleep(1000);
OCR0A = OCR0B = OCR2A = OCR2B = 0xFF;
msleep(1000);
}
return 0;
}


