Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 05.10.2007, 14:40   #1
nayabuka
Banned
 
Регистрация: 05.10.2007
Возраст: 46
Сообщений: 247
Вес репутации: 106/0
nayabuka will become famous soon enoughnayabuka will become famous soon enough
По умолчанию PIC16F819 векторы прерываний

Добрый день уважаемые мастера программисты! Я новый пользователь этого форума. И "очень" новичок в среде микроконтроллеров.... Извините пожалуйста за может быть банальный вопрос, но не могли бы Вы объяснить мне попроще как в PIC16F819 организовать два источника прерываний:
1) от сигнала на входах (PORTA или PORTB) - с наивысшим приоритетом.
2) от переполнения TMR0
И возможно ли это в принципе, а то может я хочу большего от этого чипа? И как устанавливается приоритет прерываний если это возможно, адреса векторов прерываний от разных источников, сколько вообще я могу организовать на указанном чипе векторов и источников прерываний?
Заранее благодарен за ответ. Спасибо Вам за внимание к моему вопросу!
nayabuka вне форума   Ответить с цитированием
Старый 05.10.2007, 14:49   #2
BAX
Member
 
Регистрация: 29.05.2007
Возраст: 40
Сообщений: 42
Вес репутации: 102/48
BAX will become famous soon enoughBAX will become famous soon enough
По умолчанию Re: PIC16F819 векторы прерываний

Адрес векторов прерываний для любого прерывания один и тот же - h04.
Программа перейдёт туда, а там уже сам, проверяя соответствующие биты в регистре INTCON, сможешь определить какое прерывание произошло. Приоритетов в данном контроллере нет, надо решать программно.
Прочитай описание регистра INTCON в даташите.
BAX вне форума   Ответить с цитированием
Старый 05.10.2007, 15:18   #3
nayabuka
Banned
 
Регистрация: 05.10.2007
Возраст: 46
Сообщений: 247
Вес репутации: 106/0
nayabuka will become famous soon enoughnayabuka will become famous soon enough
По умолчанию Re: PIC16F819 векторы прерываний

Спасибо. С регистром INTCON я разобрался. И знаю что вектор прерывания в памяти программ выходит на 4 ую комаду счётчика PC но я спрашивал могу ли я скажем организовать выход в прерывание
org h'04 по сигналу с порта (внешнего)
и ещё докучи чтобы у меня исполнялось другое прерывание по другому вектору, но приоритет оставался бы за первым от порта.
Как я понял - у меня ничего неполучитцца...
Поэтому мне придётся выйти из этого положения посредствам других способов ухода в подпрограммы через команды call или goto.
Я верно понял? Извиняюсь за невежественность.......
nayabuka вне форума   Ответить с цитированием
Старый 05.10.2007, 15:28   #4
nayabuka
Banned
 
Регистрация: 05.10.2007
Возраст: 46
Сообщений: 247
Вес репутации: 106/0
nayabuka will become famous soon enoughnayabuka will become famous soon enough
По умолчанию Re: PIC16F819 векторы прерываний

У меня есть просто хороший товарищ но он программирует AVR и он меня спонталыку сбил. Сказал что векторов прерываний может быть много например если первый может быть org 04h то второй, третий и так далее может быть по адресам 08h и так далее как пропишешь...?
И сказал что в AVRах есть регистр "маски" где прописываются путём установки соответствующих битов - приоритеты различных прерываний. Может конечно это относится к чипам более мощным чем 819ый PIC но я не оч хорошо ориентируюсь. Просто программу хочу написать под PIC16F819 и интересуюсь нельзя ли мне использовать такое интересное решение как приоритет прерываний. Может это доступно в других PICах? Если доступно, то в каких?
Заранее благодарен.
nayabuka вне форума   Ответить с цитированием
Старый 05.10.2007, 16:27   #5
fantom
Senior Member
 
Регистрация: 27.02.2007
Адрес: Рязань
Возраст: 44
Сообщений: 2,610
Вес репутации: 2570/99
fantom has a reputation beyond reputefantom has a reputation beyond reputefantom has a reputation beyond reputefantom has a reputation beyond reputefantom has a reputation beyond reputefantom has a reputation beyond reputefantom has a reputation beyond reputefantom has a reputation beyond reputefantom has a reputation beyond reputefantom has a reputation beyond reputefantom has a reputation beyond repute
По умолчанию Re: PIC16F819 векторы прерываний

Цитата:
Сообщение от nayabuka Посмотреть сообщение
Спасибо. С регистром INTCON я разобрался. И знаю что вектор прерывания в памяти программ выходит на 4 ую комаду счётчика PC но я спрашивал могу ли я скажем организовать выход в прерывание
org h'04 по сигналу с порта (внешнего)
Можно с PORTВ. Там есть два варианта.

Цитата:
Сообщение от nayabuka Посмотреть сообщение
и ещё докучи чтобы у меня исполнялось другое прерывание по другому вектору, но приоритет оставался бы за первым от порта.
Как я понял - у меня ничего неполучитцца...
По другому вектору нельзя. В 16 серии один вектор. Но что получится как надо, вероятность оцениваю в 99%.


Цитата:
Сообщение от nayabuka Посмотреть сообщение
Поэтому мне придётся выйти из этого положения посредствам других способов ухода в подпрограммы через команды call или goto.
Я верно понял? Извиняюсь за невежественность.......
Извиняться не надо. Все когда-то начинали. Главное сейчас, внимательно слушать.
fantom вне форума   Ответить с цитированием
Старый 05.10.2007, 19:25   #6
michipic
Senior Member
 
Аватар для michipic
 
Регистрация: 26.02.2007
Адрес: Москва
Сообщений: 182
Вес репутации: 151/50
michipic has a spectacular aura aboutmichipic has a spectacular aura about
По умолчанию Re: PIC16F819 векторы прерываний

Да, в AVR много векторов прерываний, а в PIC16 - один. Но даже новичку понятно, что если PIC16 пользуется не меньшим спросом, чем AVR - значит это не есть проблема. В PIC источник прерывания (если их несколько) определяется анализом состояния флагов, на что требуется некоторый объём кодов и времени. Обычно алгоритм такой - наступило прерывание, запускается подпрограмма обработки этого прерывания. После окончания обработки проверяется состояние флага другого прерывания.
Если второе прерывание обладает бОльшим приоритетом, то тут уже надо смотреть конкретно.
Сейчас вот пишу код для определения длительности нажатия кнопки.
Прерывание по нажатию, а время определяется количеством установок флага TOIF до момента отпускания кнопки. В процессе обработки перенастраивается регистр OPTION на прерывание по отпусканию кнопки. Соответственно, при отпускании кнопки наступает прерывание, и результат подсчёта выводится на индикатор.
__________________
ну и что?
michipic вне форума   Ответить с цитированием
Старый 05.10.2007, 20:48   #7
nayabuka
Banned
 
Регистрация: 05.10.2007
Возраст: 46
Сообщений: 247
Вес репутации: 106/0
nayabuka will become famous soon enoughnayabuka will become famous soon enough
По умолчанию Re: PIC16F819 векторы прерываний

Спасибо огромное! Я вот думаю что если подпрограмма прерывания расположенная соответственно по адресу 04h в памяти программ сама будет включать в себя команды изменения конфигурации регистра INTCON, то ведь всё равно по выходу из прерывания изменив скажем источник вызова прерывания, я всё равно смогу по прерыванию воспользоваться только той программой которая и расположена по адресу 04h.
Спасибо Вам большое за консультацию! Очень благодарен.
nayabuka вне форума   Ответить с цитированием
Старый 05.10.2007, 20:58   #8
2AplusA
Senior Member
 
Аватар для 2AplusA
 
Регистрация: 26.02.2007
Адрес: Penza
Возраст: 38
Сообщений: 1,383
Вес репутации: 1267/73
2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of
По умолчанию Re: PIC16F819 векторы прерываний

Цитата:
Сообщение от nayabuka Посмотреть сообщение
У меня есть просто хороший товарищ но он программирует AVR и он меня спонталыку сбил. Сказал что векторов прерываний может быть много например если первый может быть org 04h то второй, третий и так далее может быть по адресам 08h и так далее как пропишешь...?
И сказал что в AVRах есть регистр "маски" где прописываются путём установки соответствующих битов - приоритеты различных прерываний. Может конечно это относится к чипам более мощным чем 819ый PIC но я не оч хорошо ориентируюсь. Просто программу хочу написать под PIC16F819 и интересуюсь нельзя ли мне использовать такое интересное решение как приоритет прерываний. Может это доступно в других PICах? Если доступно, то в каких?
Заранее благодарен.
Я приоритет делал так. Всегда самое высокоприоритетное прерывание размещал в начале обработчика, а потом перебор по степени важности. Отработав любое из прерываний, автоматически, делал goto на начало обработчика - и опять перебор сначала всех флагов. Но обычно так я делал, чтобы не переполнился уарт на приеме на больших скоростях!
__________________
Лучше день потерять, потом за час долететь!
2AplusA вне форума   Ответить с цитированием
Старый 07.10.2007, 10:21   #9
nayabuka
Banned
 
Регистрация: 05.10.2007
Возраст: 46
Сообщений: 247
Вес репутации: 106/0
nayabuka will become famous soon enoughnayabuka will become famous soon enough
По умолчанию Re: PIC16F819 векторы прерываний

Цитата:
Сообщение от 2AplusA Посмотреть сообщение
Я приоритет делал так. Всегда самое высокоприоритетное прерывание размещал в начале обработчика, а потом перебор по степени важности. Отработав любое из прерываний, автоматически, делал goto на начало обработчика - и опять перебор сначала всех флагов. Но обычно так я делал, чтобы не переполнился уарт на приеме на больших скоростях!
Спасибо всем за полезную консультацию! Много интересных мыслей . Пойду ещё голову поломаю.
nayabuka вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите PIC16F819 nayabuka Продукция MICROCHIP 32 22.01.2010 22:40
Макимальная частота прерываний от TMR0 ANH Продукция MICROCHIP 114 05.04.2008 00:50
Не запрещаются прерывания из обработчика прерываний shan Продукция MICROCHIP 13 10.02.2008 22:15
Обработка прерываний Troydon Продукция MICROCHIP 35 17.01.2008 14:47
PIC18F1320 прерывания или векторы ? west329 Продукция MICROCHIP 45 24.08.2007 16:17


Часовой пояс GMT +3, время: 10:49.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot