Mega8. Второй день бьюсь сделать засыпание-просыпание одной кнопкой. Завожу кнопку на INT0. Включаю INT0 на срабатывание по низкому уровню. Пишу обработчик прерывания чтобы четный раз powerdown(); нечетный - ничего. И у мк едет крыша) Либо не включается потом либо работает с задержками, либо не йёдешь в слип вообще:(. Может я чего не отключил, и оно генерит прерывания? У меня есть рабочий девайс и его модель в протеусе. Везде примерно одно и то же. Кто-то уже пытался сделать подобное?
Добавляю: в Idle не уходит вообще. В powerdown уходит, но не возвращается никакими попытками дергать INT0 INT1 Это в протеусе.
Без исходника сложно давать советы, но попробую...
Ты в прерывании включаешь SLEEP или POWERDOWN?
Если так, то это в корне неверно. После команды засыпания контроллер уходит в спячку. По прерыванию - просыпается и уходит в обработчик, из него выходит и выполняет команду, которая следует за той, которая перевела в сон. Не удивлюсь, если контроллер умрет вместо сна, если ты усыпишь его в обработчике прерывания - у AVR-то одноуровненвая система прерываний, т.е. пока текущий обработчик не закончится, новое прерывание не возникнет! Сделай так: бесконечный цикл, в котором анализируешь какую-то ячеечку - если там четное число, то усыпляешь, если нечетное - не усыпляешь, а бодрствуешь. А в обработчике прерывания эту ячеечку просто инкрементируй. Должно получиться.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
ARV - мегагений)
Действительно, проблема такая: в C++ в обработчике прерывания последняя команда powerdown();, но в ASM по сути - RETI, поэтому засыпал он в обработчике прерывания. И не просыпался потому что прерывание не могло генерироваться, т.к. предыдущее ещё не было обработано. Спасибо. На будущее буду знать.
Скажи, правда, что на входах AVR есть триггеры Шмита? Судя по моим наблюдениям они есть но оччень маленькие. А вот детекция фронта (это в прерывании, INT1 по переднему фронту) работает с голой оптопарой, это вот как раз круто.
И ещё тупой вопрос - защита от программирования при прошивке - это работает? или всеже это бесполезно?
ARV - мегагений) правда, что на входах AVR есть триггеры Шмита?
да, правда. подробно об этом и про величину гистерезиса для разных напряжений птания я прочитал на стр. 2 этого руководства http://www.roboforum.ru/viewtopic.htm?p=11560 ну и в ДШ конечно по английски есть.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 49
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения