![]() |
|
Модераторы: PILOT, ManiaK, Mazzi |
![]()
|
|
| daemon17 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 3.2.2009 Репутация: нет Всего: нет |
Всем привет!
Помогите пожалуйста разобраться с прерыванием. необходимо фиксировать на ножке перепад 0->1 и 1->0 и соответствующие события обрабатывать в прерывании. Оговорюсь что при использовании прерывания EXTINT0 все работает, но уперся в то что нехватает к-ва ножек на обработку событий, по этому решил перейти на прерывание PCINT0. Но тут началась непонятка в эмуляторе AVRStudio (v 4.18 build 700). Дело в том, что при выставлении на Pin-е соответствующего порта уровень "1" прерывание срабатывает, но почему то на этом Pin-е самостоятельно изменяется урвень с "1" на "0" через 42 такта и снова отрабатывает прерывание. Никак не пойму почему на ноге порта самостоятельно изменяется уровень. Этот уровень должен изменяться от прихода внешнего сигнала но никак не самостоятельно. (Может я чего-то не дочитал в даташите?) вот кусок кода
|
|||
|
||||
| UniBomb |
|
||||
|
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 9 Всего: 97 |
daemon17, первое что бросается в глаза - неправильно написана таблица векторов прерываний. Должно быть как-то так:
И по идее на все неиспользуемые прерывания надо ставить заглушки в виде reti, т.е. так:
Потому, что когда срабатывает прерывание, то счётчик команд перепрыгивает по нужному и вектору и не найдя команды возврата продолжает молотить с того места. В данном случае, покуда вектор PCINT0 Handler был не на своём месте, программа начинала выполняться сначала со всеми вытекающими - сброс и реинициализация портов. |
||||
|
|||||
| daemon17 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 3.2.2009 Репутация: нет Всего: нет |
да так оно и есть, просто чтоб не вставлять лишнего, я чего-то решил сократить да и махнул косой
в исходниках у меня как надо написано. |
|||
|
||||
| UniBomb |
|
|||
|
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 9 Всего: 97 |
daemon17, тогда выложи полный исходник, а то вдруг ты ещё чего "лишнего" вырезал
|
|||
|
||||
![]()
|
| Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |