31.01.2007, 18:35
|
|
Частый гость
Регистрация: 31.01.2007
Сообщений: 12
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Проблема с прерываниями.
При использовании прерываний в микроконтроллере серри AVR(прерывания внешние), в Proteus-е возникает такой глюк. Как только в программе разрешается прерывание, то программа выходит на прерывание, но сразу не должно, программа должна находится в режиме ожидания. В AVRStudio возникает сразу несколько прерываний.
|
|
|
|
01.02.2007, 14:48
|
|
Вид на жительство
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 308
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
|
Скорее всего Вы разрешаете именно прерывания INT0 INT1 или изменяете настройки прерываний при включеном ОБЩЕМ флаге разрешения прерываний (SEI) ... а в документации пишут, что все изменения в настройках прерываий должны происходить при глобальном запрещении прерываий (CEI)
|
|
|
|
02.02.2007, 01:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
возможно при разрешении прерывания у вас уже установлен влаг этого прерывания.
механизм прерываний в AVR я описал кратко, самое главное на avr123.nm.ru/03.htm - там есть и примеры кода с симуляцией и с кнопочками.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
02.02.2007, 10:50
|
|
Частый гость
Регистрация: 10.08.2006
Сообщений: 20
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
посмотрите на состояние PINx во время включения прерываний
|
|
|
|
02.02.2007, 12:37
|
|
Частый гость
Регистрация: 31.01.2007
Сообщений: 12
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от AndryG
|
Скорее всего Вы разрешаете именно прерывания INT0 INT1 или изменяете настройки прерываний при включеном ОБЩЕМ флаге разрешения прерываний (SEI) ... а в документации пишут, что все изменения в настройках прерываий должны происходить при глобальном запрещении прерываий (CEI)
|
Все изменения я и делаю при глобальном запрещении прерываний, а как только разрешаю(SEI) сразу срабатывает прерывание.
|
|
|
|
02.02.2007, 12:52
|
|
Частый гость
Регистрация: 31.01.2007
Сообщений: 12
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от tolik_zp
|
посмотрите на состояние PINx во время включения прерываний
|
Смотрел, по непонятным причинам на PINx устанавливаются состояния которых не должно быть, откуда они берутся я не знаю, может глюк эмулятора. но я пробовал принудительно устанавливать уровни, не помогло.
|
|
|
|
02.02.2007, 13:11
|
|
Вид на жительство
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 308
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
|
Цитата:
|
Все изменения я и делаю при глобальном запрещении прерываний, а как только разрешаю(SEI) сразу срабатывает прерывание.
|
Сталкивался давно ... в самом начале познавания контроллеров ... что было так и не понял, но поборол очиской флагов (записью в них единицы) перед SEI
|
|
|
|
02.02.2007, 13:28
|
|
Частый гость
Регистрация: 31.01.2007
Сообщений: 12
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Интересный вариант, спасибо за совет, попробую.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:10.
|
|