Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Микроконтроллеры PIC фирмы Microchip для начинающих выпуск №17


РАССЫЛКА Микроконтроллеры PIC фирмы Microchip для начинающих
Ведущий: Алексей (pont_a@mail.ru)


Доброго времени суток, дамы и господа!!

Сегодня продолжаем рассматривать систему прерываний  микроконтроллеров серии PIC18 на базе микроконтроллера PIC18F452! Начнем рассматривать регистры управления системой прерываний!

Сначала, хочу оговориться по поводу ошибки, сделанной мною в выпуске №14, когда мы рассматривали таймер 2. Мы производили расчет таймера 2 на таймаут в 1 секунду, у нас значение регистра PR2 равнялось 250. Так вот, ошибка заключалась в том, что мы неправильно загрузили регистр PR2. Правильное значение должно быть 249. Т.к. у нас аппаратный сброс таймера 2 в ноль происходит на следующем инкременте после сравнения. Таким образом, у нас 250 тиков таймера 2 – это 0,1…249.
Выражаю благодарность Дмитрию С. за найденную ошибку.   

Итак, начнем. Регистр, с которого я хотел бы начать, RCON. В этом регистре нас, в рамках данной темы, интересует только 7-ой бит – IPEN. Данный бит разрешает или запрещает работу с приоритетами прерываний. Если он установлен в единицу, то приоритетные прерывания разрешены. Если, сброшен, то приоритеты отключены. Тогда система прерываний работает в совмещенном режиме. Биты регистров выбора приоритета прерываний (IPR) игнорируются, и обработчик прерываний назначается только на вектор 0x08.
Следующий регистр INTCON. Самый основной регистр системы прерываний, т.к. здесь расположены глобальные биты разрешения/запрета  прерываний. Назначение его битов приведено в таблице:   

№ бита

Название

Описание

7

GIE
GIEH

Если IPEN=1 (приоритеты разрешены) GIEH:  
0 – запрещены все высокоприоритетные прерывания;
1 – разрешено отрабатывать высокоприоритетные прерывания.
Если IPEN=0 (приоритеты запрещены) GIE
0 – запрещены все прерывания;
1 – разрешено отрабатывать прерывания.

6

PEIE
GIEL

Если IPEN=1 (приоритеты разрешены) GIEL
0 – запрещены все низкоприоритетные прерывания;
1 – разрешено отрабатывать низкоприоритетные прерывания.
Если IPEN=0 (приоритеты запрещены) PEIE
0 – запрещены все периферийные прерывания;
1 – разрешено отрабатывать периферийные прерывания.
Периферийные прерывания – это прерывания, которые управляются регистрами PIE, PIR, IPR, которые мы рассмотрим в следующем выпуске.

5

TMR0IE

1 – разрешить прерывание от переполнения таймера 0
0 – запретить прерывание от переполнения таймера 0

4

INT0IE

1 – разрешить прерывание от внешнего входа INT0
0 – запретить прерывание от внешнего входа INT0

3

RBIE

1 – разрешить прерывание от изменения состояния входов RB7-4
0 – запретить прерывание от изменения состояния входов RB7-4  

2

TMR0IF

Флаг прерывания от переполнения таймера 0:
1 – произошло прерывание  (сбрасывать надо программно)
0 – прерывания не было

1

INT0IF

Флаг прерывания от внешнего входа INT0
1 – произошло прерывание  (сбрасывать надо программно)
0 – прерывания не было

0

RBIF

Флаг прерывания от изменения состояния входов RB7-4
1 – произошло прерывание  (сбрасывать надо программно)
0 – прерывания не было
Чтобы сбросить этот флаг, необходимо предварительно прочитать программой состояние PORTB, а потом только сбрасывать флаг.

Следующий регистр INTCON2. Назначение битов в таблице ниже:

№ бита

Название

Описание

7

RBPU

0 – разрешена подтяжка внутренних резисторов на +5В, когда пины PORTB настроены на вход;
1 – подтяжка на все пины PORTB отключена.

6

INTEDG0

Бит настройки внешнего прерывания INT0
0 – прерывание происходит от спадающего фронта входного сигнала
1 – прерывание происходит от нарастающего фронта входного сигнала

5

INTEDG1

Бит настройки внешнего прерывания INT1
0 – прерывание происходит от спадающего фронта входного сигнала
1 – прерывание происходит от нарастающего фронта входного сигнала

4

INTEDG2

Бит настройки внешнего прерывания INT2
0 – прерывание происходит от спадающего фронта входного сигнала
1 – прерывание происходит от нарастающего фронта входного сигнала

3

-

не используется

2

TMR0IP

Бит управления приоритетом прерывания переполнения таймера 0:
1 – высокий приоритет
0 – низкий приоритет

1

-

не используется

0

RBIP

Бит управления приоритетом прерывания изменения состояния RB7-4
1 – высокий приоритет
0 – низкий приоритет

Следующий регистр INTCON3. Назначение битов в таблице ниже:

№ бита

Название

Описание

7

INT2IP

Бит управления приоритетом прерывания внешнего входа INT2
1 – высокий приоритет
0 – низкий приоритет

6

INT1IP

Бит управления приоритетом прерывания внешнего входа INT1
1 – высокий приоритет
0 – низкий приоритет

5

-

не используется

4

INT2IE

1 – разрешить прерывание от внешнего входа INT2
0 – запретить прерывание от внешнего входа INT2

3

INT1IE

1 – разрешить прерывание от внешнего входа INT1
0 – запретить прерывание от внешнего входа INT1

2

-

не используется

1

INT2IF

Флаг прерывания от внешнего входа INT2
1 – произошло прерывание  (сбрасывать надо программно)
0 – прерывания не было

0

INT1IF

Флаг прерывания от внешнего входа INT1
1 – произошло прерывание  (сбрасывать надо программно)
0 – прерывания не было

 В следующем выпуске продолжим рассматривать систему прерываний микроконтроллера PIC18F452! Рассмотрим регистры управления периферийными прерываниями и напишем ряд примеров инициализации системы прерываний!

Возможно, далее, в течение следующего месяца, рассылка будет выходить раз в  2 недели, из-за катастрофической нехватки времени! Потом, выпуски будут выходить как обычно, раз в неделю!

Полный архив рассылки Вы можете прочитать на нашем сайте!  При любом опубликовании текстов данной рассылки ссылка на сайт http://www.2aplusa.ru обязательна!

Желаю Вам удачи! До скорой встречи!


С уважением, Алексей pont_a@mail.ru
Cайт разработчиков 2AplusA http://2aplusa.ru


В избранное