Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
06.12.2009, 03:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 12.05.2006
Адрес: Владимир
Сообщений: 2,839
Сказал спасибо: 3,086
Сказали Спасибо 4,288 раз(а) в 1,213 сообщении(ях)
|
Вход в прерывания для PIC микроконтроллеров
Не нашел ответов в документации, неохота экспериментировать и испытывать эти ситуации "в железе", решил спросить у знающих товарищей. Поясните, как будет себя вести микроконтроллер в этих ситуациях.
1) Бит глобального разрешения прерываний сброшен. В это время происходит одно из событий, которое могло бы привести к прерыванию, например переполнение таймера. Соответственно флаг прерывания по переполнению таймера устанавливается. Потом программно взводим бит глобального разрешения прерываний. Войдет ли микроконтроллер в подпрограмму прерываний?
2) Выполняется подпрограмма прерывания по какому-либо событию. В это время происходит событие, по которому микроконтроллер должен войти и выполнить прерывание по другому событию. Выполняющаяся подпрограмма прерывания закончит свое выполнение? После выхода из прерывания запустится ли подпрограмма, которая должна выполнится по второму событию?
3) Бит глобального разрешения прерываний установлен. Бит разрешения прерывания, допустим по переполнению таймера, сброшен. Флаг переполнения таймера установлен. В это время программно взводим бит разрешения прерывания по переполнению таймера. Войдет ли микроконтроллер в подпрограмму прерывания?
4) Одновременно произошло несколько событий, приводящих ко входу в прерывание. Какой приоритет выполнения частных прерываний?
5) Одновременно произошло несколько событий, приводящих ко входу в прерывание, или еще одно событие произошло во время выполнения подпрограммы прерывания. После выполнения подпрограммы по прерыванию от старшего события, выполнятся ли прерывания по другим событиям?
6) Одновременно произошло несколько событий, приводящих ко входу в прерывание, или еще одно событие произошло во время выполнения подпрограммы прерывания. Но во время первого входа в подпрограмму прерываний, флаги от других событий программно сбросить. Если ответ на предыдущий ответ будет "повторный вход в подпрограмму прерывания", но ведь флаги будут уже сброшены. Войдет ли микроконтроллер в подпрограмму прерывания повторно?
Последний раз редактировалось dimmich; 06.12.2009 в 03:29.
|
|
|
|
06.12.2009, 10:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Вход в прерывания для PIC микроконтроллеров
Все это есть в документации, причем у ПИКов в отличие от АВР даже документация русская...
1. да
2. после завершения первого контроллер выполнит 1 команду из основной программы и войдет во 2-е
3. да
4. См. в документации. У АВР бОльший приоритет имеет прерывание с меньшим адресом вектора - т.е. которое в списке выше
5. да. Если несколько - см. пункт 4
6. Когда контроллер вернется в основную программу - он посмотрит какие флаги стоят В ДАННЫЙ МОМЕНТ и обработает их.
|
|
|
|
06.12.2009, 10:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
|
Re: Вход в прерывания для PIC микроконтроллеров
Чтоб не писать отсебятину, прикладываю седьмую главу "Прерывания" из книги С.Катцен "PIC микроконтроллеры, все что необходимо знать", 2008 Додека.
Здесь есть ответы практически на все вопросы по прерываниям среднего семейства PIC.
|
|
|
|
06.12.2009, 10:15
|
|
Почётный гражданин KAZUS.RU
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
|
Re: Вход в прерывания для PIC микроконтроллеров
Сообщение от niXto
|
Все это есть в документации
|
Вот перевод мануала, раздел "Прерывания".
|
|
|
|
06.12.2009, 17:17
|
|
Почётный гражданин KAZUS.RU
Регистрация: 12.05.2006
Адрес: Владимир
Сообщений: 2,839
Сказал спасибо: 3,086
Сказали Спасибо 4,288 раз(а) в 1,213 сообщении(ях)
|
Re: Вход в прерывания для PIC микроконтроллеров
Сообщение от lsa
|
Glava7.pdf
|
Спасибо за файл. Мысли начали укладываться по полочкам. Нашел ошибку на стр.222. Там в примере программы обращение к регистру PIE1 производится по третьему банку памяти. А он находится в первом.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:31.
|
|