
- •Конспект лекций оглавление
- •Общие с ведения о микроконтроллерах
- •Обобщенная структурная схема микроконтроллера
- •Система прерываний
- •Работа системы прерываний
- •Стек данных
- •Микроконтроллеры Intel, Motorola и Microchip
- •Краткое описание особенностей микроконтроллеров
- •Работа сср в режиме шим
- •Примеры контроллеров 18еххх, 16еххх. Характеристики 16 и 18 серии.
- •Периферийные модули
- •Основные характеристики микроконтроллеров
- •Рекомендации по схематическому решению для портов (16 серия)
- •Структура памяти
- •Банк памяти быстрого доступа
- •Регистр выбора банка памяти данных bsr (18 серия)
- •Косвенная адресация, регистра indf и fsr
- •Операция косвенной адресации
- •Механизм косвенной адресации
- •Работа с памятью рiс16fххх
- •Чтение из еерrом-памяти
- •Запись еерrом данных
- •Управление прерываниями Серия рiс16ххх
- •Система прерывании рiс18fхх2
- •Обработка прерываний
- •Контроллеры pic16f87x
- •Карта памяти микроконтроллеров:
- •Структурная схема микроконтроллеров pic16f87x:
- •Служебные регистр:
- •Контроллеры 18 серии
- •Карта памяти микроконтроллеров рiс18f242/442:
- •Регистры конфигурации контроллера:
- •Аппаратный умножитель 8х8
- •Модуль ацп
- •Конфигурация выводов модуля ацп (рiс16f873/76)
- •Источник опорного напряжения
- •Параллельные порты ввода/вывода
- •Последовательный синхронный порт (мssр)
- •Временные диаграммы работы mssp
- •Пример соединения двух мк через spi
- •Режим i2c последовательного порта mssp.
- •Асинхронно-синхронный последовательный порт (usart)
- •Временные диаграммы работы usart в асинхронном режиме
- •Ведомый параллельный порт (psp)
- •Временные диаграммы порта psp
- •Способы кодирования данных
- •Универсальная последовательная шина (usb) Краткий обзор шины
- •Протоколы передачи
- •Питание
- •Оконечные точки
- •Нумерация устройств
- •Описатели
- •Классы устройств / Драйверы класса
- •Микроконтроллеры с модулем usb
- •Приемопередатчик
- •Регистры управления и состояния модуля usb
- •Регистр флагов прерываний модуля usb (uir)
- •Регистр разрешения прерываний модуля usb (uie)
- •Регистр флагов ошибок модуля usb (ueir)
- •Регистр разрешения прерывания по ошибкам модуля usb (ueie)
- •Регистр состояния модуля usb (ustat)
- •Регистр управления модулем usb (uctrl)
- •Регистр адреса usb (uaddr)
- •Регистр состояния программного обеспечения usb
- •Регистры управления оконечными точками (uepn)
- •Буферы оконечных точек
- •Программирование модуля usb
- •Программное обеспечение usb
- •Основные функции и подпрограммы
- •Ресурсы процессора
- •Уровни стека
- •Память программ
- •Память данных
- •Буферные регистры
- •Выбор страниц/Выбор банков
- •Интегрирование подпрограмм usb в программу
Контроллеры 18 серии
Карта памяти микроконтроллеров рiс18f242/442:
Память данных разделена на 16 банков по 256 байт. Младшие 4 бита регистра ВSR, используются для выбора текущего банка памяти (ВSR <3:0>). Старшие 4 бита не реализованы.
Память данных содержит регистры специального (SFR) и общего (GPR) назначения. Регистры SFR используются для управления ядром и периферийных модулей контроллера, в то время как GPR используются для хранения данных пользователя.
Регистры конфигурации контроллера:
Регистр конфигурации GONFIG1H (адрес 300001h)
U-0 |
U-0 |
R/P - 1 |
U-0 |
U-0 |
R/P - 1 |
R/P - 1 |
R/P - 1 |
- |
- |
-OSCEN |
- |
- |
FOSC2 |
FOSC1 |
FOSC0 |
Бит 7 |
|
|
|
|
|
|
Бит 0 |
бит 7-6 Не используется: читается как '0'
бит 5 -OSCEN: Разрешение переключения источника тактового сигнала
1 = функция переключения источника тактового сигнала заблокирована (только основной генератор)
0 = разрешено переключения источника тактового сигнала
бит 4-3 Не используется: читается как '0'
бит 2-0 FOSC2: FOSC0: Режим тактового генератора
111 = RС генератор, вывод OSC2 работает как RА6
110 = HS генератора с включенной функцией PLL. Тактовая частота =4xFosc
101 = ЕС режим генератора, вывод OSC2 работает как RА6
100 = ЕС режим генератора, на выводе OSC2 тактовая сигнал Fosc/4
011 = RС режим генератора
010 = НS режим генератора
001 = ХТ режим генератора
000 = LР режим генератора
Регистр конфигурации GONFIG2L (адрес 300002h)
U-0 |
U-0 |
U-0 |
U-0 |
R/P - 1 |
R/P - 1 |
R/P - 1 |
R/P - 1 |
- |
- |
- |
- |
BORV1 |
BORV0 |
BODEN |
-PWRTEN |
Бит 7 |
|
|
|
|
|
|
Бит 0 |
бит 7-4 Не используется: читается как '0'
бит З-2 BORV1: BORV0: Напряжение сброса ВОR
11 = VBOR = 2.0B
10 = VBOR = 2.7B
01 = VBOR = 4.2B
00 = VBOR = 4.5B
бит 1 BODEN: Разрешение сброса по снижению напряжение питания
1 = сброс ВОR разрешен
0 = сброс ВОR запрещен
Примечание. При разрешении сброса ВОR автоматически разрешается работа таймера PWRT независимо от состояния бита -PWRТЕN. Необходимо гарантировать, что при разрешении сброса ВОR включен таймер PWRT.
бит 0 -PWRTEN: Разрешение работы таймера включения питания
1 = PWRT включен
0 = PWRT выключен
Примечание. При разрешении сброса ВОR автоматически разрешается работа таймера PWRT независимо от состояния бита -PWRTEN. Необходимо гарантировать, что при разрешении сброса ВОR включен таймер PWRT.
Регистр конфигурации GONFIG2H (адрес 300003h)
U-0 |
U-0 |
U-0 |
U-0 |
R/P - 1 |
R/P - 1 |
R/P - 1 |
R/P - 1 |
- |
- |
- |
- |
WDTPS2 |
WDTPS1 |
WDTPS0 |
WDTEN |
Бит 7 |
|
|
|
|
|
|
Бит 0 |
бит 7-4 Не используется: читается как '0'
бит 3-1 WDTPS2: WDTPS0: Коэффициент постделителя WDT
111 =1:128
110 = 1:64
101 = 1:32
100 = 1:16
011 = 1:8
010 = 1:4
001 = 1:2
000 = 1:1
бит 0 WDTEN: Включение WDT
1 = WDT включен
0 = WDT выключен (управление битом SWDTEN)
Регистр конфигурации GONFIG3H (адрес 300005h)
U-0 |
U-0 |
U-0 |
U-0 |
U-0 |
U-0 |
U-0 |
R/P - 1 |
- |
- |
- |
- |
- |
- |
- |
CCP2MX |
Бит 7 |
|
|
|
|
|
|
Бит 0 |
бит 7-1 Не используется: читается как '0'
бит 0 CCP2MX: Управление мультиплексом ССР2
1 = вход/выход ССР2 подключен к выводу RC1
0 = вход/выход ССР2 подключен к выводу RB3
Регистр конфигурации GONFIG4L (адрес 300006h)
R/P - 1 |
U-0 |
U-0 |
U-0 |
U-0 |
R/P - 1 |
U-0 |
R/P - 1 |
-DEBUG |
- |
- |
- |
- |
LVP |
- |
STVREN |
Бит 7 |
|
|
|
|
|
|
Бит 0 |
бит 7 -DEBUG: Включение внутрисхемной отладки
1 = внутрисхемная отладка выключена, выводы RВ6 и RВ7 работают как каналы вводы/вывода
0 = внутрисхемная отладка включена, выводы RВ6 и RВ7 используются отладчиком
бит 6-3 Не используется: читается как '0'
бит 2 LVP: Разрешения низковольтного программирования
1 = низковольтное программирование разрешено
0 = низковольтное программирование запрещено
бит 1 Не используется: читается как '0'
бит 0 STVREN: Сброс при переполнении/исчерпании стека
1 = при переполнении/исчерпании стека происходит сброс микроконтроллера
0 = при переполнении/исчерпании стека сброс микроконтроллера не выполняется
Регистр конфигурации GONFIG5L (адрес 300008h)
U-0 |
U-0 |
U-0 |
U-0 |
R/С - 1 |
R/С - 1 |
R/С - 1 |
R/С - 1 |
- |
- |
- |
- |
CP3(1) |
CP2(1) |
CP1(1) |
CP0(1) |
Бит 7 |
|
|
|
|
|
|
Бит 0 |
бит 7-4 Не используется: читается как '0'
бит 3 CP3: Защита памяти программ(1)
1 = блок 3 (006000 – 007FFFh) защита выключена
0 = блок 3 (006000 – 007FFFh) защита включена
бит 2 СР2: Защита памяти программ(1)
1 = блок 2 (004000 – 005FFFh) защита выключена
0 = блок 2 (004000 – 005FFFh) защита включена
бит 1 СР1: Защита памяти программ
1 = блок 1 (002000 - 003FFFh) защита выключена
0 = блок 1 (002000 - 003FFFh) защита включена
бит 0 СР0: Защита памяти программ
1 = блок 0 (000200 -001FFFh) защита выключена
0 = блок 0 (000200- 001 FFFh) защита включена
Примечание 1. Не реализованы в РIС18FХ42, должны быть оставлены не запрограммированными.
Регистр конфигурации GONFIG5H (адрес 300009h)
R/С - 1 |
R/С - 1 |
U-0 |
U-0 |
U-0 |
U-0 |
U-0 |
U-0 |
CPD |
CPB |
- |
- |
- |
- |
- |
- |
Бит 7 |
|
|
|
|
|
|
Бит 0 |
бит 7 СРD: Защита ЕЕРRОМ памяти данных
1 = защита ЕЕРRОМ памяти данных выключена
0 = защита ЕЕРRОМ памяти данных включена
Сит 6 СРВ: Защита памяти программ
1 = загрузочный блок (000000 - 0001FFh) защита выключена
0 = загрузочный блок (000000 - 0001FFh) защита включена
бит 5-0 Не используется: читается как '0'
Регистр конфигурации GONFIG6L (адрес 30000Ah)
U-0 |
U-0 |
U-0 |
U-0 |
R/P - 1 |
R/P - 1 |
R/P - 1 |
R/P - 1 |
- |
- |
- |
- |
WRT3(1) |
WRT2(1) |
WRT1(1) |
WRT0(1) |
Бит 7 |
|
|
|
|
|
|
Бит 0 |
бит 7 - 4 Не используется: читается как '0'
бит 3 WRT3: Защита записи в память программ(1)
1 = блок 3 (006000 - 007FFFh) защита выключена
0 = блок 3 (006000 - 007FFFh) защита включена
бит 2 WRT2: Защита записи в память программ(1)
1 = блок 2 (004000 - 005FFFh) защита выключена
0 = блок 2 (004000 - 005 FFFh) защита включена
бит 1 WRT1: Защита записи в память программ
1 = блок 1 (002000 - 003FFFh) защита выключена
0 = блок 1 (002000 - 003FFFh) защита включена
бит 0 WRT0: Защита записи в память программ
1 = блок 0 (000200-001FFFh) защита выключена
0 = блок 0 (000200 - 001FFFh) защита включена
Примечание 1. Не реализованы в РIС18FХ42. должны быть оставлены не запрограммированными.
Регистр конфигурации GONFIG6H (адрес 30000Bh)
R/P - 1 |
R/P - 1 |
R/P - 1 |
U-0 |
U-0 |
U-0 |
U-0 |
U-0 |
WRTD |
WRTB |
WRTC |
- |
- |
- |
- |
- |
Бит 7 |
|
|
|
|
|
|
Бит 0 |
Бит7 WRTD: Защита записи EEPROM память данных
1 = запись в ЕЕРRОМ память данных разрешена
0 = запись в ЕЕРRОМ память данных запрещена
бит 6 WRTB: Защита записи в память программ
1 = загрузочный блок (000000 - 0001FFh) защита выключена
0 = загрузочный блок (000000 - 0001FFh) защита включена
бит 5 WRTC: Защита записи в регистры конфигурации
1 = регистры конфигурации (300000 - 3000FFh) защита выключена
0 = регистры конфигурации (300000 - 3000FFh) защита включена
бит 4-0 Не используется: читается как '0'
Регистр конфигурации GONFIG7L (адрес 30000Ch)
U-0 |
U-0 |
U-0 |
U-0 |
R/P - 1 |
R/P - 1 |
R/P - 1 |
R/P - 1 |
- |
- |
- |
- |
EBTR3(1) |
EBTR2(1) |
EBTR1(1) |
EBTR0(1) |
Бит 7 |
|
|
|
|
|
|
Бит 0 |
бит 7 Не используется: читается как '0'
бит 3 EBTR3: Защита памяти программ от табличного чтения(1)
1 = блок 3 (006000 - 007FFFh) защита выключена
0 = блок 3 (006000 - 007FFFh) защита включена
бит 2 EBTR2: Защита памяти программ от табличного чтения(1)
1 = блок 2 (004000 - 005FFFh) защита выключена
0 = блох 2 (004000 - 005FFFh) защита включена
бит 1 EBTR1: Защита памяти программ от табличного чтения
1 = блок 1 (002000 - 003FFFh) защита выключена
0 = блок 1 (002000 - 003FFFh) защита включена
бит 0 EBTR0: Защита памяти программ от табличного чтения
1 = блок 0 (000200- 001FFFh) защита выключена
0 = блок 0 (000200- 001FFFh) защита включена
Примечание 1. Не реализованы в РIС18FХ42. должны быть оставлены не запрограммированными.
Регистр конфигурации GONFIG7H (адрес 30000Dh)
U-0 |
R/P - 1 |
U-0 |
U-0 |
U-0 |
U-0 |
U-0 |
U-0 |
- |
EBTRB |
- |
- |
- |
- |
- |
- |
Бит 7 |
|
|
|
|
|
|
Бит 0 |
бит 7 Не используется: читается как '0'
бит 6 EBTRB: Защита памяти программ от табличного чтения
1 = загрузочный блок (000000 – 0001FFh) защита выключена
0 = загрузочный блок (000000 - 0001FFh) защита включена
бит 5-0 Не используется: читается как'0'
Регистр RCON
R/W - 0 |
U-0 |
U-0 |
R/W - 1 |
R/W - 1 |
R/W - 1 |
R/W - 1 |
R/W - 1 |
IPEN |
- |
- |
-RI |
-TO |
-PD |
-POR |
-BOR |
7 |
|
|
|
|
|
|
0 |
R - чтение бита
W - запись бита
U - не реализовано, читается как 0
- n - значение после РОR
- х - неизвестное значение после РОR
бит 7: IPEN: Разрешение приоритетной системы прерываний
1 = приоритетная система прерываний разрешена
0 = приоритетная система прерываний выключена (для совместимости с РIС16СХХХ)
бит 6-5: Не используется: Читается как '0'
бит 4: -RI: Флаг выполнения команды RЕSЕТ
1 = команда RЕSЕТ не выполнялась
0 = сброс контроллера произошел
бит 3: -ТО: Флаг переполнения сторожевого таймера WDT
1 = после РОR или выполнения команд CLRWDT, SLEEP
О = после переполнения WDT
бит 2: -PD: Флаг детектора выключения питания
1 = после РОR или выполнения команды CLRWDT
0 = после выполнения команды SLEEP
опт 1: -РОR: Флаг сброса по включению питания РОК
1 = сброса по включению питания не происходило
0 = произошел сброс по включению питания
бит 0: -BОR: Флаг сброса по снижению напряжения питания
1 = сброса по снижению напряжения питания не происходило
0 = произошел сброс по снижению напряжения питания
Регистр STATUS
U-0 |
U-0 |
U-0 |
R/W - x |
R/W - x |
R/W - x |
R/W - x |
R/W - x |
- |
- |
- |
N |
OV |
Z |
DC |
C |
7 |
|
|
|
|
|
|
0 |
R - чтение бита
W - запись бита
U - не реализовано, читается как 0
- n - значение после РОR
- х - неизвестное значение после РОR
бит 7-5: Не используется: Читается как '0'
бит 4: N: Флаг отрицательного результата
Этот бит используется для арифметики дополнения до 2. Флаг указывает на отрицательный результат (АЛУ МSB=1)
1 = отрицательный результат
0 = положительный результат
бит 3: OV: Флаг переполнения
Флаг указывает на переполнение 7-разрядного значения, что привело к изменению старшего бита банта
1 = произошло переполнение
0 = переполнения не было
бит 2: Z: Флаг нулевого результата
1 = нулевой результат выполнения арифметической или логической операции
0 = не нулевой результат выполнения арифметической или логической операции
бит 1: DC: Флаг десятичного переноса/заема
1 = был перенос из младшего полубайта
0 = не было переноса из младшего полубайта
бит 0: С: Флаг переноса/заема
1 = был перенос из старшего бита
0 = не было переноса из старшего бита
Примечание: Флаг заема имеет инверсное значение. Вычитание выполняется путем прибавления дополнительного кода второго операнда. При выполнении команды сдвига (RRF, RLF) бит С загружается старшим или младшим битом сдвигаемого регистра.