Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программируемые контроллеры для систем управления ч2. Г.И.Загарий, В.С. Коновалов В.С., Н.О. Ковзель, В.И. Поддубняк, А.И. / Программируемые контроллеры для систем управления ч2. Г.И.Загарий, В.С. Коновалов В.С., Н.О. Ковзель, В.И. Поддубняк, А.И. .doc
Скачиваний:
366
Добавлен:
08.08.2013
Размер:
15.9 Mб
Скачать

7.1.18 Использование портов ввода/вывода ra и rb Организация двунаправленных портов

Некоторые команды внутренне выполняются как чтение+запись. Например, команды BCF и BSF считывают порт целиком, модифицируют один бит и выводят результат обратно. Здесь необходима осторожность. Например, команда BSF PORTB,5 для бита 5 регистра f6 (порт RB) сначала считает все восемь бит. Затем выполняются действия над битом 5 и новое значение байта целиком записывается в выходные защелки. Если другой бит регистра f6 используется в качестве двунаправленного ввода/вывода (например, бит 0) и в данный момент он определен как входной, входной сигнал на этой линии будет считан и записан обратно в выходную защелку этой же линии, стирая ее предыдущее состояние. До тех пор пока эта линия остается в режиме ввода, никаких проблем не возникает. Однако, если позднее линия 0 переключится в режим вывода, ее состояние будет неопределенным.

На линию, работающую в режиме вывода, не должны "наваливаться" внешние источники токов ("монтажное И", "монтажное ИЛИ"). Результирующие большие токи могут повредить кристалл.

Последовательное обращение к портам ввода/вывода

Запись в порт вывода происходит в конце командного цикла. Но при чтении, данные должны быть стабильны в начале командного цикла. Будьте внимательны в операциях чтения, следующих сразу за записью в тот же порт. Здесь нужно учитывать инерционность установления напряжения на выводах. Может потребоваться программная задержка, чтобы напряжение на линии (зависит от нагрузки) успело стабилизироваться до начала исполнения следующей команды чтения.

7.1.19 Специальные функции

Микроконтроллеры семейства PIC, в том числе и РIС 16F84, снабжены набором специальных функций и схем, предназначенных для расширения возможностей МКУ и МКС, минимизации стоимости, исключения навесных компонентов, обеспечения минимального энергопотребления и защиты кода от считывания. К этим функциям и схемам относятся:

– сторожевой таймер (WDT);

– выбор типа тактового генератора;

– схема сброса по включению питания (POR);

– таймер сброса (DTR);

– таймер запуска генератора (OST);

– режим пониженного потребления (SLEEP);

– защита кода от считывания;

– биты идентификации.

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

Сторожевой таймер wdt

Сторожевой таймер WDT предназначен для предотвращения катастрофических последствий от случайных сбоев программы. Он также может быть использован в приложениях, связанных со счетом времени, например, в детекторе пропущенных импульсов. Идея использования сторожевого таймера состоит в регулярном его сбрасывании под управлением программы или внешнего воздействия до того, как закончится его выдержка времени и не произойдет сброс процессора. Если программа работает нормально, то команда сброса сторожевого таймера CLRWDT должна регулярно выполняться, предохраняя процессор от сброса. Если же микропроцессор случайно вышел за пределы программы (например, от сильной помехи по цепи питания) либо зациклился на каком-либо участке программы, команда сброса сторожевого таймера, скорее всего, не будет выполнена в течение достаточного времени, и произойдет полный сброс процессора, инициализирующий все регистры и приводящий систему в исходное рабочее состояние.

Сторожевой таймер в PIC 16F84 не требует каких-либо внешних компонентов и работает на встроенном RC-генераторе, причем генерация не прекращается даже в случае отсутствия тактовой частоты процессора. Типовой период сторожевого таймера 18 мсек. Можно подключить предварительный делитель к сторожевому таймеру и увеличить его период вплоть до 2 сек.

Еще одной функцией сторожевого таймера является вывод процессора из режима пониженного энергопотребления, в который процессор переводится командой SLEEP. В этом режиме PIC 16F84 потребляет очень малый ток – около 1 мкА. Перейти из этого режима в рабочий режим можно или по внешнему событию – нажатию кнопки, срабатыванию датчика, или по сторожевому таймеру.