реклама на сайте
подробности

 
 
> Прошу помочь оптимизировать код. От жары уже все плавится, трудно соображать
smk
сообщение Jul 18 2011, 15:20
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446




Все работает, только много места занимает. Суть смысл в том, что есть сенсор, которым нужно включать/выключать светодиод и устанавливать яркость светодиода. По задумке короткие касания включают и выключают. Удерживание переводит в режим димирования и происходит он пока удерживается сенсор. Отпущенный сенсор прекращает димирование, а через некоторое время выключает режим настройки. Желательно чтобы яркость менялась от max до min и обратно (это не влезло) ну и в 2-3 раза медленнее. Еще нужно по выходу из настройки писать в EEPROM что настроили и при включении грузить. Не влазит все это. Прошу помочь. Спасибо.

Код
        
unsigned char pwm, pwm2, flag, flag2, on_off, revers;

      if (GET_SENSOR_STATE(0) !=0)
        {
          if(flag==0) {flag2=~flag2; flag=1; pwm=0;}//
          if(pwm>80) {on_off=255; pwm2=0;}
        }
      else
        {
          flag=0;
          if((flag2==0)&(on_off==0)) DDRB &= ~(1u << PORTB2);//
          else {flag2=255;}
          if(pwm2>120) on_off=0;
        }
      if(flag2==255) DDRB |= (1u << PORTB2);
      if(on_off==255)PORTD &= ~(1u << PORTD6);
      else PORTD |= (1u << PORTD6);        
        
#pragma vector=TIMER0_COMPA_vect
__interrupt static void timer0_isr( void )
{
   if (GET_SENSOR_STATE(0) !=0)
     {
       ++pwm;
       if(on_off == 255)
       {
/*      if((revers==0)&(OCR0A != 255)) ++OCR0A;
       else
          {
          revers = 255;
          if(OCR0A !=0) --OCR0A;
          else revers = 0;
          }*/
        ++OCR0A;
       }
     }
   else ++pwm2;
}



--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 22:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01335 секунд с 7
ELECTRONIX ©2004-2016