1.5 Общие методы ввода / вывода через коммуникационный порт
Существует два общих метода ввода / вывода в любой вычислительной системе: упорядоченный и управляемый прерываниями. Упорядоченность относится к повторяющейся проверке состояния регистра устройства ввода / вывода для инициализации требуемой транзакции. В упорядоченном вводе / выводе программа, запрашивающая символ ввода, многократно считывает состояние регистра в устройстве ввода / вывода до тех пор, пока оно не покажет, что символ доступен для ввода. Когда состояние указывает, что имеется готовый для работы символ, программа считывает его из соответствующего регистра устройства ввода / вывода. Сходная последовательность «ждать, до тех пор пока не готов, затем писать» используется при выведении символов на устройство ввода / вывода. Таким образом, дальнейшее выполнение программы приостанавливается до завершения выполнения операции ввода / вывода.
Большой проблемой для упорядоченного ввода / вывода через коммуникационный порт является то, что при скорости передачи выше 300 бод программе трудно что-либо сделать с получаемым символом кроме как отображать его на экране. Рассмотрим следующий пример. Предположим, что мы читаем символы со скоростью 300 бод и имеем следующие связные параметры: длина слова 7 бит, проверка на четность и один стоповый бит, который вместе со стартовым битом, добавляет до 10 бит на символ. Ожидается получать около 30 символов каждую секунду. После чтения символа программа имеет около 1/30 секунды для выполнения других операций. Чтобы не потерять какие-либо символы в это время следует снова начать упорядочение порта. Что произойдет, когда скорость возрастет до 9600 бод? Временной интервал между символами слишком мал для выведения символа на экран дисплея, не позволяет интерпретировать специальные символы и эмулировать терминал.
В подходе, основанном на управлении прерываниями, программа предоставляет возможность прерываниям устройства ввода / вывода поступать непосредственно на центральный процессор, который продолжает выполнять свою работу, не связываясь с устройством. Когда устройство готово к вводу / выводу, оно сигнализирует об этом центральному процессору посредством аппаратуры. Получив этот сигнал, центральный процессор сохраняет свое текущее состояние и вызывает подпрограмму обслуживания прерываний, адрес которой хранится в таблице векторов прерываний. Эта подпрограмма выполняет операцию ввода / вывода, затем восстанавливает состояние машины и возвращается в прерванную программу. Также стоит учитывать регистр символов, поступающих в коммуникационный порт персонального компьютера. Организовав где-нибудь некоторые ячейки памяти, можно использовать простую подпрограмму обработки прерываний, которая быстро считывает символ из коммуникационного порта и сохраняет его в следующей доступной ячейке памяти в буфере. Символы не будут утеряны в процессе считывания и сохранения символа драйвером прерываний перед поступлением следующего символа. Эта несложная задача достаточно проста для выполнения в короткие временные интервалы между поступающими символами при скорости передачи 9600 бод. Прелесть этого метода заключается в том, что время обработки главной программой символов, хранящихся в буфере, не имеет значения. Конечно, существует риск переполнения буфера, но эта проблема может быть решена простым увеличением его размера. Если этот способ не очень хорош, то для избежания переполнения буфера можно использовать управление потоком с помощью XON/XOFF.
Из этих рассуждений становится очевидно, что управляемая прерываниями буферная связь с использованием управления потоком с помощью XON/XOFF, предпочтительнее упорядоченной связи.
1.5.1 Последовательный порт с точки зрения программиста
Скорость передачи в бодах определяется как 16‑битовый делитель тактовой частоты, используемой для последовательного адаптера. Значение делителя вычисляется по формуле
1,843,200
делитель = –––––––––––––––––––––––––––––––
16 Х скорость передачи в бодах
Чтобы установить скорость передачи в бодах, Вы должны проделать следующее:
1. Установить в 1 наиболее значимый бит регистра управления линией.
2. Загрузить младший и старший байты делителя соответственно в приемный буфер и регистр разрешения прерываний.
3. Установить DLAB в 0 для обеспечения нормальной работы универсального асинхронного приемопередатчика.
Применяя этот подход, можно установить любое значение скорости передачи в бодах. Максимально возможной скоростью передачи является 1/16 тактовой частоты, или 115,200 бод. Этот предел вытекает из того, что делитель не может быть меньше единицы.
1.6 Информационный обмен контроллер – ЭВМ с использованием интерфейса RS‑232
Для связи МК51 с интерфейсом RS‑232 можно использовать самый подходящий для этого вариант – последовательный порт.
Последовательный порт микроЭВМ семейства МК51 может использоваться в виде регистра сдвига для расширения ввода-вывода или в качестве универсального асинхронного приемопередатчика с фиксированной или переменной скоростью последовательного обмена и возможностью дуплексного включения. Последовательный порт может принимать очередной байт, даже если уже принятый до этого байт не был прочитан из регистра приёмника. Однако если до окончания приёма, находящийся в регистре приёмника байт не будет прочитан то принятый байт теряется. Программный доступ к регистрам приёмника и передатчика осуществляется обращением к регистру специальных функций SBUF. При записи в SBUF байт загружается в регистр передатчика, а при чтении SBUF байт читается из регистра приёмника.
Приём и выдача байта данных начинается с младшего разряда и заканчивается старшим разрядом. Для разрешения приёма необходимо установить 1 в разряде REN регистра управления SCON.
Последовательный порт может быть запрограммирован на один из четырёх режимов приёма / передачи путём программирования разрядов SM0 и SM1 регистра SCON. Во всех четырёх режимах передача инициируется любой командой, которая использует SBUF в качестве регистра назначения.
Режим 0. В этом режиме информация и передаётся и принимается через внешний вывод входа приёмника. Принимаются или передаются 8 бит данных. Через внешний вывод выхода передатчика выдаются импульсы сдвига, которые сопровождают каждый бит. Частота передачи бита информации равна 1/12 частоты резонатора.
Режим 1. В этом режиме передаются через TXD или принимаются из RXD 10 бит информации: старт бит, 8 бит данных и стоп-бит. Скорость приёма / передачи – величина переменная и задаётся таймером.
Режим 2. В этом режиме через TXD передаются или из RXD принимаются 11 бит информации: старт бит, 8 бит данных, программируемый девятый бит и стоп-бит. При передаче девятый бит может принимать значение 0 или 1, или, например, для повышения достоверности передачи путём контроля по чётности в него может быть помещено значение признака паритета из слова состояния программы. Частота приёма / передачи выбирается программой и может быть равна либо 1/32, либо 1/64 частоты резонатора в зависимости от управляющего бита SMOD.
Режим 3. Режим 3 совпадает с режимом 2 во всех деталях, за исключением частоты приёма / передачи, которая является величиной переменной и задаётся таймером.
Передача начинается в фазе S1P1 машинного цикла, следующего за ближайшим после ЗАПИСЬ В SBUF переполнением делителя на 16 в цепи сигнала СИНХР Тх. Период сигнала СИНХР Тх определяет время, в течение которого выдаваемый бит присутствует на выходе TxD. Внутренние сигналы микроЭВМ семейства МК51 ПОСЫЛКА, ДАННЫЕ и СДВИГ по функциональному назначению и формированию идентичны во всех режимах. На выход TxD выдается девять бит данных: D0‑D7 и TB8. После первого импульса СДВИГ в освободившийся девятый разряд регистра сдвига передатчика заноситься 1. Всего формируется 9 импульсов СДВИГ, в результате чего все биты регистра сдвига передатчика последовательно выдаются на выход TxD. По окончании выдачи всех бит посылки блок управления передачей устанавливает флаг прерывания передатчика TI и снимает сигналы ПОСЫЛКА и ДАННЫЕ.
Приём начинается при обнаружении перехода сигнала на входе RxD из 1 в 0. Для отслеживания такого перехода вход RxD аппаратно опрашивается с частотой f1. Когда переход обнаружен, немедленно сбрасывается счетчик делитель на 16 в цепи сигнала СИНХР Rx, в результате чего происходит совмещение моментов переполнения этого счётчика делителя с границами смены битов принимаемой посылки на входе RxD. Шестнадцать состояний счётчика-делителя делят время, в течение которого каждый бит принимаемой посылки присутствует на входе RxD, на 16 фаз, с 1 по 16 для каждого бита. В фазах 7, 8 и 9 специальное устройство ОМЭВМ, бит-детектор, считывает с входа RxD 3 значения принимаемого бита, по мажоритарному принципу «2 из 3» выбирает из них одно и подаёт его на вход регистра сдвига приёмника. Блок управления приёмом при этом формирует внутренний импульс МИКРОЭВМ СЕМЕЙСТВА МК51 СДВИГ, в результате чего содержимое регистра сдвига приёмника сдвигается на один разряд и принятый бит заносится в регистр сдвига приёмника. После 10 импульса СДВИГ блок управления приёмом загружает биты D0‑D7 из регистра сдвига приёмника в SBUF, переписывает 9 разряд регистра сдвига приемника в бит RB8 регистра SCON и устанавливает флаг прерывания приёмника RI в регистре SCON. Сигнал загрузки SBUF, RB8 и установки RI вырабатывается блоком управления приёмом тогда и только тогда, когда в момент генерации последнего импульса СДВИГ выполняются следующие условия: RI=0 и либо SM2=0, либо принятый 9 бит данных равен 0.
Если хотя бы одно из этих условий не выполняется, принятая посылка безвозвратно теряется, а флаг RI не устанавливается. Если оба приведённых условия выполнены, принятый 9 бит данных поступает в RB8, биты D0‑D7 записываются в SBUF и устанавливается флаг RI. Независимо от выполнения приведённых выше условий последовательный порт вновь начинает отслеживание перехода сигнала из 1 в 0 на входе RxD. Значение принятого стоп-бита не влияет на SBUF, RB8 или RI.
Обмен между контроллером и ЭВМ производится в режиме полудуплекса, т.е. ЭВМ посылает байт, а контроллер отвечает. С ЭВМ по каналу RS‑232 приходит байт с установленным девятым битом, это означает что необходимо начать преобразование входного сигнала. Второй и последующий байты посылаемые ЭВМ приводят к выталкиванию двух оцифрованных значений побайтно, старшими байтами вперёд, т.е. если первое слово обозначить H0L0, а второе H1L1 то они будут переданы так: H0, L0, H1, L1. Затем контроллер передаёт контрольную сумму, которая подсчитывается по формуле: CRC = S + H0 + L0 + H1 + L1. Она служит для контроля за правильностью передачи данных. После передачи контрольной суммы контроллер переходит в исходное состояние в котором он может принимать только байты с девятым битом равным единице.
1.7 Создание программы управления автоматизированным комплексом многоканальной связи
Конкретная степень сложности данной системы определяется не только количественными характеристиками схемы, но и ее топологией. Поэтому становится ясна необходимость выбора простого в реализации, быстрого, надежного и точного алгоритма.
Простота алгоритма в реализации необходима для удобства его понимания и облегчения возможности усовершенствования, кроме того нельзя забывать, что чем алгоритм сложнее в реализации, тем вероятнее появление в нем ошибок, чего необходимо избежать. Под быстротой алгоритма понимается способность его к завершению за достаточно малое время, чем это время меньше – тем лучше. Надежность алгоритма требует отсутствие «лишних» решений – решений, которые являются некорректными. Поэтому, при разработке программного обеспечения должны быть соблюдены следующие основные критерии:
1. Надежность;
2. Простота реализации;
3. Точность;
4. Скорость работы.
1.7.1 Структуры данных
Каждая программа оперирует с тремя видами данных – входными, выходными и промежуточными. Входные данные – это вся та информация, которая доступна до начала выполнения, или вводится по мере работы программы. Выходные данные – результат работы программы. Входные и выходные данные служат для коммуникации с другими программами или с оператором, а промежуточные данные предназначены для обработки, выполнения алгоритмов и прочих действий, результат которых не доступен вне программы. Соответственно, для процесса проектирования программы необходимо проработать все три типа данных.
... также невысока и обычно составляет около 100 кбайт/с. НКМЛ могут использовать локальные интерфейсы SCSI. Лекция 3. Программное обеспечение ПЭВМ 3.1 Общая характеристика и состав программного обеспечения 3.1.1 Состав и назначение программного обеспечения Процесс взаимодействия человека с компьютером организуется устройством управления в соответствии с той программой, которую пользователь ...
... первичной или первичной вместе со вторичной или только вторичной И. Если это - итог обработки информации, решения задачи, то такая информация называется результативной, результирующей. В процессе решения задач возникает промежуточная информация, которая часто в автоматизированных системах играет самостоятельную роль, определения направления путей завершения решения задачи. Результатная информация ...
еоценить значение МП и микроЭВМ при создании автоматизированных средств измерений, предназначенных для управления, исследования, контроля и испытаний сложных объектов. Развитие науки и техники требует постоянного совершенствования средств измерительной техники, роль которой неуклонно возрастает. Основные понятия и определения Понятия и определения, используемые в измерительной технике, ...
... питания, блока сопряжения с компьютером, компьютер, индикатор. Блок – схема радиоприемника представлена на рисунке.2.1. Рисунок 2.1 - Структурная схема дистанционного комплекса контроля функционального состояния 1 – приемник; 2 – дешифратора; 3 – детектора; 4 – усилителя; 5 – усилителя вертикального отклонения; 6 – электронно-лучевой трубки; 7 – задающего генератора ...
0 комментариев