Режим 1 характеризуется следующими параметрами:
> обмен информацией асинхронный;
^ передаются 10 бит за один акт обмена (старт - бит (0) 8 бит данных и стоп-бит (1));
> скорость приема/передачи программируема и задается таймером. Основные подпрограммы для МК
Основными подпрограммами для микроконтроллера будут являться: считывание данных из АЦП, инициализация УАПП, прием байта и посылка байта. Считывание данных из АЦП
Для того чтобы настроить микроЭВМ на обмен информацией по последовательному каналу, необходимо сделать следующее:
^ запретить все прерывания
так как в их использовании нет необходимости;
^ настроить таймер 1 на
работу в режиме 2 с автоматической перезагрузкой содержимого. Это необходимо для задания скорости обмена информацией и поддержания ее постоянной;
^ загрузить в счетчик
таймера начальные значения;
^ запустить таймер 1;
Пример кода, рассчитанного на скорость обмена 9600 бит/с для кварцевого резонатора с резонансной частотой равной 11,059 Мгц.
Эта подпрограмма вызывается самой первой в основной программе микроЭВМ. В принципе ее можно даже и не оформлять как подпрограмму.
Подпрограмма приема посылки байта по последовательному каналу.
Считывать байт из порта ввода/вывода SBUS можно только при установленном бите RI регистра управления/статуса SCON,
сигнализирующего о наличии байта в буфере приема. После считывания этого байта бит RI необходимо сбросить.
После записи байта в порт ввода/вывода нужно дождаться установление бита TI , который будет сигнализировать окончание посылки байта в линию. Затем бит TI также будет нужно сбросить.
Подпрограмма приема байта в аккумулятор:
Алгоритм позволяет программным методом выявлять ошибки ввода/вывода и реагировать на их появление. Диаграмма состояния устройства (рис.22.), на которой
приведены четыре основных состояния устройства с точки зрения обмена информации с ЭВМ.
МикроЭВМ является ведомым, а персональный компьютер ведущим при обмене данных.
Состояние первое - Wait
В этом состоянии устройство оказывается сразу же после включения питающего напряжения. Здесь оно ожидает от компьютера запроса на инициализацию, который выражается в посылке компьютером символа NUL. Устройство же в свою очередь, если требуется, дополнительные модули и ресурсы, а затем, если все прошло нормально, посылать в ЭВМ символ АСК. В случае же ошибки оно должно послать NAK. Таким образом, происходит первое «общение».
При удачной инициализации устройства с последующей посылкой символа АСК, оно автоматически переходит в следующее состояние. Этот переход обозначен стрелкой 1 на диаграмме. Состояние Ready
В этом состоянии наша микро-ЭВМ ожидает запроса ПК на посылку измеренного значения, считанного с АЦП. Запросом является символ XON. По принятии этого символа устройство переходит в новое состояние - Sending. Переходу соответствует стрелка 2. Состояние Sending
Попадая сюда, микроконтроллер считывает двоичное двенадцатиразрядное число из АЦП ранее указанным методом и посылает частями в ЭВМ. В данной реализации происходит преобразование двоичного числа в трехсимвольный шестнадцатеричный эквивалент.
По окончании передачи значения в компьютер микро-ЭВМ переходит в следующее состояние по стрелке 4.
Состояние Sent
Это состояние является последним и замыкает круг единичного акта общение устройства с компьютером. Здесь от компьютера ожидается подтверждение того, что он правильно принял значение, которое было ему адресовано.
Тут возможными являются несколько вариантов ответа ПК на посланное число: он может ответить об успешном приеме символом XOFF, который будет означать, что больше пока не требуется других значений, а может ответить символом XON, означающим, что нужно еще одно значение. Если принят XOFF, то устройство возвращается в состояние готовности Ready (переход 7 на диаграмме). Если же принят символ XON, то устройство опять оказывается в состоянии Sending
(переход 5) и повторяет считывание из АЦП с последующей передачей числа в линию. Если ПК не понравилось то, что он получил: например, вместо символов диапазона «0»...»9», «А»...>^», он получил нечто иное, «G» или «,». В этой ситуации он посылает нашему устройству символ NAK, который должен трактоваться как запрос на повторную посылку последнего значения, что и происходит: устройство опять переводится в состояние Sending (переход по стрелке 6).
Остались неописанными переходы, обозначенными стрелками 3 и 8 диаграммы. Если компьютер обнаружит серьезные ошибки ввода/вывода или ему понадобится прекратить обмен с устройством, то он просто пошлет инициализационный NUL, по которому произойдет инициализация устройства и оно окажется в состоянии готовности Ready.
Переходим к ПК. Общая программа для ПК. Диаграмма состояний ПК.
Принципиально общая программа для компьютера не будет ни чем отличатся от используемой в микроконтроллере. Алгоритм будет аналогичным, похожей будет и диаграмма состояний, которая представлена на рисунке 23. Первое состояние Initialization
Сюда компьютер попадает, когда пользователь нажимает на его клавиатуре клавишу, соответствующую принятию единственного значения. В этом состоянии компьютер посылает символ инициализации NUL в устройство и ожидает ответа на него символом АСК или NAK. Если был получен АСК, значит инициализация прошла нормально и можно продолжить работу - перейти в следующее состояние по стрелке 2 на диаграмме. В случае получения NAK работа должна прекратиться и компьютеру следует перейти в заключительное состояние Done по стрелке 1. Состояние Ready
В этом состоянии компьютер подготавливается к приему символов, из которых будет состоять запрошенное из микро-ЭВМ значение. Запросов на посылку значения существует два. Первый - это обычный запрос значения, ему соответствует символ XON.
Второй же запрос - это запрос на повторную посылку последнего значения. Это необходимо в том случае, если значение не было принято полностью за какое-то объективное время или были приняты неверные символы, не попадающие в диапазоны от «0» до «9» и от «А» до «F». Для запроса на повторную посылку отводится символ NAK.
Далее, после подготовки к приему символов значения происходит один из двух вышеуказанных запросов к нашему устройству, затем компьютер переходит по стрелке 4 в состояние приема значения. Состояние Receiving
Здесь ПК просто считывает три символа значения, измеренного и преобразованного с помощью АЦП. Существует некоторое объективное время ожидания символа компьютером. Если символ не был считан за это время, то такая ситуация интерпретируется как ошибочная, т.е. имела место ошибка ввода/вывода.
При довольно высоких скоростях обмена информацией (больше 19200 бит/с) или при работе в операционной системе MS-Windows (любой версии) часто бывает, что компьютер из посылаемых ему трех символов принимает только два, а иногда и того меньше - один. Чтобы компьютер «не висел» - ожидал бесконечно долго недостающего или пропущенного символа - вводится некоторое время, ограничивающее это ожидание. К сожалению, эти пропуски аппаратным методом никак не выявляются.
В данной реализации определено два типа времени ожидания, которые могут быть заданы пользователем с клавиатуры. Первый тип это время ожидания 1-го из 3-х символов. Он позволяет устройству спокойно, ни куда не торопясь, измерить, оцифровать необходимое нам число и преобразовать его в символьный эквивалент. А второй тип - это временной лимит на посылку второго и третьего символов.
Перейдем теперь к возможным переходам из состояния Receiving в другие состояния.
Если так и не было принято всех 3-х символов значения за отведенное время, то компьютер должен попросить наше устройство послать ему значение повторно. Этой ситуации соответствует переход по стрелке 5, т.е. компьютер делает запрос символом NAK и переходит обратно в состояние Ready.
Если в процессе приема компьютером была зафиксирована ошибка ввода/вывода (а у ПК есть такая возможность достаточно проанализировать регистр состояния последовательного порта), то лучше привести и компьютер и микро-ЭВМ в исходное состояние, т. е. повторить инициализацию. Поэтому на диаграмме также присутствует и стрелка 3.
И, наконец, если компьютер получил от устройства все три символа, то он переходит в состояние анализа полученного значения - в состояние Received по стрелке 8.
Состояние Received
Тут компьютер проверяет полученные символы на принадлежность к диапазону «0»... «9», «А»...«Е». Если хотя бы один из них не попадает в указанный диапазон, то ПК в праве потребовать от микро-ЭВМ повтора посылки, что он и делает, отвечая символом NAK. Затем он возвращается в состояние Ready (стрелка 6).
Если же символы удовлетворяют наложенному ограничению на диапазон их значений, то компьютер подтверждает удачный прием значения, посылая в линию символ XOFF, и переходит на заключительную стадию приема значения. Это состояние Done, и переход в него обозначен стрелкой 7. В этом состоянии можно сохранить или отобразить полученное от устройства значение.
0 коммент.:
Отправить комментарий