Код: Выделить всё
#include <mega16.h>
unsigned char pwm = 1;
unsigned char inc = 1; // inc = 0 - уменьшать, inc = 1 - увеличивать яркость
void timer2_init()
{
OCR2 = 1; //ШИМ почти выключена
// Быстрая ШИМ, переключать OC2 (PD7), увеличение таймера каждые 64 такта
TCCR2 |= (1 << WGM20) | ( 1 << WGM21) | (1 << COM21) | (1 << CS22);
}
void timer1_init()
{
OCR1A = 43200; //Прерывание 32 раза в секунду
TCCR1A = 0;
// СТС режим, увеличение таймера каждые 8 тактов
TCCR1B |= (1 << WGM12) | (1 << CS11);
// Прерывание по совпадению А таймера1
TIMSK |= (1 << OCIE1A);
SREG |= (1 << 7); //Разрешить прерывания
}
void io_init() //Инициализация портов ввода-вывода
{
DDRD |= 1 << 7;
PORTD = 0;
}
void main ()
{
timer2_init();
timer1_init();
io_init();
while(1)
{
}
}
// Заставляет лампу плавно загораться и гаснуть раз в 8 секунд
interrupt [TIMER1_COMPA_vect] void PWM_change(void)
{
if (inc == 1)
{
if (pwm < 254)
{
pwm++; // Увеличиваем яркость лампы, пока не достигнем максимума
OCR2 = pwm;
}
else
{
inc = 0;
}
}
else
{
if (pwm > 1)
{
pwm--; // Уменьшаем яркость лампы, пока не остигнем минимума
OCR2 = pwm;
}
else
{
inc = 1;
}
}
}Ошибку мне компилятор выдает следующую:
Error: C:\Users\Sahechka\Desktop\1\1.c(70): undefined symbol 'TIMER1_COMPA_vect'
interrupt [TIMER1_COMPA_vect] void PWM_change(void) // в этой строке проявляется ошибка
Очень жду совета =)


