
- •Тема 6 порты ввода/вывода и периферийные устройства
- •6.1 Порты ввода/вывода
- •6.3. Перезагружаемый таймер/счётчик
- •6.4.3. Модуль захвата входных событий
- •6.5. Программируемый генератор импульсов
- •6.6. Модуль звукового генератора
- •6.7. Модуль управления шаговым двигателем
- •6 .8. Модуль аналого-цифрового преобразователя
- •6.9. Система прерываний микроконтроллера
- •6.9.1. Аппаратные прерывания
- •6.9.2. Прерывания по сервису ei2os
- •6.9.3 Внешние прерывания
6.7. Модуль управления шаговым двигателем
Модуль содержит по два широтно-импульсных генератора (PWM1, PWM2) с логическими селекторами.
Драйверы могут непосредственно подключаться к четырём выводам двух обмоток двигателя. Вращение ротора обеспечивается совместной работой генераторов.
Тактовые импульсы подаются на 8-битный счётчик. Период выходных импульсов генераторов PWM1 и PWM2 составляет длительность 256 циклов тактирования. Скважность импульсов задаётся установками в регистрах сравнения.
Выходы могут быть установлены в единичное, нулевое или высокоимпедансное состояние. Так же они используются для передачи PWM импульсов.
6 .8. Модуль аналого-цифрового преобразователя
Модуль 8/10-разрядного аналого-цифрового преобразователя (АЦП) реализует метод последовательных приближений. Восемь аналоговых сигналов (рис.2.32) могут подаваться на внешние выводы микроконтроллера. Через аналоговый мультиплексор и схему выборки/хранения выбранный сигнал поступает на вход АЦП.
Точность преобразования гарантируется, если при установленном времени выборки 4 мкс выходной импеданс источников сигналов меньше 15,5 кОм. При большем импедансе нужно увеличить время выборки или подключить внешний компенсирующий конденсатор параллельно источнику сигнала.
Результат преобразования с 8-ми или 10-разрядным разрешением пересылается в регистр данных. После записи результата, в регистре управления устанавливается флаг запроса прерывания INT. При разрешённом прерывании обслуживание модуля выполняется либо обычной процедурой обработки, либо с использованием сервиса EI2OS.
Модуль АЦП может работать в трёх основных режимах:
- режим одиночного преобразования: выполняется один цикл преобразования сигналов с выбранных входов (StartAN0AN1AN2AN3Конец_преобр.);
- режим непрерывного преобразования: циклически (непрерывно) преобразуются сигналы с выбранных входов (StartAN0AN1AN0AN1….);
- режим преобразования с приостановкой: циклически преобразуются сигналы с выбранных входов, но после обработки каждого сигнала происходит приостановка АЦП и переход к следующему входу выполняется после сигнала запуска преобразователя
(StartAN0приостановкаStartAN1приостановкаStart AN0приостановкаStart AN1….)
При многоканальной работе АЦП нужно учитывать, что в модуле имеется только один регистр данных. Новый результат преобразования записывается поверх старого. Для исключения потери данных, нужно успеть сохранить данные в памяти до их обновления. Многоканальную работу рекомендуется организовывать в режиме прерываний (обычных или с применением EI2OS). В режиме прерываний, после установки флага, переход к следующему каналу приостанавливается до его очистки. При обычных прерываниях флаг очищается программно, а в сервисе EI2OS –автоматически.
6.9. Система прерываний микроконтроллера
При появлении запроса прерывания, процессор откладывает выполнение текущей программы и переходит на выполнение специфической процедуры обработки прерывания. Эти процедуры разрабатываются пользователям для каждого источника запроса отдельно и под конкретную задачу.
Микроконтроллер выполняет четыре типа прерываний:
аппаратные прерывания по запросам от встроенных периферийных модулей;
программные прерывания при выполнении специальной команды вызова прерывания;
расширенный интеллектуальный сервис ввода/вывода (EI2OS), являясь разновидностью аппаратного прерывания, позволяет осуществлять обмен данными по типу прямого доступа к памяти;
исключения, возникающие при попытке выполнить не существующую команду.
Система прерываний обрабатывает запросы от 256 источников. Каждый источник может обслуживаться своей процедурой обработки прерывания. Начальный адрес процедуры обработки заносится в три младших байта 4-байтного вектора прерывания. Вектора прерываний размещаются по фиксированным адресам в банке 0хFF.
-
Номер
прерывания
Источник
Адрес вектора
прерывания
Регистр управления
прерыванием
Имя
Адрес
#24
16-bit reload timer 1
0xFFFF9C
#25
Input capture 0/1
0xFFFF98
ICR07
0x0000B7
#26
Output compare 0/1
0xFFFF94
#27
Input capture 2/3
0xFFFF90
ICR08
0x0000B8
#28
Output compare 2/3
0xFFFF8C
#29
Input capture 4/5
0xFFFF88
ICR09
0x0000B9
#30
Output compare 4/5
0xFFFF84
#31
A/D converter
0xFFFF80
ICR10
0x0000BA
#32
I/O timer/Watch timer
0xFFFF7C
#33
Serial I/O
0xFFFF78
ICR11
0x0000BB
#34
Sound generator
0xFFFF74