Организация портов ввода/вывода в микроконтроллерах Picmicro

Характеристика универсальных портов ввода/вывода, которые рассматриваются как самые простые периферийные модули. Типовая структурная схема одного канала. Особенности регистров Porta и Trisa, Portb и Trisb. Порядок операций с портами ввода/вывода.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид реферат
Язык русский
Дата добавления 22.12.2010
Размер файла 443,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Организация портов ввода-вывода в микроконтроллерах Picmicro

1. Универсальные порты ввода/вывода

Универсальные порты ввода/вывода могут рассматриваться как самые простые периферийные модули. Они позволяют микроконтроллерам PICmicro контролировать работу и управлять другими устройствами. С целью расширения функциональных возможностей некоторые каналы портов ввода/вывода мультиплицированы с другими периферийными модулями. Набор дополнительных функций каналов портов ввода/вывода зависит от реализованных периферийных модулей в микроконтроллере. Как правило, при включенном периферийном модуле, соответствующий вывод микроконтроллера не может использоваться как универсальный канал ввода/вывода.

Для большинства каналов портов ввода/вывода регистры TRIS управляют направлением данных на выводе. Бит TRIS<x> управляет направлением данных на канале PORT<x>. Если бит TRIS установлен в '1', то соответствующий канал порта ввода/вывода работает как вход, а если бит TRIS сброшен в '0', то канал ввода/вывода работает как выход.

Простой способ запомнить направление канала ввода/вывода и состояние битов регистров TRIS:

'1' - напоминает 'In' (ввод);

'0' - напоминает 'Out' (выход).

Регистр PORT - защелка данных, выводимых на порт ввода/вывода. При чтении регистра PORT возвращается состояние выводов порта. Это означает, что необходима некоторая осторожность при выполнении команд со структурой "чтение - модификация - запись" для изменения логического уровня на выходах порта.

На рисунке 1 показана типовая структурная схема одного канала порта ввода/вывода. На этом рисунке не показана ситуация подключения дополнительного периферийного модуля к каналу порта. Чтение регистра PORT возвращает состояние на выводах порта, а запись выполняется в выходную защелку. Обратите внимание на операции "чтение - модификация - запись" (например, BSF и BCF). Сначала происходит чтение состояния выводов порта, изменение полученного значения, а затем выполняется запись в выходную защелку порта. Когда периферийный модуль подключен к выводу порта, функциональные возможности канала порта ввода/вывода могут измениться, в соответствии с требованиями периферийного модуля. Например, модуль АЦП или LCD, которые настраивают соответствующие каналы портов ввода/вывода для работы с периферийным модулем при сбросе микроконтроллера. В случае с АЦП это может предотвратить повышенное энергопотребление при подаче аналоговых уровней на входы микроконтроллера после сброса. При включении некоторых периферийных модулей отменяется действие битов TRIS. Поэтому следует избегать команд "чтение - модификация - запись" с регистрами TRIS (например BSF, BCF, XORWF и т.д.). Обратитесь к описанию соответствующего периферийного модуля для правильной настройки битов TRIS.

Выводы портов могут быть мультиплицированы с аналоговыми входами и входом VREF. Для каждого вывода необходимо определить режим его работы (аналоговый вход или цифровой канал ввода/вывода) настройкой управляющих битов в регистре ADCON1 (регистр управления АЦП). Когда вывод работает как аналоговый вход, то чтение состояния этого вывода будет давать результат '0'. Регистры TRIS управляет направлением каналов ввода/вывода, даже когда он работает в режиме аналогового входа. Пользователь должен гарантировать, что соответствующий бит TRIS установлен в '1', если вывод используется как аналоговый вход.

порт ввод вывод периферийный модуль

Рис. 1 - Типовая структурная схема одного канала порта ввода-вывода

2. Регистры PORTA и TRISA
RA4 - имеет триггер Шмидта на входе и открытый сток на выходе. Все остальные каналы PORTA имеют ТТЛ буфер на входе и полнофункциональные выходные КМОП буферы. Все выводы имеют биты управления направления данных в регистре TRISA, с помощью которых можно настроить выводы как входы или выходы. Запись `1' в TRISA переводит соответствующий выходной буфер в 3-е состояние. Запись `0' в регистр TRISA определяет соответствующий канал как выход, содержимое защелки PORTA передается на вывод микроконтроллера.
Пример 1 Инициализация PORTA
BCF STATUS, RP0 ; Выбрать банк 0
CLRF PORTA ; Инициализация защелок PORTA
BSF STATUS, RP0 ; Выбрать банк 1
MOVLW 0xCF ; Значение для инициализации направления каналов PORTA
MOVWF TRISA ; Настроить RA<3:0> как входы,
; настроить RA<5:4> как выходы
; Биты TRISA<7:6> всегда читаются как '0'.
Рис. 2 - Структурная схема выводов RA3:RA0 и RA5.
Рис. 3 - Структурная схема вывода RA4.
3. Регистры PORTB и TRISB
PORTB - 8-разрядный двунаправленный порт ввода/вывода. Биты регистра TRISB определяют направление каналов порта. Установка битва в '1' регистра TRISB переводит выходной буфер в 3-е состояние. Запись `0' в регистр TRISB настраивает соответствующий канал как выход, содержимое защелки PORTB передается на вывод микроконтроллера (если выходная защелка подключена к выводу микроконтроллера).
Пример 2 Инициализация PORTB
BCF STATUS, RP0 ; Выбрать банк 0
CLRF PORTB ; Инициализация защелок PORTB
BSF STATUS, RP0 ; Выбрать банк 1
MOVLW 0xCF ; Значение для инициализации
; направления каналов PORTB
MOVWF TRISB ; Настроить RB<3:0> как входы,
; RB<5:4> как выходы, RB<7:6> как входы
К каждому выводу PORTB подключен внутренний подтягивающий резистор. Бит -RBPU (OPTION_REG <7>) определяет подключены (-RBPU=0) или нет (-RBPU=1) подтягивающие резисторы. Подтягивающие резисторы автоматически отключаются, когда каналы порта настраиваются на выход и после сброса по включению питания POR.
Четыре канала PORTB RB7:RB4, настроенные на вход, могут генерировать прерывания по изменению логического уровня сигнала на входе. Если один из каналов RB7:RB4 настроен на выход, то он не может быть источником прерываний. Сигнал на выводах RB7:RB4 сравнивается со значением, сохраненным при последнем чтении
PORTB. В случае несовпадения одного из значений устанавливается флаг RBIF (INTCON<0>), и если разрешено, генерируется прерывание. Это прерывание может вывести микроконтроллер из режима SLEEP. В подпрограмме обработки прерываний необходимо сделать следующие действия:
1. Выполнить чтение или запись в PORTB, исключив несоответствие;
2. Сбросить флаг RBIF в '0'.
Несоответствие сохраненного значения с сигналом на входе PORTB всегда устанавливает бит RBIF в `1'. Чтение из PORTB прервет условие несоответствия и позволит сбросить флаг RBIF в `0'.
Прерывания по изменению сигнала на входах PORTB и программа переключения конфигурации этих каналов позволяет реализовать простой интерфейс обслуживания клавиатуры с выходом из режима SLEEP по нажатию клавиш. Прерывания по изменению сигнала на входах рекомендуется использовать для определения нажатия клавиш, когда PORTB полностью задействован для реализации клавиатуры. Не рекомендуется опрашивать PORTB при использовании прерываний по изменению входного сигнала.
Рис. 4 - Структурная схема выводов порта B.
4. Программирование портов ввода/вывода
При использовании портов (в том числе GPIO) как каналов ввода/вывода, необходимо учитывать некоторые нюансы работы портов ввода/вывода для получения требуемого результата.

Все операции записи в порт выполняются по принципу "чтение - модификация - запись". Например, команды BCF и BSF считывают значение в регистр ЦПУ, выполняют битовую операцию и записывают результат обратно в регистр. Требуется некоторая осторожность при применении подобных команд к регистрам портов ввода/вывода. Например, команда BSF PORTB,5 считывает все восемь битов PORTB в ЦПУ, изменяет состояние бита 5 и записывает результат в выходные защелки PORTB. Если другой канал PORTB (например, RB0) настроен на вход, то сигнал на выводе будет считан в ЦПУ и записан в защелку данных, поверх предыдущего значения. Пока RB0 настроен как вход, никаких проблем не возникает. Однако, если RB0 будет позже настроен как выход, значение в защелке данных может отличаться от требуемого. При чтении регистра порта, читается текущее состояние порта ввода/вывода. Запись в регистр порта, сохраняет значение в защелке порта ввода/вывода. Когда используются команды "чтение - модификация - запись" (например BSF, BCF и т.д.), считывается текущее состояние порта ввода/вывода, выполняется требуемая операция и полученное значение записывается в защелку порта.

В примере 3 показан эффект последовательного выполнения команд "чтение - модификация - запись" с регистром порта ввода/вывода.

Пример 3 Эффект выполнения команд "чтение - модификация - запись"

Начальные установки порта: PORTB<7:4> входы, PORTB <3:0> выходы. Выводы RB7:RB6 имеют внешние подтягивающие резисторы и не подключены к другим цепям схеме.

Защелка PORTB Выводы PORTB

BCF STATUS,RPO ;

BCF PORTB, 7 ; 01pp pppp 11pp pppp

BCF PORTB, 6 ; 10pp pppp 11pp pppp

BSF STATUS,RP0 ;

BCF TRISB, 7 ; 10pp pppp 11pp pppp

BCF TRISB, 6 ; 10pp pppp 10pp pppp

Возможно, пользователь ожидал, что после выполнения программы на выходах PORTB будет значение 00pp pppp. Однако 2-я команда BCF установила в `1' RB7.

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

5. Последовательность операций с портами ввода/вывода

Запись в порт ввода/вывода фактически происходит в конце машинного цикла, а чтение данных выполняется в начале цикла (см. рисунок 5). Поэтому требуется некоторая осторожность при записи в порт ввода/вывода, если перед записью выполняется чтение состояния этого порта. Последовательность команд должна быть такой, чтобы установилось напряжение на выводе порта прежде, чем будет выполнена команда записи в порт, сопровождаемая чтением состояния выводов (иначе вместо нового значения может быть считано предыдущее). Если возможна описанная ситуация, разделите команды записи инструкциями NOP или любыми другими командами, которые не обращаются к порту ввода/вывода.

Рис. 5 - Операции с портом ввода-вывода.

Примечание к рисунку. На рисунке показан пример чтения из PORTB сразу поле записи в него. Время установления данных на PORTB равно T = 0.25 TCY - TPD. Где: TCY - длительность машинного цикла микроконтроллера, TPD - задержка распространения. Следовательно, при высокой тактовой частоте микроконтроллера, чтение с порта ввода/вывода непосредственно после записи может возвращать неверные значения.

На рисунке 6 показана модель канала ввода/вывода с описанной ситуацией. С увеличением емкости (C) увеличивается длительность нарастания/спада уровня напряжения на выводе. При увеличении тактовой частоты микроконтроллера, усиливается влияние емкости на выполнение команд "чтение - модификация - запись" с регистром порта ввода/вывода PORTX. В состав емкости (C) входит паразитная емкость проводника и выводов компонентов, подключенных к выводу порта ввода/вывода. Лучшем способом решения этой проблемы может быть подключение дополнительного резистора к выводу порта. Подключенный резистор позволяет достигнуть на выводе порта напряжения требуемого уровня перед выполнением следующей команды.

Использование команд NOP между последовательными обращениями к регистру PORTX "чтение - модификация - запись" является наиболее дешевым, но имеет существенный недостаток: число команд NOP зависит от значения емкости и тактовой частоты микроконтроллера.

Рис. 6 - Подключению к порту ввода-вывода

Размещено на Allbest.ru


Подобные документы

  • Разработка расширителя портов ввода-вывода и особенности его применения. Программируемая логическая интегральная схема CPLD. Плис CoolRunner-II, главные функции. Листинг модулей на языке Verilog. Временная диаграмма, внутреннее содержание модуля.

    курсовая работа [1,9 M], добавлен 26.01.2013

  • Структурная схема цифрового термометра. Выбор микропроцессорного комплекта. Описание и расчет схемы электрической принципиальной. Нагрузочная способность портов ввода/вывода. Сопротивления делителя напряжения. Программирование в готовом устройстве.

    курсовая работа [139,4 K], добавлен 30.08.2012

  • Выбор структуры одноплатного микроконтроллера. Модули памяти микроконтроллера. Селектор адреса портов ввода/вывода и возможность изменения селектируемых адресов. Деление адресного пространства на окна. Нумерация точек в схеме цифрового фильтра.

    курсовая работа [204,3 K], добавлен 10.11.2013

  • Цифровые технологии получения рентгенографических изображений. Усовершенствование модуля ввода/вывода данных в цифровом рентгенографическом аппарате Sire Mobil Compact для улучшения качества фильтрации и изображения путем внедрения новых технологий.

    курсовая работа [732,4 K], добавлен 10.11.2010

  • Анализ функционирования установок для исследования режимов работы компонентов с СЭВМ. Разработка схем микропроцессорных устройств и периферийного оборудования ЭВМ для учебного комплекса по интерфейсам ввода-вывода. Функционирование микросхемы КР580ВВ55.

    курсовая работа [2,5 M], добавлен 20.05.2011

  • Характеристика основных типов цифро-аналоговых преобразователей. Особенности программирования портов ввода вывода микроконтроллера. Составление программ, синтезирующих аналоговый сигнал заданной формы. Схемы резистивной матрицы, листинг программы.

    лабораторная работа [226,1 K], добавлен 22.11.2012

  • Структурная схема устройства. Выбор элементной базы и электрической схемы. Использование многоуровневой конвейерной обработки. Последовательность выполнения программы. Команды условного и безусловного перехода. Пространство регистров ввода-вывода.

    контрольная работа [308,2 K], добавлен 07.07.2013

  • Проектирование модуля вывода дискретных и ввода аналоговых сигналов для систем управления различным технологическим оборудованием. Моделирование схемы модуля в ССМ Multisim. Разработка печатной платы модуля. Разработка принципиальной и структурной схем.

    курсовая работа [1,8 M], добавлен 03.11.2014

  • Разработка на базе учебного микропроцессорного комплекта, выполненного на микросхемах серии КР580, устройства включения резервного выпрямительного агрегата при перегрузе основного. Распределение адресов памяти. Настройка портов ввода-вывода микросхемы.

    курсовая работа [599,4 K], добавлен 08.01.2014

  • Использование помехоустойчивого кодирования в системах передачи информации. Построение структурной схемы восьмиразрядного микроконтроллера M68HC11. Разработка алгоритма кодирования и декодирования информации. Подключение внешних портов ввода/вывода.

    курсовая работа [1,7 M], добавлен 05.09.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.