Смекни!
smekni.com

Разработка микропроцессорной системы климат-контроля (стр. 3 из 6)

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 - результат сохраняется в регистре wd = 1 - результат сохраняется в регистре fПо умолчанию d = 1
label Имя метки
dest Приемник, регистр w или регистр памяти
[] Дополнительные параметры
0 Содержимое
-> Присвоение
< > Битовое поле

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

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

2.2 Термодатчик DS1820

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

Датчик температуры DSl820 представляет собой специализированный микроконтроллер, который имеет установку кон­фигурации, вычислительное устройство, память программ, память данных и реакцию на внешнее воздействие. При этом внешнее управляющее воздействие выполняет микропроцессор PIC16 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 (SearchROM) - команда выдается управляющим микроконтроллером для определения числа и типа термодатчиков, подключенных к одной линии.

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

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

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

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

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

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

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

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