Особые режимы микроконтроллеров



 

Тактирование микроконтроллера. Режимы сброса и прерывания в МК, их аппаратная и программная реализация. Сторожевой таймер 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!