- •Конспект лекций оглавление
- •Общие с ведения о микроконтроллерах
- •Обобщенная структурная схема микроконтроллера
- •Система прерываний
- •Работа системы прерываний
- •Стек данных
- •Микроконтроллеры 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 в программу
Структурная схема микроконтроллеров pic16f87x:
Основные регистры дублируются в каждом банке для ускорения обращения к ним. Вручную приходится отслеживать переход из конца одного банка в начало программы в следующем банке в обход служебных регистров.
Служебные регистр:
В регистре STATUS содержатся флаги состояния АЛУ, флаги причины сброса микроконтроллера и биты управления банками памяти данных.
Регистр STATUS может быть адресован любой командой, как и любой другой регистр памяти данных. Если обращение к регистру STATUS выполняется командой, которая воздействует на флаги Z, DС и С, то изменение этих трех битов командой заблокирована. Эти биты сбрасываются или устанавливаются согласно логике ядра микроконтроллера. Команды изменения регистра STATUS также не воздействуют на биты -ТО и -РD. Поэтому, результат выполнения команды с регистром STATUS может отличаться от ожидаемого.
Регистр STATUS (адрес 03h, 83h, 103h или 183h)
R/W - 0 |
R/W - 0 |
R/W - 0 |
R-1 |
R-1 |
R/W - x |
R/W - x |
R/W - x |
IRP |
RP1 |
RP0 |
-TO |
-PD |
Z |
DS |
C |
7 |
|
|
|
|
|
|
0 |
R – чтение бита
W - запись бита
U – не реализовано, читается как 0
- n - значение после РОR
- х - неизвестное значение после РОR
бит 7: IRP: Бит выбора банка при косвенной адресации
1 = банк 2, 3(100h - 1FFh)
0 = банк 0, 1(000h – 0FFh)
биты 6-5: RP1: RP0: Биты выбора банка при непосредственной адресации
11 = банк 3(180h – 1FFh)
10 = банк 2(100h – 17Fh)
01 = банк 1(080h – 0FFh)
00 = банк 0 (000h – 07Fh)
бит 4: -ТО: Флаг переполнения сторожевого таймера
1 = после РОR или выполнения команд CLRWDT, SLEEP
0 = после переполнения WDТ
бит 3: -РD: Флаг включения питания
1 = после РОR или выполнения команды CLRWDT
0 = после выполнения команды SLEEP
бит 2: Z: Флаг нулевого результата
1 = нулевой результат выполнения арифметической или логической операции
0 = не нулевой результат выполнения арифметической или логической операции
бит 1: DC: Флаг десятичного переноса/заема (для команд ADDWF, ADDWL, SUBWF, SUBWL), заем имеет инверсное значение
1 = был перенос из младшего полубайта
0 = не было переноса из младшего полубайта
бит 0: С: Флаг переноса/заема (для команд ADDWF, ADDWL, SUBWF, SUBWL), заем имеет инверсное значение
1 = был перенос из старшего бита
0 = не было переноса из старшего бита
Примечание. Флаг заема имеет инверсное значение. Вычитание выполняется путем прибавления дополнительного кода второго операнда. При выполнении команд сдвига (RRF, RLF) бит С загружается старшим или младшим битом сдвигаемого регистра.
Регистр OPTION доступен для чтения и записи, содержит биты управления:
• Предварительным делителем ТМR0/WDT;
• Активным фронтом внешнего прерывания RBO/INT;
• Подтягивающими резисторами на входах РОRТВ.
Регистр OPTIONREG (адрес 81h или 181h)
R/W - 1 |
R/W - 1 |
R/W - 1 |
R/W - 1 |
R/W - 1 |
R/W - 1 |
R/W - 1 |
R/W - 1 |
-RBPU |
INTEDG |
T0CS |
T0SE |
PSA |
PS2 |
PS1 |
PS0 |
7 |
|
|
|
|
|
|
0 |
R – чтение бита
W - запись бита
U – не реализовано, читается как 0
- n - значение после РОR
- х - неизвестное значение после РОR
бит 7: -RBPU: Включение подтягивающих резисторов на входах РОRТВ
1 = подтягивающие резисторы отключены
0 = подтягивающие резисторы включены
бит 6: INTEDG: Выбор активного фронта сигнала на входе внешнего прерывания INT
1 = прерывания по переднему фронту сигнала
0 = прерывания по заднему фронту сигнала
бит 5: T0CS: Выбор тактового сигнала для ТМR0
1 = внешний тактовый сигнал с вывода RА4/Т0СК1
0 = внутренний тактовый сигнал CLKOUT
бит 4: T0SE: Выбор фронта приращения ТМR0 при внешнем тактовом сигнале
1 = приращение по заднему фронту сигнала (с высокого к низкому уровню) на выводе RА4/Т0СК1
0 = приращение по переднем фронту сигнала (с низкого к высокому уровню) на выводе RА4/Т0СК1
бит 3: PSA: Выбор включения предделителя
1 = предделитель включен перед WDТ
О = предделитель включен перед ТМR0
биты 2-0: PS2: PS0: Установка коэффициента деления предделителя
Значение |
Для ТМR0 |
Для WDТ |
000 |
1:2 |
1:1 |
001 |
1:4 |
1:2 |
010 |
1:8 |
1:4 |
011 |
1:16 |
1:8 |
100 |
1:32 |
1:16 |
101 |
1:64 |
1:32 |
110 |
1:128 |
1:64 |
111 |
1:256 |
1:128 |
Примечание. При использовании режима низковольтного программирования и включенных подтягивающих резисторах на РОRТВ необходимо сбросить в '0' 3-й бит регистра ТRISВ для выключения подтягивающего резистора на выводе КВЗ.
! Если производится обращение к несуществующей ячейке, то ошибки не возникает.
Если служебные регистры не задействованы, их можно не пользовать по своему усмотрению.