Есть аттини2313. Задача такая, что пока на ноге INT0 есть 0, нужно 1 раз вызвать функцию, и потом ждать пока 0 не сменится на 1 и опять на 0.
Всё бы было просто, но я решил усыпить МК когда он не работает и тут возникла беда...
Вариант 1.
Если я включаю прерывание по низкому уровню, то низкий уровень на INT0 без проблем будет МК.
Но пока там низкий уровень, прерывание постоянно вызывается.
Выход: убрать флаг прерывания пока работает функция.
В конце функции я опять ставлю флаг прерывания, но если низкий уровень остался на ножке МК, то прерывание опять срабатывает.
Вариант 2.
Включаю прерывание по заднему фронту, и всё вроде бы работает, если убрать sleep. Но если усыпить МК, то он не просыпается от прерывания. (я так понимаю беда в том, что тактовый генератор остановился, а измерение должно быть во время выполнения каких либо команд МК, то етсь пока тактовый генератор работает...)
Как можно решить данную задачу?
Раздел: AVR
Всё бы было просто, но я решил усыпить МК когда он не работает и тут возникла беда...
Вариант 1.
Если я включаю прерывание по низкому уровню, то низкий уровень на INT0 без проблем будет МК.
Но пока там низкий уровень, прерывание постоянно вызывается.
Выход: убрать флаг прерывания пока работает функция.
В конце функции я опять ставлю флаг прерывания, но если низкий уровень остался на ножке МК, то прерывание опять срабатывает.
Вариант 2.
Включаю прерывание по заднему фронту, и всё вроде бы работает, если убрать sleep. Но если усыпить МК, то он не просыпается от прерывания. (я так понимаю беда в том, что тактовый генератор остановился, а измерение должно быть во время выполнения каких либо команд МК, то етсь пока тактовый генератор работает...)
Как можно решить данную задачу?
Раздел: AVR