Пытаюсь реализовать следующий эффект: при смене цифр одна плавно гаснет, вторая плавно появляется.
С общей регулировкой яркости проблем вообще нет. Все красиво, нормально. Алгоритм общей регулировки такой
Код: Выделить всё
// Timer2 overflow interrupt service routine
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
switch (a) {
case 0:
Cathode_0_on ();
print (a1);
break;
case 1:
Cathode_1_on ();
print (a2);
break;
case 2:
Cathode_2_on ();
print (a3);
break;
case 3:
Cathode_3_on ();
print (a4);
break;
case 4:
Cathode_4_on ();
print (a5);
break;
case 5:
Cathode_5_on ();
print (a1);
break;
}
a++;
if (a == 6) {a = 0;}
}
// Timer2 output compare interrupt service routine
interrupt [TIM2_COMP] void timer2_comp_isr(void)
{
all_off ();
off_segments ();
}
Как плавно регулировать яркость одной лампы я так и не понимаю, хотя уже множество попыток сделал.
1) Добавлял переменную B в прерывании, делал так:
Код: Выделить всё
if (b < bright1) {зажигать} else {не зажигать}
2) Пробовал выполнять переключения ламп в прерывании, а зажигать сегменты в основной программе, она же типа быстрее. Получалась тоже фигня с засветами и мерцаниями.
Очень прошу помощи, уже не помню сколько раз возвращался к вопросу и так и не осилил (

слева!

