Сообщения без ответов | Активные темы Текущее время: 22 май 2018, 08:36



Ответить на тему  [ 1 сообщение ] 
 циклы опроса энкодера 
Автор Сообщение

Зарегистрирован: 30 янв 2018, 15:19
Сообщения: 1
Собственно проблема у меня в том что и заходе в цикл опроса энкодера (по условию больше, меньше до сравнения) иногда выходит из цикла да сравнения значений. Как с этим бороться
Код:
 
 if(counter_lcd < calibre_lcd)                       // Если положение меньше калибра.
   {    
     lock();
     triger = 1;                                              // флаг блокировки кода.
     AL_config();
     temp_calibre = (calibre_lcd - AL_correct_temp);
     timer_COMPA_ON();                                // подпрограмма включения канала А таймера 1, обновления экрана.
     compare = 1;
    direction_motor = 1;
    nterrupt_on();                                          // включение прерывания.
    PORTB |= (1<<4);                                    // включение мотора на разведение cw.
    while(compare == 1)
            {
            }
    PORTB &= ~(1<<4);                                  // выключение мотора на разведение.
    PORTB |= (1<<2);                                     // Включаем динамическое тормажение. 
   dinam_on = 1;                                           // флаг выключения динамическое тормажения.
   timer_COMPB_ON();


Этот код находится в прерывании в прерывании.

Код:
....
  if(compare == 1)
    {
      if(counter_lcd >= temp_calibre)     //calibre_lcd
        {
          compare = 0;
         }
     }

поскольку энкодер не инкрементный уместно ли использоваться таким кодом в прерывании?
Код:
ISR(INT0_vect)
{
 cli();
 uint8_t int_temp = 0x02;   
 while(1)
       {
         if((PIND & (1<<2)) == 0)
      {
             int_temp++;
             if(int_temp == 0x05)
               {
                 енкодер++;
               }
           {
       else
         {
      int_temp--;
           if(int_temp == 0)
       {
        goto out_int;
       }
          }   
      }
out_int:
 sei();
}


30 янв 2018, 15:38
Профиль
Показать сообщения за:  Поле сортировки  
Ответить на тему   [ 1 сообщение ] 

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron


Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.
Русская поддержка phpBB