Динамическая индикация
- Войдите на сайт для отправки комментариев
Сб, 10/11/2018 - 10:59
Здравствуйте. Подскажите пожалуйста как повысить яркость семисегментного индикатора.
Использую.
Атмега8
4 разрядный красный индикатор с общим анодом
// Timer2 output compare interrupt service routine
// Timer/Counter 2 initialization
// Clock source: System Clock 8MHZ
// Mode: Compare
// clkT2S/128 (From prescaler)
TCCR2=0b00001101;
TCNT2=0x00;
OCR2=0x80;
//****************************************************************************************************************************
interrupt [TIM2_COMP] void timer2_comp_isr(void){
switch (j) {
case 1:
PORTD = anode[digit1];
delay_ms(5);
PORTC = 0x01;
delay_ms(5);
PORTC = 0x00;
j++;
break;
case 2:
PORTD = anode[digit2];
delay_ms(5);
PORTC = 0x02;
delay_ms(5);
PORTC = 0x00;
j++;
break;
case 3:
PORTD = anode[digit3];
delay_ms(5);
PORTC = 0x04;
delay_ms(5);
PORTC = 0x00;
j++;
break;
case 4:
PORTD = anode[digit4];
delay_ms(5);
PORTC = 0x08;
delay_ms(5);
PORTC = 0x00;
j++;
break;
default:
//PORTC = 0x01;
j = 1;
};
}
А задержки зачем в прерывании?
Когда снимаю задержки , цифры отображаются неправильно
Жесть. 10мсек в прерывании. Растрелять!
В каждом срабатывании timer2_comp_isr надо: выводить в PORTD; выключить старый строб, можна просто все выключить; включить новый очередной строб. И шоб мне без делеев там всяких!! Тогда и яркость вырастит и порядок будет.
Выходит что у меня непрявильно написан switch ?
У Вас не правильное понимание идеи. Светится сегменты должны не в течении делея внутри обработчика. В обработчике должны только менятся стробы и соответствующие сегменты, а светится должно все время между вызовами обработчика прерывания. Отсюда и проблема яркости. Ну а свич - конечно править нужно, чтож еще править, кроме него, там же больше и нет ниче.
Да он там вообще не особо-то и нужен, если честно.
sadman41 имет в виду что в свиче все кейсы чемто неуловимо похожи ;) Конечно без него можна. Но если разобрались с ним то дабы не усложнятся лучше сразу его поправить. Заработает - тогда уже и без него не сложно сообразить.
Всем спосибо за отклик дорогие ))
У Вас не правильное понимание идеи. Светится сегменты должны не в течении делея внутри обработчика.
Идея может быть у каждого своя.) Только не по 10 мс, конечно. Ибо 25 Гц неприятно для глазу.)))
Спосибо ))