Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Работа УАПП в мультимикроконтроллерных системах
В системах децентрализованного управления, которые используются для управления и регулирования в топологически распределенных объектах (например, прокатных станах, электроподвижном составе железных дорог и метрополитена, сборочных конвейерах и линиях гибких автоматизированных производств), возникает задача обмена информацией между множеством микроконтроллеров, объединенных в локальную вычислительно-управляющую сеть. Как правило, локальные сети на основе микроконтроллеров семейства MCS-51 имеют магистральную архитектуру с разделяемым моноканалом (коаксиальный кабель, витая пара, оптическое волокно), по которому осуществляется обмен информацией между МК. В регистре специальных функций SCON микроконтроллера имеется управляющий бит SM2, который в режимах 2 и 3 УАПП позволяет относительно простыми средствами реализовать межконтроллерный обмен информацией в локальных управляющих сетях. Механизм межконтроллерного обмена информацией через последовательный порт MCS-51 построен на том, что в режимах 2 и 3 программируемый девятый бит данных при приеме фиксируется в бите RB8. УАПП может быть запрограммирован таким образом, что при получении стоп-бита прерывание от приемника будет возможно только при условии RB8 = 1. Это выполняется установкой управляющего бита SM2 в регистре SCON. Поясним процесс межконтроллерного обмена информацией на примере. Пусть ведущему МК требуется передать блок данных некоторому (или нескольким) ведомому МК. С этой целью ведущий МК в протокольном режиме "широковещательной" передачи (всем ведомым МК) выдает в моноканал байт-идентификатор абонента (код адреса МК-получателя), который отличается от байтов данных только тем, что в его девятом бите содержится 1. Программа реализации протокола сетевого обмена информацией должна быть построена таким образом, чтобы при получении Байта- идентификатора (RB8 = 1) во всех ведомых МК произошли прерывание прикладных программ и вызов подпрограммы сравнения байта-идентификатора с кодом собственного сетевого адреса. Адресуемый МК сбрасывает свой управляющий бит SM2 и готовится к приему блока данных. Остальные ведомые МК, адрес которых не совпал с кодом байта-идентификатора, оставляют неизменным состояние SM2 = 1 и передают управление основной программе. При SM2 = 1 информационные байты, передаваемые по моноканалу и поступающие в УАПП ведомых МК, прерывания не вызывают, т.е. игнорируются. В режиме 1 УАПП автономного МК управляющий бит SM2 используется для контроля истинности стоп-бита (при SM2 = 1 прерывание не произойдет до тех пор, пока не будет получено истинное (единичное) значение стоп- бита). В режиме 0 бит SM2 не используется и должен быть сброшен. При работе в асинхронном режиме (режим 1) работы два микроконтроллера могут обмениваться информацией между собой. Такой способ обмена позволяет сократить до минимума количество соединительных проводов между блоками или даже отдельными устройствами. Единственное условие: в отличие от синхронного режима работы, скорости работы последовательных портов должны быть одинаковыми. Обычно используются стандартные скорости передачи, такие как 1200бит/с, 2400 бит/с и т.д. Для таких скоростей передачи обычно используется кварцевый резонатор с частотой 11.0592 МГц. Скорости передачи и коэффициенты, загружаемые в таймер 1, для этих скоростей передачи приведены в таблице 1.10. В отличие от нулевого режима работы в первом режиме работы возможен обмен информацией между двумя микроконтроллерами, а не только между микроконтроллером и исполнительными микросхемами. Схема соединения двух микроконтроллеров между собой для обмена информацией приведена на рисунке 1.29. Таким образом, может быть построена простейшая многопроцессорная система. Возможность работы в асинхронном режиме позволяет использовать последовательный порт для связи с универсальным компьютером через его последовательный COM порт. Рис. 1.29. Схема обмена информацией между двумя микроконтроллерами по последовательному порту.
К сожалению, уровни последовательного порта микроконтроллера не совпадают с уровнями последовательного порта компьютера, поэтому для подключения микроконтроллера к последовательному порту компьютера используются специализированные микросхемы согласования уровней. Эти же микросхемы обеспечивают защиту микроконтроллера от вывода из строя статическим потенциалом при подключении разъёмов. Обычно для работы используются только сигнальные цепи COM-порта компьютера. Тем не менее, оставшиеся буферы интерфейсной микросхемы могут быть использованы для контроля питания микроконтроллерной схемы. Типовая схема подключения компьютера к последовательному порту микроконтроллеров семейства MCS-51 с применением микросхемы ADM3202(DD3) приведена на рис. 1.2.30. Использование последовательного порта компьютера позволяет не только управлять микроконтроллерным устройством, используя клавиатуру компьютера, но и отображать внутреннюю информацию этого устройства, используя дисплей компьютера. Это значительно расширяет возможности ввода и вывода информации в микроконтроллерных устройствах. Рис. 1.30. Подключение последовательного порта микроконтроллеров семейства MCS-51 к последовательному COM порту компьютера.
В последнее время дополнительно появилась возможность заносить программу во внутреннюю память программ наиболее современных микроконтроллеров. В этом режиме последовательный порт работает на фиксированной скорости передачи также как и в нулевом режиме работы. Скорость передачи определяется значением бита SMOD и при частоте кварцевого резонатора 12 МГц составляет 375 кбит/с, то есть для современных микроконтроллеров может превышать скорость передачи 1 Мбит/с. Основной особенностью работы последовательного порта в этом режиме является передача девятого информационного бита, который может быть использован для контроля достоверности передаваемой информации. Для вычисления чётности передаваемого байта можно воспользоваться аппаратным вычислителем, подключенным к аккумулятору микроконтроллера A. Результат вычисления чётности байта сохраняется в бите чётности P регистра PSW, откуда его можно скопировать в девятый информационный бит последовательного порта TB8, расположенный в регистре управления последовательным портом SCON. Ещё большие возможности для построения устройств предоставляет девятиразрядный режим (режим 2) работы при реализации многопроцессорных систем. Параллельные порты микроконтроллеров семейства MCS-51 построены по схеме с открытым стоком. Это позволяет объединять несколько выходов передатчиков в одну шину. Такое выполнение выходных каскадов микросхем облегчает построение многопроцессорных систем. В многопроцессорной системе один процессор должен быть главным (master), остальные - подчинёнными (slave). Естественно команды главного процессора должны восприниматься подчинёнными процессорами, поэтому выход передатчика главного процессора соединяется с входами приёмников подчинённых. Выходы же передатчиков подчинённых процессоров объединяются и подключаются ко входу приёмника главного процессора. Схема примера многопроцессорной системы приведена на рис. 1.31. Команды главного процессора могут быть обращены к конкретному подчинённому процессору, поэтому в состав команд включается адрес подчинённого процессора. При работе в шине необходимо уметь отличать адресную информацию от данных. Это можно осуществить при помощи девятого бита. Обычно при передаче адреса в девятый бит записывают единицу, а в байтах данных и команд - 0. Рис. 1.31. Схема соединения нескольких микроконтроллеров между собой по последовательному порту, работающему в асинхронном режиме.
Таким образом, микроконтроллер, даже подключившийся к шине позднее остальных, легко может осуществить синхронизацию с многопроцессорной шиной (рис. 1.32) Рис. 1.32. Временная диаграмма работы многопроцессорной шины. При настройке и работе с портом во втором режиме никаких особенностей не возникает, поэтому можно воспользоваться примером программы, приведённом для нулевого режима работы. Все особенности работы сосредоточены на протокольном уровне, а это не входит в задачу рассмотрения последовательного порта. Структура прерываний
Механизм прерываний микроконтроллеров MCS-51 позволяет автоматически реагировать на внешние и на внутренние события (переполнение таймеров/счетчиков, завершение последовательного обмена). Алгоритм обработки прерывания при обнаружении запроса прерывания показан на рис. 1.33.
Рис. 1.33. Алгоритм обработки прерывания.
В блоке регистров специальных функций есть два регистра, предназначенных для управления режимом прерываний и уровнями приоритета. Форматы этих регистров, имеющих символические имена IE и IP, описаны в табл.1.11 и табл.10 соответственно. Возможность программной установки/сброса любого управляющего бита в этих двух регистрах делает систему прерываний микроконтроллеров MCS-51 исключительно гибкой.
Таблица 1.11. Регистр масок прерывания (РМП)
Таблица 1.12. Регистр приоритетов прерываний
На рис. 1.34 приведены все возможные источники прерывания. Рис. 1.34. Возможные источники прерывания.
Примечания: IT0, IT1 – биты управления регистра TCON TF0, TF1, IE0, IE1 – флаги – признаки в регистре TCON TI, RI - флаги – признаки в регистре SCON
Каждое из внешних прерываний , может быть активизировано по уровню 0 или по фронту (переход из 1 в 0) сигналов на выводах микроконтроллеров MCS–51 Р3.2, Р3.3, что определяется состоянием битов IT0 и IT1 регистра TCON. При поступлении запроса внешнего прерывания , устанавливается флаг IEx регистра TCON. Установка флагов IEx в регистре TCON вызывает соответствующее прерывание. Очистка флага IEx производится следующим образом: при прерывании по фронту IEx сбрасывается аппаратно при обращении к соответствующей подпрограмме обработке прерывания; при прерывании по уровню флаг очищается при снятии запроса внешнего прерывания, то есть в IEx отслеживается состояние вывода . Чтобы внешнее прерывание по уровню было распознано, необходимо, чтобы низкий уровень на выводе удерживался в течение не менее 12 периодов сигнала тактовой частоты микроконтроллера MCS-51. Это объясняется тем, что проверка выводов MCS-51 выполняется внутренними аппаратными средствами МК один раз в каждом машинном цикле. В случае внешнего прерывания по фронту флаг IEx будет установлен, если две последовательные проверки входа покажут в одном машинном цикле 1 , в следующем 0. Поэтому, если внешнее прерывание активизируется по переходу из состояния высокого уровня в состояние низкого уровня, то минимум одному машинному циклу низкого уровня должен предшествовать минимум один машинный цикл высокого уровня на выводе . Если внешнее прерывание активизируется по уровню, запрос должен удерживаться до начала обслуживающей подпрограммы и сниматься до завершения этой подпрограммы для предотвращения повторного обслуживания. Прерывания от таймеров/счетчиков вызываются установкой флагов TF0 и TF1 регистра TCON, которые устанавливаются при переполнении соответствующих регистров таймеров/счетчиков (за исключением режима 3). Очистка флагов TF0 и TF1 производится при переходе к подпрограмме обслуживания прерывания. Прерывание от последовательного порта вызывается установкой флага прерывания приемника RI или флага прерывания передатчика TI в регистре SCON. В отличие от всех остальных флагов, TI и RI сбрасываются только программным путем обычно в пределах подпрограммы обработки прерывания, где определяется, какому из флагов TI или RI соответствует прерывание. Каждый из перечисленных источников прерываний может быть индивидуально разрешен или запрещен установкой или сбросом соответствующего бита в регистре разрешения прерывания IE. Регистр IE содержит также бит ЕА, сброс которого в 0 запрещает сразу же все прерывания. Необходимым условием прерывания является его разрешение в регистре IE. Все биты, которые вызывают прерывания(IE0,IE1,TF0,TF1,RI,TI), могут быть программно установлены или сброшены с тем же результатом, что и в случае их аппаратной установки или сброса. В случае, когда прерывание по (х=0,1) вызывается уровнем сигнала на соответствующем входе МК, флаг IEx (х=0,1) при переходе к подпрограмме обработки прерывания автоматически сбрасывается, а затем, если соответствующий вывод МК Р3.2 или Р3.3 все еще находится в состоянии логического 0, вновь устанавливается. Поэтому в случае, когда прерывание по входам (х=0,1) вызывается уровнем, программная установка в 1 флагов IE0, IE1 вызовет прерывание, после чего соответствующий флаг IEx (х=0,1) будет автоматически сброшен при переходе к подпрограмме обработки прерывания. Флаги IE0, IE1, TF0, TF1, RI, TI устанавливаются независимо от того разрешено или нет прерывание в регистре IE. Структура приоритетов прерываний является двухступенчатой. Каждому из источников прерывания может быть индивидуально присвоен один из двух уровней приоритета: высокий или низкий. Выполняется это установкой (высокий уровень приоритета) или сбросом (низкий уровень приоритета) соответствующего бита в регистре приоритетов прерываний IP. Программа обработки прерывания с низким уровнем приоритета может быть прервана запросом прерывания с высоким уровнем приоритета, но не может быть прервана другим запросом прерывания с низким уровнем приоритета. Программа обработки прерывания с высоким уровнем приоритета не может прервана никаким другим запросом прерывания ни от одного из источников. Если два запроса с разными уровнями приоритета приняты одновременно, сначала будет обслужен запрос с высоким уровнем приоритета. Если одновременно приняты запросы с одинаковым уровнем приоритета, обработка их будет производиться в порядке, задаваемом последовательностью внутреннего опроса флагов прерываний. Таким образом, в пределах одного приоритетного уровня существует еще одна структура приоритетов: Источник Приоритет внутри уровня 1) IE0 (высший) 2) TF0 3) IE1 4) TF1 5) RI + TI (низший) Структура «Приоритет внутри уровня» работает только в тех случаях, когда определяется последовательность обслуживания запросов на прерывания, которые приняты одновременно и при этом имеют одинаковый уровень приоритета.
Рис. 1.35. Система прерываний микроконтроллеров MCS-51.
Общая схема системы прерываний микроконтроллеров MCS-51 приведена на рис. 1.35. Обработка прерываний. Уровни на выводах (х=0,1) инвертируются и защелкиваются во флаги прерывания IE0, IE1 в фазе S5P2 каждого машинного цикла. В фазе S5P2 устанавливаются флаги прерываний последовательного порта RI и TI. Флаги TF0, TF1 таймеров/счетчиков устанавливаются в фазе S5P2 машинного цикла, в котором происходит пе- реполнение Т/С. Опрос флагов выполняется внутренними средствами MCS-51 в следующем после установки флагов машинном цикле. И только после выполнения последнего цикла текущей команды производится аппаратный вызов соответствующей подпрограммы обслуживания, эквивалентной команде LCALL. Обращение к подпрограмме обслуживания блокируется при выполнении хотя бы одного из следующих условий: --- уже производится обработка прерывания с таким же или высшим приоритетом; --- текущий машинный цикл (цикл опроса флагов) не является последним циклом выполняемой команды; --- выполняемая команда текущей программы является командой RETI или любой командой обращения к регистрам IE, IP. В последнем условии после окончании одной из вышеуказанных команд обязательно выполнится еще одна команда текущей программы перед вызовом подпрограмммы обслуживания прерывания. Флаг прерывания, установленный во время действия блокировки прерывания по одному из трех указанных выше условий и сброшенный до их снятия, не вызовет обслуживания соответствующего запроса прерывания. Если запрос прерывания с более высоким уровнем приоритета зафиксируется во время аппаратного вызова подпрограммы обслуживания, а именно в фазе S5P2 1-го цикла аппаратной команды LCALL, то по окончанию процедуры текущего вызова сразу же начнет выполняться процедура аппаратного вызова по поступившему запросу. Аппаратно – реализуемая команда LCALL загружает содержимое счетчика команд PC в стек (при этом PSW в стек не записывается), после чего записывает в PC адрес соответствующей подпрограммы обработки прерывания: Источник прерывания Адрес подпрограммы (вектор прерывания) 1) IE0 0003 Н 2) TF0 000В Н 3) IE1 0013 Н 4) TF1 001В Н 5) RI + TI 0023 Н При выполнении аппаратно – реализуемой команды LCALL в ячейку стека с младшим адресом загружаются разряды 0 – 7 счетчика команд, а в следующую ячейку стека 8 - 15 счетчика команд. По адресу вектора должна быть расположена команда безусловной передачи управления (JMP) к начальному адресу подпрограммы обслуживания прерывания. Подпрограмма обслуживания в случае необходимости должна начинаться командами записи в стек (PUSH) состояния программы (PSW), аккумулятора, расширителя, указателя данных и т.д. и заканчиваться командами восстановления из стека (POP). Подпрограмма обслуживания прерывания продолжается до выполнения команды RETI. Команда RETI восстанавливает состояние логики прерывания и загружает в счетчик команд PC 2 байта адреса возврата из двух верхних ячеек стека. Восстановление состояния логики прерывания заключается в следующем: при переходе по вектору на подпрограмму обработки прерывания автоматически до выполнения команды RETI независимо от состояния бит регистра IE запрещаются все прерывания с уровнем приоритета, равным уровню приоритета обслуживаемого прерывания, т. е. вложенные прерывания с равными уровнями приоритета невозможны. Команда RETI снимает этот запрет. При использовании команды RET восстанавливается только состояние счетчика команд, т. е. происходит возврат в прерванную программу. Состояние логики прерывания команда RET не меняет, т. е. логика управления обслуживанием прерываний по–прежнему считает, что продолжает обслуживаться прерывание, подпрограмма обработки которого была закончена командой RET. Режимы работы MCS -51 Микроконтроллеры семейства MCS-51 могут работать в следующих режимах: --- только с внешней памятью программ; --- только с внутренней памятью программ; --- с внутренней и внешней памятью программ. --- в режиме программирования внутренней памяти программ; ---в режиме проверки внутренней памяти программ. Режим работы устанавливается комбинацией входных и выходных сигналов. Инициализация (сброс) микросхем осуществляется сигналом RST (активный высокий уровень напряжения) при условии подачи на микросхему внешнего сигнала синхронизации или при подключенном кварце. Вход RST является входом внутреннего триггера Шмитта. Для того, чтобы сброс микросхемы гарантированно произошел, длительность сигнала высокого уровня на входе RST должна быть не менее двух машинных циклов MCS-51 (24 периода частоты синхронизации fXTAL). При поступлении внешнего сигнала сброса на вход RST MCS-51 формирует сигнал сброса. Внешний сигнал сброса является асинхронным по отношению к внутренней синхронизации MCS-51. Состояние вывода RST проверяется в фазе S5P2 каждого машинного цикла. После подачи сигнала высокого уровня на вход RST MCS-51 продолжает работу в течение времени от 19 до 31 периода частоты fXTAL (формируются ALE, и т. п.), после чего ALE и устанавливаются в "1" и находятся в этом состоянии все время, пока на входе RST присутствует активный сигнал сброса. После подачи на вход RST уровня "0" проходит от 1 до 2 машинных циклов до начала формирования сигналов ALE и . При подаче сигнала сброса на вход RST внутренний алгоритм сброса MCS-51 производит следующие действия: - устанавливает счетчик команд РС и все регистры специальных функций, кроме защелок портов Р0-Р3, указателя стека SP и регистра SBUF, в ноль; - указатель стека принимает значение равное 07Н; Сигнал сброса на входе RST не влияет на внутреннее ОЗУ данных. После включения питания содержимое ячеек внутреннего ОЗУ данныx принимает случайные значения. Для n - МОП MCS-51 автоматический сброс при включении питания UCC может быть реализован подключением входа RST к Ucc через конденсатор емкостью 10 мкФ и к шине 0В через резистор 8,2 кОм. Для КМОП MCS-51 этот резистор не требуется, однако его наличие не принесет вреда. КМОП МК-51 содержат внутренний резистор, включенный между RST и выводом 0В. Если использовать только внутренний резистор, емкость конденсатора может быть уменьшена до 1 мкФ. Чтобы при включении питания сброс был гарантированно выполнен, вывод RST должен удерживаться в состоянии высокого уровня в течение времени, достаточного для запуска тактового генератора MCS-51 плюс еще минимум два машинных цикла. Время запуска тактового генератора MCS-51 зависит от его частоты работы и для 10 МГц кварцевого резонатора составляет в среднем 1 мс, а для 1 Мгц кварцевого резонатора - 10 мс. Состояния регистров после сброса приведены в таблице 1.13. Цепь сброса при быстром уменьшении напряжения питания вызывает появление на входе RST отрицательного напряжения, которое не является опасным для микросхем вследствие наличия у MCS-51 внутренней схемы защиты. Таблица 1.13. Состояния регистров после сброса
|
Последнее изменение этой страницы: 2019-05-08; Просмотров: 244; Нарушение авторского права страницы