Динамическая индикация

Suro
Offline
Зарегистрирован: 03.07.2017

Здравствуйте. Подскажите пожалуйста как повысить яркость семисегментного индикатора.

Использую.

Атмега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;
   
    };
}

  

Suro
Offline
Зарегистрирован: 03.07.2017

alex_r61
Offline
Зарегистрирован: 20.06.2012

 А задержки зачем в прерывании?

Suro
Offline
Зарегистрирован: 03.07.2017

Когда снимаю задержки , цифры отображаются неправильно

Logik
Offline
Зарегистрирован: 05.08.2014

Жесть. 10мсек в прерывании. Растрелять!

В каждом срабатывании timer2_comp_isr надо: выводить в PORTD; выключить старый строб, можна просто все выключить; включить новый очередной строб. И шоб мне без делеев там всяких!! Тогда и яркость вырастит и порядок будет.

Suro
Offline
Зарегистрирован: 03.07.2017

Выходит что у меня непрявильно написан switch ?

Logik
Offline
Зарегистрирован: 05.08.2014

У Вас не правильное понимание идеи. Светится сегменты должны не в течении делея внутри обработчика. В обработчике должны только менятся стробы и соответствующие сегменты, а светится должно все время между вызовами обработчика прерывания. Отсюда и проблема яркости. Ну а свич - конечно править нужно, чтож еще править, кроме него, там же больше и нет ниче.

sadman41
Offline
Зарегистрирован: 19.10.2016

Да он там вообще не особо-то и нужен, если честно.

Logik
Offline
Зарегистрирован: 05.08.2014

sadman41 имет в виду что в свиче все кейсы чемто неуловимо похожи ;) Конечно без него можна. Но если разобрались с ним то дабы не усложнятся лучше сразу его поправить. Заработает - тогда уже и без него не сложно сообразить.

Suro
Offline
Зарегистрирован: 03.07.2017

Всем спосибо за отклик дорогие ))

Green
Offline
Зарегистрирован: 01.10.2015

Logik пишет:

У Вас не правильное понимание идеи. Светится сегменты должны не в течении делея внутри обработчика. 


Идея может быть у каждого своя.) Только не по 10 мс, конечно. Ибо 25 Гц неприятно для глазу.)))

Suro
Offline
Зарегистрирован: 03.07.2017

Спосибо ))