Динамическая индикация
- Войдите на сайт для отправки комментариев
Сб, 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 Гц неприятно для глазу.)))
Спосибо ))