Особые режимы микроконтроллеров
Тактирование микроконтроллера. Режимы сброса и прерывания в МК, их аппаратная и программная реализация. Сторожевой таймер WDT. Режим пониженного потребления микроконтроллера.
Для тактирования микроконтроллера в нем имеются отдельные компоненты тактового генератора.Тип компоненты тактового генератора. Тип генератора выбирается путем установки определенных битов в слове конфигурации процессора CPU микроконтроллера. Возможно внутреннее тактирование при условии подключения ко входам OSC1 и OSC2 контроллера керамического резонатора (для режимов ХT и HS) или кварцевого резонатора (для режимов LP, XT и HS).
При не очень высоких требованиях к стабильности тактовой частоты МК можно выбрать режим RC – генератора. В этом случае следует подключить ко входу OSC1 контроллера RC-цепочку, параметры которой задаются в соответствии с таблицами и графиками, приводимыми в технической документации на контроллер. На рис.11 приведена электрическая схема подключения RC- цепи при тактировании МК в режиме RC – генератора. Там же дано расположение выводов (цоколевка) на корпусе PIC16F84.
Рис.11. Подключение RC-цепи в режиме RC-генератора и цоколевка PIC16F84. |
Значение емкости конденсатора Сext не рекомендуется выбирать менее 20 пФ, а величину сопртивления резистора Rext менее – 2,2 кОм. Рекомендуемый диапазон Rext лежит в пределах 3… 100 кОм. (При Rext > 1 МОм генератор становится чувствительным к токам утечки и к внешним помехам).
|
|
Рис.12. Схема подключения внешнего генератора для тактирования микроконтроллера |
Ориентировочно для получения тактовой частоты Fosc = 4 МГц можно выбрать Сext = 100 пФ и Rext = 2,4 кОм. Выход OSC2/ CLKOUT используется для контроля работы микропроцессора. На этом выходе частота в 4 раза ниже, чем тактовая. Контроль Fosc позволяет более точно подобрать постоянную времени RC-цепи для получения ее нужного значения. Если желательно, чтобы от одного тактового генератора кроме МК работали и другие электронные узлы, то целесообразно иметь внешний генератор для тактирования МК. В таком случае нельзя для МК устанавливать режим внутреннего RC-генератора, а вход OSC2 должен оставаться свободным. На рис.12 показана рекомендуемая схема внешнего генератора и его подключение к МК (в режимах XT, LP и HS)
Предпочтение отдается схеме с последовательным резонансом кварца, как более стабильной. Первоначальный, а также принудительный сброс микроконтроллера по инверсному входу MСLR гарантированно выполняется в схеме рис.13. Напряжение питания схемы 5 В. Элементы схемы: R1= 7,5 кОм, R3 = =1кОм, C1= 0,3 мкФ. Диод VD1 (маломощный высокочастотный, например, типа КД502В) – для ускорения разряда конденсатора С1 после выключения питания на случай его быстрого включения (например, при кратковременных импульсных сбоях по питанию).
|
|
Постоянная времени τ =R1C1= 2,2 мс достаточна для первоначального сброса микроконтроллера (она определяет время удержания входа MSLR в низкоуровневом состоянии после включения питания). Несложно вычислить время, отводимое на сброс, зная нижний ТТЛ- уровень логической 1 (это 2,4 В) и то, что заряд С1происходит по закону Uc=Uc m (1– e –t/τ). Отметим также, что S1 – это нажимная нефиксируемая кнопка (то есть сразу после замыкания контактов 1-2 происходит их размыкание). Резистор R3 служит для ограничения тока по входу MSLR непосредственно к Епит.
Рис.13. Схема запуска и внешнего сброса микроконтроллера PIC16F84. |
При включении питания и достижении им уровня 1,2…1,7 В в микроконтроллере с помощью его специального внутреннего таймера PWRTформируется внутренний сигнал сброса, однако при медленном нарастании Епит нормальный сброс МК может не произойти.
Включение /отключение таймера PWRT выполняется только на этапе конфигурирования процессора (CPU) установкой соответственно 1/0 бита 3 (бита разрешения задержки по включению питания) в слове конфигурации микроконтроллера.
|
|
В PIC16F84 имеется сторожевой таймер WDT, тактируемый встроенным отдельным RC- генератором. Его назначение – сбрасывать микроконтроллер при переполнении WDT. Включение/отключение таймера WDT осуществляется установкой 1/0 бита 2 в слове конфигурации. Как уже упоминалось, он используется для сброса МК, чтобы выйти из возможного зависания при сбоях программы.
Номинальное время переполнения таймера WDT (без предделителя) составляет 18 мс. Его можно увеличить до 2,3с установкой предделителя 1: 128. Чтобы по таймеру WDT не происходило непредвиденное прерывание нормально работающей программы, следует его программно периодически сбрасывать командой CLRWDT. Следует иметь в виду, что одновременно с содержимым таймера WDT сбрасывается и его предделитель. (Можно рекомендовать выполнять программный сброс , когда содержимого WDT достигнет заданного значения немного меньшего, чем максимальное).По переполнению таймера WDT микроконтроллер может выходить из режима пониженного энергопотребления, если такой режим установлен.
Еще один особый таймер микроконтроллера – таймер OST, таймер задержки запуска тактового генератора (на 1024 такта). Задержка по таймеру OST работает только в режимах HS, XT и LP. Она необходима для гарантированной стабилизации частоты генератора кварцевым (керамическим) резонатором перед началом выполнения текущей программы.
|
|
Микроконтроллер переходит в режим пониженного энергопотребления (режим останова или SLEЕP) по команде SLEЕP. Если планируется работа МК в этом режиме, то целесообразно выбирать LP режим генератора, при котором сам генератор потребляет наименьшую мощность. При входе в режим останова сторожевой таймер ( если он включен) сбрасывается, устанавливается флаг срабатывания сторожевого таймера (флаг ТО, бит STATUS<4> =1) и отключается тактовый генератор. Сторожевой таймер начинает новый отсчет времени.
Чтобы энергопотребление было реально минимальным, необходимо, чтобы все каналы ввода/вывода были подключены к питанию (Vdd) или к земле (Vss), а выводы, находящиеся в третьем состоянии, должны иметь высокий или низкий уровень. Вход TOSKI должен быть подключен к Vdd или к Vss. На входе MSLR должен быть высокий уровень сигнала.
Выход из SLEEP происходит по одному из следующих событий:
– по сигналу сброса на входе MСLR микроконтроллера,
– по сбросу сторожевого таймера WDT (если он включен),
– по прерыванию сигналом запроса на входе INT контроллера или по изменению состояния соответствующих разрядов регистра В (если эти прерывания разрешены).
Активный уровень сигнала на входе MСLR сбрасывает МК. Все остальные события приводят к продолжению работы программы. После выхода из режима SLEЕP происходит сброс в ноль бита PD ( STATUS<3> = 0) и установка в 1 бита ТО (STATUS<4>). Возможны случаи, когда команда SLEEP не выполняется. Это может происходить, если прерывание по какому-либо из разрешенных источников прерывания устанавливает флаг прерывания (при глобальном запрете прерываний по GIE = 0) непосредственно перед командой SLEEP. Тогда вместо нее выполняется команда NOP. Этот факт можно обнаружить по несброшенному флагу PD (STATUS<3> =1).
При программном переключении режима предделителя от TMR0 к WDT даже, если сторожевой таймер выключен, существует опасность сброса микроконтроллера. Такое переключение режима актуально при желании установить коэффициент деления 1:1 для таймера 0.
Слово конфигурации микроконтроллера и его установка. Работа с памятью EEPROM. Технология программирования PIC- микроконтроллеров. Макроассемблер, основные директив и их применение. Средства отладки программ и записи кода в кристалл.
Слово конфигурации заносится в микроконтроллер только на этапе записи кодов в кристалл с помощью программатора. При этом данная функция выполняется отдельно по адресу 2007h в области памяти 2000…3000 h,которая недоступна в обычном режиме работы МК. Для PIC16F84 слово конфигурации имеет формат, представленный на рис.14.
Разряды, обозначенные СР и DP служат для записи идентификатора, а также выполняют функцию защиты информации, записанной в кристалл. Запрет таймеров WDT и РWRT в слове конфигурации отключает их работу.
EEPROM – это особая область памяти данных, адресуемая с помощью механизма косвенной адресации с использованием регистра адреса EEADR и регистра данных EEDATA (их взаимосвязь подобна взаимодействию регистров FSRи INDF обычной памяти данных). Для PIC16F84 емкость этой памяти составляет 64 байт, а адреса размещения данных EEPROM – 00h…3Fh.
Для работы с EEPROM выделены специальные управляющие регистры EECON1 и EECON2. Регистр EECON1 (см. рис.15) содержит некоторые флаги и биты управления записью и чтением памяти EEPROM, а EECON2 применяется исключительно для служебных целей.
Рис.14. Формат слова конфигурации микроконтроллера PIC16F84 |
Алгоритм чтения из памяти EEPROM будет следующий:
1. Записать адрес данных, размещеннх в памяти EEPROM, в регистр EEADR.
2. Установить в 1 бит регистра EECON1, бит начала чтения из памяти EEPROM .
3. Сохранить данные в аккумуляторе, а затем переслать по назначению.
Запись данных в память EEPROM потребует более сложных действий, причем начальные команды фрагмента записи в программе аналогичны записи в основную память данных, но далее должен следовать ряд обязательных команд. Алгоритм записи в память EEPROM должен выглядеть так:
1. Записать адрес памяти EEPROM, предназначенный для размещения пересылаемых днных, в регистр EEADR.
2. Записать данные в регистр EEDATA ( сначала в W, а затем в EEDATA).
3. Запретить все прерывания в регистр INTCON (INTCON < 7 > = 0).
4. Разрешить запись в память EEPROM (установкой в 1 бита WREN регистра EECON1).
5. Выполнить следующую обязательную последовательность команд по шаблону:
movlw 55h ; записать 55 h в EECON2 movwf eecon2
movlw aah ; записать AAh в EECON2.
movwf eecon2
BSF EECON1, 1 ; начать и выполнить запись данных
6. Проверить завершение записи в EEPROM, бит EECON1 < 1 > = 0 ?
7. запись не завершена, возврат к п. 6.
8. запись завершена, сбросить флаг прерывания ЕЕIF, бит EECON1 < 4> установить в ноль ( завершение записи в EEPROM).
9. Разрешить все прерывания, установить флаг GIE (INTCON < 7 > = 1).
Рис.15. Формат управляющего регистра EECON1 |
Полезно проверять правильность результатов записи данных в память EEPROM. Если запись неверна, следует ее повторить или отказаться от результатов записи. Результатом программирования МК является запись программы непосредственно в микросхему (запись в кристалл). С этой целью выпускают
специальные программаторы (например, Chip micro) специально для работы с PIC- контроллерами. Программаторы работают в среде Windows либо в среде MS-DOS, интегрированной в Window , то есть с Windows-оболочкой.
Программное обеспечение современных программаторов имеет удобный пользовательский интерфейс, позволяющий визуально контролировать все манипуляции с кодами программы и данных, в том числе результаты ввода кодов в буфер программатора, результатов записи кодов в кристалл, проверку соответствия исходного и записанного кода.
В качестве исходного кода для программатора служит файл *.hex – это абсолютный код программы (здесь символ * означает имя файла). Файл *.hex создается параллельно с другими программными модулями из исходного текста программы *.asm (исходного модуля) в процессе его трансляции (компиляции), то есть перевода из ассемблерного текста в машинный код (объектный модуль *.obj) и создания исполнимого файла (*. exe).
Программаторы могут подключаться к ПК через порты LPT, COM или USB, – это зависит от конкретного устройства программатора. Сразу после включения питания программатора и запуска обслуживающей его программы следует выполнить команду пересылки кода *.hex в буфер программатора. Рекомендуется перед записью кода в кристалл очистить его содержимое и проверить чистоту кристалла. Затем выполняются настройки программы, выбирается тип микроконтроллера, после чего осуществляется запись слова конфигурации, а затем уже и кода программы в МК. После этого следует выполнить команду верификации для проверки совпадения исходного и записанного кодов. Следует быть осторожным с битами защиты памяти в слове конфигурации, так как после их установки повторная запись невозможна.
Исходный текст программы может набираться в редакторе, где знаки форматирования не присутствуют в тексте. Это NOTEPAD или встроенный редактор среды программирования микроконтроллеров.
Для PIC- контроллеров фирмой MICROCHIP создана интегрированная среда разработки MPLAB, называемая MPLAB-IDE. При установке этого пакета рекомендуется, чтобы в него наряду с макроассемблером MPASM также входил компоновщик MPLINK. Это упрощает работу с программой.
Начиная работу с MPLAB-IDE, следует настроить его рабочую среду, выбрать тип микроконтроллера, тип макроассемблера (обычно MPASM). Затем создается проект, куда сначала включаются файлы *asm и *.hex и запускается компилятор. После исправления ошибок запускается симулятор MPLAB – SIM, в котором осуществляется отладка работы программы. Симулятор позволяет просматривать содержимое памяти и всех регистров МК в удобной форме, исполнять программу в пошаговом режиме, измерять время выполнения любых участков программы.
Также в симуляторе имеются средства моделирования внешних событий: нажатие кнопок, поступление периодических импульсных сигналов и пр. Однако эти средства очень скромные. Более мощные возможности моделирования внешней среды заложены в программной среде PROTEUS совместимой с MPLAB и предназначенной для моделирования работы электронных схем с микроконтроллерами и разводки печатных плат.
Для более точной проверки работы программы для микроконтроллеров применяют эмуляторы. В отличие от симуляторов проверка происходит не средствами программного моделирования, а на физическом уровне, поэтому при такой проверке все временные промежутки являются истинными, что важно с точки зрения работы устройства в реальных условиях. (В симуляторах временные отрезки в сотни и более раз превышают реальные). Недостатки эмуляторов в том, что невозможно создать универсальный эмулятор, который подходит для эмуляции большого количества модификации МК, кроме того они значительно дороже симуляторов.
Программирование становится более удобным, если в программе создавать специальные блоки, называемые макросами. Правила их написания имеются в руководстве пользования макроассемблером пакета MPLAB-IDE. Большое достоинство макросов заключается в том, что внутри них можно применять более удобные операторы программы, чем обычные команды ассемблера микроконтроллеров. Например, можно использовать операторы переходов по условию типа IF THEN. Это особенно ощутимо при разработке больших и сложных программ. Для простых программ это некритично.
Применение PIC-микроконтроллеров для физического моделирования физиологических параметров на примере электрокардиограммы ЭКГ. Методика проектирования, схемы устройства и алгоритм программы управления для воспроизведения ЭКГ.
В практике разработки биомедицинской техники и в медико-биологических исследованиях может оказаться полезным физическое воспроизведение сигналов требуемой формы. Биомедицинские сигналы, используемые в медицинской диагностике, такие как электрокардиосигнал (ЭКГ), энцефалографический сигнал (ЭЭГ), реографический сигнал и другие характеризуются низкой стабильностью, переменчивостью, большим разбросом параметров, а также подвержены искажениям из-за влияния артефактов в силу специфики любого биообъекта. Именно поэтому при эксплуатации диагностических медицинских приборов (электрокардиографа и др.) неизбежна их калибровка перед каждой серией измерений.
В качестве сигнала калибровки обычно используют прямоугольные импульсы с заданной длительностью, амплитудой и частотой следования, однако такой калибровочный сигнал не отражает всех особенностей реальных измеряемых физиологических параметров биообъекта. Он служит лишь для грубой оценки исправности аппаратуры и достоверности измерений. Современные микропроцессорные средства дают возможность достаточно просто воспроизводить сигналы пракически любой формы, адекватные реальным сигналам от биообъекта. Применяя их для калибровки медицинской техники, можно быстрее и точнее настраивать медицинские приборы и существенно повысить их качественные показатели.
Освоение методики физического моделирования биомедицинских сигналов позволит применить ее для программирования сигналов сложной формы, что актуально при разработке терапевтической техники. Физическое воспроизведение любых сигналов, относящихся к разряду патологических, полезно для отработки методов анализа физиологических параметров с точки зрения выявления патологий по их отдельным характеристикам. Это характеристики формы сигнала, частотного спектра, амплитудные и временные параметры сигнала н его отдельных участках.
На рис.16 показана кривая ЭКГ первого отведения для нормы. Очевидно, что при патологиях могут иметь место различные отклонения реальной ЭКГ от рис.16, например, соотношение амплитуд P, Q, R, S, T – зубцов и занимаемых ими интервалов времени.
Рис.16. Кривая ЭКГ, характерные узлы и временные интервалы
Рассмотрим технологию проектирования устройств для воспроизведения электрических сигналов сложной формы на примере макетного образца, электрическая схема которого построена на основе микроконтроллере PIC16F84. Блок-схема блок-схема устройства представлена на рис.17.
Для программирования сигнала ЭКГ был сформирован массив данных путем равномерного разбиения эталонной кривой рис.16 по оси времени на 172 отсчета. Значения дополнительных промежуточных отсчетов легко получить, используя кусочно-линейную аппроксимации кривой ЭКГ.
Посылая коды мгновенных значений амплитуд сигнала ЭКГ из микроконтроллера на цифровые входы цифро-аналогового преобразователя ЦАП, можно наблюдать электрокардиограмму на аналоговом выходе ЦАП. Схема сброса и синхронизации предназначена для корректного сброса МК по включению питания и содержит элементы, необходимые для его тактирования. Выходная схема нужна для получения требуемых параметров выходного сигнала ЭКГ.
Рис.17. Блок-схема устройства для воспроизведения ЭКГ.
На рис.18 приведена электрическая принципиальная схема макета. В ней обеспечивается первоначальный сброс контроллера по включению питания и по кнопке сброса S1; назначение элементов и работа схемы сброса и синхронизации ранее подробно рассматривалась. Для пересылки данных из памяти МК в ЦАП используется 8-разрядный порт В.
Рис.18. Электрическая принципиальная схема устройства для воспроизведения ЭКГ. |
Его линии RB7… RB0 соединены с соответствующими входами 10- разрядного ЦАП, исполненного на микросхеме КР572ПА1. Два младших разряда ЦАП не используются (устанавливаются в ноль). Микросхема имеет токовый выход, поэтому для согласования с нагрузкой к ее выходу подключен операционный усилитель ОУ на микросхеме К153УД2 в инвертирующем включении.
Питание всех микросхем осуществляется от источника питания с выходными напряжениями +5 В и –5В. Чтобы кривая ЭКГ не оказалась перевернутой, опорное напряжение ЦАП принято равным минус 5 В. Резистор R4является сопротивлением обратной связи ОУ.
Максимальное значение напряжения на выходе схемы рис.18 получают в соответствии с соотношением Uмакс = Iмакс·R4, где Iмакс =1 мА для КР572ПА1. Конденсатор С4 = 180 пФ устраняет коммутационные выбросы в кривой ЭКГ.
Для удобства будем считать, что R-зубец имеет амплитуду 1 мВ и, что она соответствует максимальному коду на входе ЦАП, то есть FFh. После разбиения кривой ЭКГ по оси абсцисс находим ординаты соответствующих точек отсчета в мВ и переводим сначала в десятичные коды в соответствии с выражением Х = Uх ·256/ 1мВ, а затем в шестнадцатиричные. Результат для 86 разбиений занесен в табл.3. Дополнительные значения, дополняющие табличные до 172-х, вычисляются методом аппроксимации соседних значений таблицы.
Так как при нормальном сердечном ритме продолжительность R-R интервала составляет 0,94с, то интервал времени между соседними отсчетами должен быть равен 0,94с /171 = 5,5mс. Отсчет этих интервалов удобно выполнять по установлению флага переполнения таймера TMR0. Если установить коэффициент деления предделителя таймера 1:1 (в этом случае предделитель подключен к сторожевому таймеру WDT, а сам WDT – выключен), то несложно вычислить тактовую частоту процессора Fosc = 4·256 /5,5 mc= =186 кГц. Она может быть получена соответствующим выбором элементов времязадающей цепи встроенного RC-генератора микроконтроллера.
Параметры RC-цепочки: R2= 4,7 кОм; С2= 100 пФ, обеспечивают требуемое значение Fosc. Алгоритм программы физического моделирования ЭКГ заключается в поочередном извлечении кодов мгновенных значений ЭКГ из памяти и их пересылке в порт В через каждые 5,5mс, отсчитываемых таймером TMR0.
Для контроля окончания цикла воспроизведения в программе понадобится счетчик COUNT1 = 172 = 1Ch, а для наблюдения ЭКГ в течение, например, 15 с, нужен счетчик COUNT2. В данном случае COUNT2 = 15с/0,9 ≈17 = 11h. Данные табл.3 с учетом промежуточных значений следует разместить в памяти программы (объем памяти данных МК недостаточен для его размещения), в массиве MASSIV(172), элементы которого построчно размещаются в подпрограмме с именем MASSIV в командах вида RETLW <код значения мгновенной амплитуды ЭКГ>.
При вызове подпрограммы командой CALL MASSIV (см. рис.19) происходит переход к соответствующей ее строке в результате модификации значения программного счетчика первой командой подпрограммы addwf pcl .
Дата добавления: 2019-11-25; просмотров: 418; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!