Перейти к содержанию
    

не работает банально простой фрагмент

На вход Input Capture поступат импульсы от детектора перехода через ноль сетевого напряжения. Цель - определть момен пропадания этого нпряжения. в процессе с наименьшим приоритетом выполняется

следующий фрагмент. Print() выводит на LCD значение счетчика. Счет в плюс выполняется с правильной частотой. Если перемыкаю выход оптрона детектора, счет останавливается, но счетчик не сбрасывается в 0,

как ожидалось. Частота системного тика близка к 1000 Гц. То есть wait() c ненулевым таймаутом ждет event бесконечно... ev_psync - поле класса, но полагаю, это не имеет значения...

 

  
  bool ok;
  TIMSK= (1 << TICIE1);            // разрешим прерывания PSYNC

  while(1){
      ok = ev_psync.wait(10);
      if(ok){
        psync_cnt++;
        ev_psync.clear();                               // добавил на всякий случай, не помогло
      }
      else  psync_cnt = 0;
      Print();
  }

 

обработчик прерывания:

 

OS_INTERRUPT void TIMER1_CAPT_vect()
{
  OS::TISRW_SS ISRW;
  ENABLE_NESTED_INTERRUPTS();
  cc.ev_psync.signal_isr();
}

 

переделал так:

OS::sleep(10);
      ok = ev_psync.is_signaled();
      if(ok){
          ev_psync.clear();
          psync_cnt++;}
      else{
          psync_cnt = 0;}
      Print();

 

счета нет совсем. то есть опять таки ненулевой таймаут не отоабатывает

 

Изменено пользователем nanorobot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А прерывание системного таймера вызывается?

похоже я его запретил, когда разрешал прерывание от IC. посыпаю голову пеплом (надо было TIMSK |= (1 << TICIE1);)

Изменено пользователем nanorobot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...