Re: Не работает прерывание АЦП
1. Для запуска АЦП он (АЦП) должен быть как минимум разрешен ( установкой бита ADEN ) - проверьте по коду, что и когда заносится в регистр ADCSRA.
2. Примечание: АЦП может настраиваться на запуск преобразования по событию ("триггеру"), в том числе по External Interrupt Request 0.
3. Таки да, для ATmega8 пункт 2 неактуален.
UPD
АЦП запускается из обработчика прерывания INT0, а вызывается ли сам обработчик прерывания INT0? Чтобы исключить подобные потенциальные причины ( зависимости ), можно в качестве проверки однократно запустить преобразование АЦП в функции main() и убедиться, что прерывание АЦП вызывается ( добиться, чтобы вызывалось ).
P.S.
ИМХО лучше не смешивать макросы для определения обработчиков, а использовать что-то одно: или ISR(xxx_vect), или SIGNAL(SIG_xxx). Возможно, потребуется также объявить переменную dat как volatile.
Последний раз редактировалось j-Roger; 22.03.2023 в 01:26.
Причина: Дополнение
|