Мегаобучалка Главная | О нас | Обратная связь


Микроконтроллер как основной элемент



2019-12-29 201 Обсуждений (0)
Микроконтроллер как основной элемент 0.00 из 5.00 0 оценок




    

Характеристика микроконтроллера PIC16F877:

- высокоскоростная RISC архитектура;

- 35 инструкций;

- команды выполняются за один цикл,  выполняемых за два цикла.

- тактовая частота: DC - 20МГц, тактовый сигнал DC - 200нс;

- до 8к х 14 слов FLASH памяти программ, до 368 х 8 байт памяти данных (ОЗУ) До 256 х 8 байт EEPROM памяти данных;

- система прерываний (до 14 источников);

- 8-уровневый аппаратный стек;

- прямой, косвенный и относительный режим адресации;

-  выбор параметров тактового генератора;

- программирование в готовом устройстве;

-  широкий диапазон напряжений питания от 2.0В до 5.5В.

Рисунок 2.1 - Внешний вид микроконтроллера PIC16F877

 

2.1.1 Характеристика периферийных модулей.

Микроконтроллер имеет следующие периферийные модули:

- таймер 0: 8-разрядный таймер/счетчик с 8-разрядным  программируемым предделителем;

- таймер  1: 16-разрядный таймер/счетчик с возможностью подключения   внешнего резонатора;

- таймер 2: 8-разрядный таймер/счетчик с 8-разрядным программируемым предделителем и выходным делителем;

- два модуля ССР;

- многоканальное 10-разрядное АЦП.

- последовательный синхронный порт MSSP;

- последовательный синхронно-асинхронный приемопередатчик USART с поддержкой детектирования адреса.

Рисунок 2.2 - Структурная схема микроконтроллера PIC16F877

 

2.1.2 Организация памяти.

В микроконтроллерах PIC16F87X имеется три вида памяти. Память программ и память данных имеют раздельные шины данных и адреса, что позволяет выполнять параллельный доступ.

Рисунок 2.3 -Организация памяти в микроконтроллере PIC16F877

Микроконтроллеры PIC16F87X имеют 13-разрядный счетчик команд PC, способный адресовать 8К х 14 слов памяти программ. Физически реализовано FLASH памяти программ 8К х 14 в PIC16F877. Обращение к физически не реализованной памяти программ приведет к адресации реализованной памяти.

Адрес вектора сброса – 0000h. Адрес вектора прерываний – 0004h.

Память данных разделена на четыре банка, которые содержат регистры общего и специального (SFR) назначения. Биты RP1 (STATUS<6>) и RPO (STATUS<5>) предназначены для управления банками данных. В таблице показано состояние управляющих битов при обращении к банкам памяти данных.

Таблица 2.1 – Банки памяти

RP1:RP0 Банк
00 0
01 1
10 2
11 3

Объем банков памяти данных до 128 байт (7Fh). В начале банка размещаются регистры специального назначения, затем регистры общего назначения выполненные как статическое ОЗУ. Все реализованные банки содержат регистры специального назначения. Некоторые, часто используемые регистры специального назначения могут отображаться и в других банках памяти.

 

2.1.3 Регистры.

Обратиться к регистрам общего назначения можно прямой или косвенной адресацией, через регистр FSR.

С помощью регистров специального назначения выполняется управление функциями ядра и периферийными модулями микроконтроллера. Регистры специального назначения реализованы как статическое ОЗУ.

Врегистре STATUS содержатся флаги состояния АЛУ, флаги причины сброса микроконтроллера и биты управления банками памяти данных.

Регистр STATUS может быть адресован любой командой, как и любой другой регистр памяти данных. Если обращение к регистру STATUS выполняется командой, которая воздействует на флаги Z, DC и С, то изменение этих трех битов командой заблокирована. Эти биты сбрасываются или устанавливаются согласно логике ядра микроконтроллера. Команды изменения регистра STATUS также не воздействуют на биты -ТО и -PD. Поэтому, результат выполнения команды с регистром STATUS может отличаться от ожидаемого. Например, команда CLRF STATUS сбросит три старших бита и установит бит Z (состояние регистра STATUS после выполнения команды 000uu1uu, где u - не изменяемый бит).

При изменении битов регистра STATUS рекомендуется использовать команды, не влияющие на флаги АЛУ (SWAPF, MOVWF, BCF и BSF).

Таблица 2.2 - Регистр STATUS

R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x
IRP RP1 RPO -ТО -PD Z DC с
Бит 7             Бит0

 

 

бит 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 = после POR или выполнения команд CLRWDT, SLEEP

0 = после переполнения WDT

бит 3:   -PD: Флаг включения питания

1 = после POR или выполнения команды CLRWDT

0 = после выполнения команды SLEEP

бит 2:  Z: Флаг нулевого результата

1 = нулевой результат выполнения арифметической или логической операции

0 = не нулевой результат выполнения арифметической или логической операции

бит 1:  DC: Флаг десятичного переноса/заема (для команд ADDWF, ADDWL, SUBWF, SUBWL), заем имеет инверсное значение

1 = был перенос из младшего полубайта

0 = не было переноса из младшего полубайта

бит 0:  С: Флаг переноса/заема (для команд ADDWF, ADDWL, SUBWF, SUBWL), заем имеет инверсное значение

1 = был перенос из старшего бита

0 = не было переноса из старшего бита

Рисунок 2.4 - Запись значения в счетчик команд PC

13-разрядный регистр счетчика команд PC указывает адрес выполняемой инструкции. Младший байт счетчика команд PCL доступен для чтения и записи. Старший байт РСН, содержащий <12:8> биты счетчика команд PC, не доступен для чтения и записи. Все операции с регистром РСН происходят через дополнительный регистр PCLATH. При любом виде сброса микроконтроллера счетчик команд PC очищается. На рисунке 2-5 показано две ситуации загрузки значения в счетчик команд PC. Пример сверху, запись в счетчик команд PC происходит при записи значения в регистр PCL (PCLATH <4:0> —> РСН).

 

2.1.4 Порты ввода/вывода.

Некоторые каналы портов ввода/вывода мультиплицированы с периферийными модулями микроконтроллера. Когда периферийный модуль включен, вывод не может использоваться как универсальный канал ввода/вывода.

PORTA - 6-разрядный порт ввода вывода. Все каналы PORTA имеют соответствующие биты направления в регистре TRISA, позволяющие настраивать канал как вход или выход. Запись Т в TRISA переводит соответствующий выходной буфер в 3-е состояние. Запись '0' в регистр TRISA определяет соответствующий канал как выход, содержимое защелки PORTA передается на вывод микроконтроллера (если выходная защелка подключена к выводу микроконтроллера).

RA4 - имеет триггер Шмидта на входе и открытый сток на выходе, мультиплицирован с тактовым входом TOCK1. Все остальные каналы PORTA имеют TTL буфер на входе и полнофункциональные выходные КМОП буферы.

Каналы PORTA мультиплицированы с аналоговыми входами АЦП и аналоговым входом источника опорного напряжения VREF. Биты управления режимов работы каналов порта ввода/вывода PORTA находятся в регистре ADCON1.

Биты регистра TRISA управляют направлением каналов PORTA, даже когда они используются как аналоговые входы. Пользователь должен удостовериться, что соответствующие каналы PORTA настроены на вход при использовании их в качестве аналоговых входов.

 

Таблица 2.3 -  Функциональное назначение выводов PORTA

Обозначение вывода №бита Тип буфера Описание
RA0/AN0 Бит0 TTL Двунаправленный порт ввода/вывода или аналоговый вход
RA1/AN1 бит 1 TTL Двунаправленный порт ввода/вывода или аналоговый вход
RA2/AN2 бит 2 TTL Двунаправленный порт ввода/вывода или аналоговый вход
RA3/AN3 Бит3 TTL Двунаправленный порт ввода/вывода или аналоговый вход
RA4/TOCK1 бит 4 ST Двунаправленный порт ввода/вывода, может использоваться как ТОСК1, выход с открытым стоком
RA5/-SS/AN4 бит 5 TTL Двунаправленный порт ввода/вывода или вход выбора синхронного последовательного порта или

 

Обозначение: ST = вход с триггером Шмидта; TTL = входной буфер TTL.

    

2.1.5 Система команд.

Каждая команда микроконтроллеров PIC16F87X состоит из одного 14-разрядного слова, разделенного на код операции (OPCODE), определяющий тип команды и один или несколько операндов, определяющие операцию команды. Команды разделены на следующие группы: байт ориентированные команды, бит ориентированные команды, команды управления и операций с константами [22, 23]. Описание полей кода операции смотрите в таблице 4.6.

Для байт ориентированных команд ‘f’ является указателем регистра, а ‘d’ указателем адресата результата. Указатель регистра определяет, какой регистр должен использоваться в команде. Указатель адресата определяет, где будет сохранен результат. Если 'd'=0, результат сохраняется в регистре W. Если 'd'=1, результат сохраняется в регистре, который используется в команде.

 Система команд аккумуляторного типа, ортогональна и разделена на три основных группы:

- байт ориентированные команды;

- бит ориентированные команды;

- команды управления и операций с константами.

Все команды выполняются за один машинный цикл, кроме команд условия, в которых получен истинный результат и инструкций изменяющих значение счетчика команд PC. В случае выполнения команды за два машинных цикла, во втором цикле выполняется инструкция NOP. Один машинный цикл состоит из четырех тактов генератора. Для тактового генератора с частотой 4 МГц все команды выполняются за 1мкс, если условие истинно или изменяется счетчик команд PC, команда выполняется за 2мкс.

 

Таблица 2.4 -Описание полей кода операции

Поле Описание
f Адрес регистра (от 0x00 до 0x7F)
w Рабочий регистр (аккумулятор)
b Номер бита в 8-разрядном регистре
k Константа (данные или метка)
X Не имеет значения (0 или 1 ). Ассемблер генерирует х=0 для совместимости программы микроконтроллера с инструментальными средствами
d Указатель адресата результата операции: d = 0 - результат сохраняется в регистре w d = 1 - результат сохраняется в регистре f По умолчанию d = 1
label Имя метки
dest Приемник, регистр w или регистр памяти
[] Дополнительные параметры
0 Содержимое
-> Присвоение
< > Битовое поле

Структура команд имеет следующий вид:

Рисунок 2.5 - Форма команд трех основных групп

 

Термодатчик DS 1820

 

Термодатчики типа DS18x20, выпускаемые фирмой Dallas Semiconductor, предназначены для совместной работы с микрокон­троллерными устройствами. Разработанный фирмой однопроводной интер­фейс (l-Wire Bus) использует одну линию передачи данных, которые удобно обрабатывать микроконтроллерами [2].

Датчик температуры DSl820 представляет собой специализированный микроконтроллер, который имеет установку кон­фигурации, вычислительное устройство, память программ, память данных и реакцию на внешнее воздействие. При этом внешнее управляющее воздействие выполняет микропроцессор PIC 16 F 877 приема и обработки данных.

Термодатчики DS1820 имеют следующие технические характеристики:

- индивидуальный 64-битный идентификационный номер;

- напряжение питания от +3 до +5,5 В;

- измеряемая температура от -55 до + 125°С;

- погрешность измерения температуры в диапазоне -10...+85°С не более 0,5°С;

- информация о температуре выдается 9-битным кодом;

- установка пороговых значений температуры по максимуму и минимуму;

- максимальное время преобразования температуры в код 750 мс;

- возможность питания от высокого уровня шины данных;

- термодатчики не требуют индивидуальной настройки при замене.

Термодатчики выпускают в двух типах корпусов: ТО-92 и SOIC. Наиболее удобный для применения в выносном варианте трехвыводной корпус ТО-92.

Назначение выводов: 1 (5) — общий (земля), 2 (4) — вход/выход, 3 (3) — плюс питания. В скобках указаны номера выводов для восьмивыводного корпуса SOIC.        

Принцип работы термодатчика основан на сравнении частот двух внут­ренних генераторов. Один генератор выдает постоянную частоту независимо от температуры, а частота второго генератора изменяется в зависимости от температуры корпуса термодатчика. Путем вычислений формируется выход­ной код, который включает и информацию о знаке температуры.

Для начала работы с термодатчиком управляющий микроконтроллер дол­жен инициализировать его посылкой необходимых команд. Перечень основных команд термодатчика:

F0h - поиск ROM (Search ROM) - команда выдается управляющим микроконтроллером для определения числа и типа термодатчиков, подключенных к одной линии.

33h - чтение ROM (Read ROM) - команда инициализирует термодатчик для генерации в линию идентификационного номера. Эту команду нельзя посылать, если к одной линии связи подключено несколько термодатчиков. Прежде чем подключить несколько датчиков на одну линию, необходимо для каждого датчика определить его личный номер с использованием данной команды.

55h - идентификация ROM (Match ROM) - команда выдается перед 64-битным идентификационным номеромпод­тверждает обращение именно к этому термодатчику. Все последующие коман­ды будут восприниматься только одним датчиком до команды обнуления ли­нии.

CCh - пропуск ROM (Skip ROM) - команда может использоваться, когда необходимо обратиться ко всем датчикам, расположенным на одной линии, или когда к линии подключен только один датчик. Общей для многих датчиков может быть команда начала преобразования температуры. При обращении к одному термодатчику коман­да позволяет упростить программу за счет того, что пропускается громоздкая подпрограмма идентификации кода и вы­числения кода четности.

ECh - поиск аварии (Alarm Search) - действие команды аналогично команде «Поиск ROM», но отвечает на нее термодатчик, если измеренная температура выходит за пределы предваритель­ных установок по максимуму и минимуму.

44h - начало преобразования температуры (Convert Т) - команда разрешает преобразование температуры и запись результата в блокнот. От подачи этой команды до считывания необходимо выдержать паузу, не­обходимую для преобразования с установленной точностью.

Beh - чтение блокнота (Read Scratchpad) - в блокноте содержится 8 байт информации (рисунок 2.6). Если нужна инфор­мация только о температуре, то считывается 9 бит. Термодатчик будет выда­вать информацию до тех пор, пока управляющий микроконтроллер не выдаст в линию нулевой импульс.

Рисунок 2.6 – Карта памяти термодатчика DS 1820

4Eh - запись в блокнот (Write Scratchpad) - после этой команды управляющий микроконтроллер должен послать два байта для записи в блокнот максимальной ТН и минимальной TL температу­ры ограничения по максимуму и минимуму. Все 16 бит необходимо переда­вать непрерывно без обнуления линии.

48Н - копирование блокнота (Copy Scratchpad) - после этой команды минимальная (TL) и максимальная (ТН) установлен­ные значения температур переписываются в энергонезависимую память (EEPROM). После отключения напряжения питания записанные значения! сохранятся в памяти.

B8h - восстановление (Recall В2) - команда необходима для копирования значений температуры из. EEPROM в рабочую зону блокнота. При выполнении восстановления термо­датчик выдает в линию низкий уровень, а после окончания записи — высокий.

B4h - питание от линии (Read Power Supply) - после этой команды термодатчик переходит к питанию от линии. В составе термодатчика имеется конденсатор, который заряжается от высокого уровня линии.

Перед опросом термодатчика управляющим микроконтроллером необходимо выдержать время, необходимое для заряда конденсатора.

Микроконтроллерный термодатчик тактируется внутренним генератором частотой 4 МГц и рассчитан на работу с управляющим микроконтроллером, который должен тактироваться такой же частотой.

Термодатчик работает на пониженных частотах из-за большого разброса дли­тельности импульсов принятого в интер­фейсе формата обмена данными между термодатчиком и управляющим микро­контроллером.

Передача данных по однопроводной шине выполняется импульсами нулево­го уровня, но различной длительности. Импульс воспринимает­ся как логическая 1, если его длительность не превышает 15 мкс (рисунок 2.7). Если дли­тельность импульса больше 15 мкс, то он воспринимается как логический 0.

Рисунок 2.7 – Импульсы логического 0 и 1

Длитель­ность одного бита информации приня­та равной 60 мкс. Отсюда и разброс возможных длительностей импульсов: лог. 0 — I...15 мкс, лог. 1 — 15...60 мкс. Для того чтобы термодатчик подго­товить к приему информации, управ­ляющий микроконтроллер должен по­слать в линию импульс обнуления (Reset) (рисунок 2.8).

Рисунок 2.8 – Импульс обнуления термодатчика

Импульс обнуления должен иметь длительность 480...960 мкс. В ответ на обнуление линии термодат­чик посылает импульс присутствия (Presence). Если в устройстве не преду­смотрено отключение датчика, то им­пульс присутствия для упрощения про­граммы можно не проверять, а запол­нить это время (около 100 мкс) паузой. Длительность импульса Presence может быть в пределах 60...240 мкс.

Если к одной линии подключено несколько термодатчиков, то проверка импульса присутствия обязательна. Перед приемом каждого бита информации с датчика, микроконтроллер управления  PIC должен послать короткий импульс го­товности (запроса) длительностью 1...3 мкс.

Обмен данными и командами начинается с младшего бита. Формат реги­стров термодатчика показан на рисунке 2.9.

Младший регистр температуры LS

26 25 24 23 22 21 20 2-1

Старший регистр температуры MS (знаковый)

S S S S S S S S

Регистры установки ограничения температуры TH, TL

S 26 25 24 23 22 21 20

 

Рисунок 2.9 – Формат регистров термодатчика DS 1820

Младший регистр температуры (LS) несет информацию о температуре. В нулевой бит записана информация о де­сятых долях температуры. Если нулевой бит единичный, то десятые доли рав­ны 0,5°С.

Старший регистр температуры (MS) содержит информацию о знаке температуры, Дели значения регистра нулевые, то знак температуры положи­тельный, и наоборот.

Поскольку все биты регистра MS одинаковы, то доста­точно считать только младший бит, т.е. длина слова от термодатчика составляет 9 бит = 8 бит (температура LS) + 1 бит знаковый (MS).

Регистры установки ограничения температуры Тн, TL несут информацию только о целых значениях температуры. В седьмом бите записывают информацию знаке температуры. При отрицательной температуре в седьмой бит необходимо записать единицу.

Таблица 2.5 – Значения кодов термодатчика при различной температуре

Температура Формируемый двоичный код Шестнадцатиричный код
+85,0о С +25,0o C  +0,5o C   0o C -0,5o C  -25,0o C -55,0o C 0000 0000 1010 1010 0000 0000 0011 0010 0000 0000 0000 0001 0000 0000 0000 0000 1111 1111 1111 1111 1111 1111 1100 1110 1111 1111 1001 0010 00ААh 0032h 0001h 0000h FFFFh FFCEh FF92h

 

 

В таблице 2.5 приведен пример принимаемых кодов при различных температу­рах. Для того чтобы получить значение температуры при минусовых темпера­турах, необходимо принятую информацию перевести в дополнительный код. Для перевода в дополнительный код необходимо принятый код инвертиро­вать и прибавить единицу. Например, для значения 1111 1111 получим 0000 0001, т. е. 0.5°С, но со знаком минус.

Последовательность действий управляющего микроконтроллера PIC при считывании температуры с одного термодатчика DS 1820:

 

1) послать сигнал обнуления линии (480…960 мкс);

2) принять импульс присутствия или заполнить паузой (60…240 мкс);

3) послать команду пропуска идентификации 0хССh;

4) послать команду начала преобразования 0х44h;

5) пауза не менее 500 мкс для завершения процесса преобразования;

6) обнулить линию;

7) послать команду пропуска идентификации 0хССh;

8) послать команду считывания блокнота 0х0Вh;

9) принять 9 байт;

10) проанализировать бит знака;

11) если знак отрицательный, то перевести значение температуры в  дополнительный код.

Программа управления термодатчиком приведена в параграфе 3.2.

 



2019-12-29 201 Обсуждений (0)
Микроконтроллер как основной элемент 0.00 из 5.00 0 оценок









Обсуждение в статье: Микроконтроллер как основной элемент

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы...
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (201)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.012 сек.)