Подключение микроконтроллера к ПК

04edf51a

Микроконтроллеры PIC16 имеют многогранный синхронно-асинхронный передатчик USART, при помощи которого можно осуществить передачу информации между ПК и микроконтроллером. Передача данных по USART проводится по порядку по одному биту, потому этот внешний вид называют поочередным, логичные значения сигналов как правило отвечают уровням логики ТТЛ, КМОП и т.д. На ПК UART (асинхронный поочередный внешний вид) выполнен в качестве внешнего вида RS-232 через поочередный шлюз (COM) ПК. Главное различие внешнего вида RS-232 состоит в величине закономерных значений знака, логичному “0” отвечает позитивное усилие +5…15В, логичной “1” негативной усилие -5…15В. Такие значения были избраны для усовершенствования помехоустойчивости и повышения дальности связи.

В сегодняшних ПК и компьютерах, в большинстве случаев, COM шлюз отсутствует, в такой ситуации можно пользоваться особым переходником USB-COM (агрегат внешнего вида USB — RS232), что я и сделал. В моем случае переходник выполнен на базе чипсета FTDI, при стремлении его можно произвести собственноручно при помощи специальных микросхем FT232, PL2303 и т д.

Выход передатчика намечается знаками TхD (Tx), вход приемника RxD (Rx), на разъеме COM порта ПК выход TxD отвечает 3-му выводу, вход RxD 2-му выводу, 5-й вывод суммарный шнур (GND). При включении 2-ух механизмов по UART, выход передатчика 1-го устройства сплачивают с входом приемника 2-го устройства, и как следствие выход передатчика 2-го устройства с входом приемника 1-го устройства. Внешний вид UART (асинхронный) дает возможность синхронно вести прием и передачу информации между устройствами, в отличии от USRT (параллельный внешний вид). Как было сказано выше, передача данных проводится поочередно по битам, через равновеликие интервалы времени, потому оба устройства должны быть настроены на идентичную скорость и порядок работы, другими словами синхронность в этом случае проводится по времени, как следствие условия к правильности кратковременных задержек должны быть большими.

Чтобы использовать COM шлюз на ПК (в случае применения переходника USB-COM создается онлайн COM шлюз), можно включить обычную платформу HyperTerminal (терминал), которая посылает на COM шлюз ASCII коды знаков внедренных с клавиатуры. Принятые данные платформа также переделает в знаки в соответствии с таблицей ASCII. Для визуализации принятых данных от компьютера, к микроконтроллеру включены светодиоды HL1-HL4 и цифровое табло на драйвере MC14489AP. Светодиоды воспламеняются при нажатии аналогичных клавиш на цифровой клавиатуре компьютера (числа 1-4), цифровое табло показывает значение принятого килобайта. При нажатии клавиши SB1 контроллер посылает на компьютер фразу “PIC Alive ”.

В основной платформе вначале проходит регулировка полос ввода/вывода микроконтроллера, линии RB1/RX, RB2/TX настраиваются на вход для работы модуля USART. Дальше проходит регулировка скорости передачи данных по USART, маршрутом записи числа 0х19 в указатель скорости размена SPBRG. В даташите на контроллер дана матрица, где рассчитаны значения скорости размена исходя из частоты тактового генератора, режима (скоростной, скоростной, параллельный, асинхронный) и от числа, загружаемого в указатель SPBRG, там же даны формулы для расчета скорости размена. В этом образце частота тактового генератора равна 4 МГц (врожденный тактный генератор), порядок асинхронный скоростной, количеству 0х19 будет отвечать скорость размена в 9615 бит/с, что немного различается от нормальной скорости 9600 бит/с, ошибка в процентном соотношении составит +0,16%.

Дальше проходит регулировка регистра администрирования и статуса передатчика TXSTA (располагается в 1-ом банке), тут установкой бита BRGH выбираем скоростной порядок, сбросом битов SYNC и TX9 ставим асинхронный порядок работы USART и 8-ми битную передачу, ставя бит TXEN позволяем передачу данных. После данного настраиваем указатель администрирования и статуса приемника RCSTA, скидывая бит RX9 ставим 8-ми битный прием, установкой битов CREN и SPEN позволяем прием и включаем модуль USART. На этом настройку USART можно полагать законченной.

В приемнике основным считается сдвиговый указатель RSR, после принятия стопового бита, данные переписываются из RSR в указатель RCREG, затем ставится знак прерывания RCIF в регистре PIR1, само перебивание можно разрешить либо запретить колоченном RCIE регистра PIE1. Знак прерывания RCIF скидывается аппаратно, при чтении регистра RCREG. Указатель RCREG представляет из себя двухуровненвый буфер, другими словами может взять 2 килобайта, при этом нужно думать его дважды. Если указатель RCREG полон, а в RSR пришел 3-й килобайт, ставится знак переполнения приемника OERR в регистре RCSTA, датчик при этом выключается. Для сброса флага переполнения, нужно запретить прием, другими словами скинуть бит CREN.

В основной платформе происходит выборочный опрос клавиши и флага принятия килобайта, если знак установлен, содержание регистра priem переписывается во кратковременный указатель var, дальше вызывается программа администрирования светодиодами (svet), в которой содержание регистра var обследуется на совпадение с числами 49, 50, 51, 52. Этим числам отвечают знаки 1, 2, 3, 4 (десятичные числа) из таблицы ASCII. Если в подпрограмме svet найдено совпадение, то загорается аналогичный светодиод из HL1-HL4, другие тухнут, при неимении совпадений выключаются все светодиоды. Дальше вызывается программа вывода (vivod) содержимого регистра var на цифровое табло из семисегментных указателей, после возврата скидывается знак принятия килобайта, после этого совершается программа остановки (15 мс), затем происходит переход на заметину oproskn1, для еще одного цикла выборочного опроса.

При нажатии клавиши SB1 вызывается программа message, которая посылает фразу “PIC Alive ” через USART на компьютер. Для уменьшения кода знаки помещены в таблице данных, всего 10 знаков, последовательный номер знаков находится в регистре nomer. Перед каждым вызовом таблицы (программа table) указатель nomer инкрементируется, для извлечения следующего знака, затем направляется по USART. Вместе с этим совершается проверка равноправия содержимого регистра nomer количеству 10, если есть соответствие, происходит выход из подпрограммы message, другими словами все знаки отданы.

В передатчике основным считается сдвиговый указатель TSR, буфером передатчика считается указатель TXREG, в который грузят данные для передачи. После передачи стопового бита прошлого килобайта, в указатель TSR передаются свежие данные из регистра TXREG, при этом ставится знак прерываний TXIF в регистре PIR1, само перебивание можно разрешить либо запретить колоченном TXIE регистра PIE1. Знак прерывания TXIF скидывается аппаратно, после закачки свежих данных в TXREG. Подобным стилем положение регистра TSR показывает знак TRMT регистра TXSTA, знак ставится при опустошении TSR.

В моем виде, знаки, почерпнутые из таблицы данных, грузятся в указатель TXREG, затем происходит выборочный опрос флага TRMT, если знак установлен (килобайт сообщен, TSR бессодержателен), производим извлечение следующего знака. Вместо флага TRMT, можно спрашивать знак прерываний TXIF, приобретем такой же итог. Чтобы не тратить процессорное время на выборочный опрос флагов, можно осуществить передачу данных на прерываниях, другими словами грузить указатель TXREG в подпрограмме обработки прерываний.

Перейдем к обсуждению опций платформы HyperTerminal. Создаем свежее подключение микроконтроллера (File — New Connection) и задаем ему любое имя, к примеру 111, переходник USB-COM при этом должен быть включен. В следующем окне выбираем COM шлюз, дальше нужно настроить характеристики порта: показываем скорость передачи 9600 бит/с, 8 бит данных, без проверки четности, 1 стоповый бит, и выключаем регулирование потоком. После данного в правом нижнем углу должна выйти пометка “Подключено” (Connected). Дальше входим в качества разработанного включения (File — Properties), выбираем закладку опции и жмем клавишу “ASCII Setup”. В открывшемся окне устанавливаем галочку для отражения внедренных знаков на дисплей (Echo typed characters locally), еще одну галочку для добавления знака возврата каретки переводом строчек (Send line ends with line feeds), не вдаваясь в пространные рассуждения, чтобы при нажатии кнопки Enter переходить на свежую строчку. Вот в целом и все, можно посылать и принимать данные, все отражается в окне платформы. Ниже показаны снимки экрана с опциями платформы:

Вместо HyperTerminal, можно пользоваться второй комфортной платформой под наименованием Terminal v1.9b by Bray. Тут все опции показаны в одном окне, есть интегрированная матрица знаков ASCII, также платформа может создавать графики по принятым данным в спектре от 0 до 255.

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *