ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
22 декабря
1298253 Топик полностью
vpv.vpv (04.04.2023 07:23, просмотров: 300) ответил vesago на Друзья, подскажите по работе компаратора в atmega168? Я подаю некий сигнал на вход ADC6. Проинициализировал его как вход компаратора:
Пользуюсь давно компаратором (правда, в Меге48РА), всё работает четко и быстро. Не совсем понял вот эти пляски 

с битом запрета копаратора:


  ACSR = (1<<ACD);
  ACSR = (1<<ACD) | (1<<ACBG) | (1<<ACI) | (1<<ACIE);
  ACSR &= ~(1<<ACD);


Зачем его вобще трогать, если компаратор используется? :))

Я настраиваю так (снаружи вход минусовой. а плюсовой внутри подключен к опоре):


//--------------------------------------------------------------------------
// настройка компаратора на срабатывание по перегрузке ключа
  
void SetUpComparator(void)
  {
  ACSR = (1<<ACBG)      // "+AIN0" внутри соединён с Internal Ref (1,1В) 
       | (1<<ACIE)      // разрешить прерывания от компаратора
       | (1<<ACIS1)     // по отрицательному фронту, когда внешний "-AIN1"
       | (0<<ACIS0);    // становится больше внутреннего "+AIN0" (1,1В)
  }


И всё. В самом прерывании сделать, что нужно, а сам компаратор трогать не надо:


//--------------------------------------------------------------------------
// прерывание компаратора на срабатывание по перегрузке ключа
  
__interrupt void irqANA_COMP (void)
  {
  PORTB_Bit6 = 0;             // выключить нижний ключ
  }


Ещё раз: Сбрасывать бит ACI в прерывании НЕ НУЖНО!

Он сам сбрасывается аппаратно, когда это прерывание разрешено и в него происходит влёт.


P.S.И да, кстати, опора Vref там не 1,23 а 1,1В