Модули последовательного обмена данными МК – для новичков в радиоделе

July 15, 2014 by admin Комментировать »

Одни модели микроконтроллеров имеют несколько интерфейсов последовательного обмена данными, как ATmega168, модель, имеющая USART, SPI и 2-wire другие модели могут иметь только USART, третьи не имеют модуля для последовательного обмена

Микроконтроллеры, имеющие встроенные модули последовательного обмена данными, могут объединяться в сети, соединяться с компьютером, например, через микросхему интерфейса RS232

С появлением встроенных модулей USB скорость общения микроконтроллеров с компьютером существенно возросла Но микроконтроллеры в сетях редко требуют высоких скоростей В этом случае наиболее удачным можно считать применение интерфейса RS485, отличительной особенностью которого является дифференциальный сигнал, при котором сеть даёт минимальные наводки на другие сети и сама не склонна к наводкам Благодаря этому сети с интерфейсом RS485 могут иметь протяжённость в сотни метров, что не маловажно при создании распределённой системы сбора и обработки информации

Программа Flowcode позволяет легко создавать устройства, которые будут общаться между собой по сети или непосредственно Вот простой пример такого общения: пусть один контроллер, имеющий кнопку, передаёт команду другому контроллеру, удалённому от первого

Напишем программу для передающего микроконтроллера, предполагая общение двух одинаковых PIC16F628A

Как обычно создаём проект Добавляем бесконечный цикл, в котором будем опрашивать кнопку на входе В0 (кнопку тоже добавляем) Для активного состояния кнопки (в расширенных свойствах) выбираем низкий уровень В разделе подключения кнопки (в окне свойств, выделив кнопку) выбираем В0 Для общения с кнопкой создаём переменную inp

Добавляем интерфейс RS232 (Коммуникации-RS232) А в программу добавляем ветвление с условием: если inp = 0 В этом случае отправим команду Чтобы отправить команду добавляем макрос компонента, в свойствах которого выбираем RS232(0) и команду SendRS232Char В окне параметров вводим символ ‘1’ Это и будет наша команда

Задав слово конфигурации (я выбираю 0x3F18, когда отключено всё ненужное и используется внутренний тактовый генератор) и, выбрав частоту 4 МГц (Вид-Настройки проекта), можно транслировать программу в hex-файл

Рис 2520 Программа отправления команды через USART

Окончательную проверку мы сделаем в программе ISIS, но предварительно можно проверить работоспособность программы в Flowcode Для этого запустим отладку (кнопка проигрывания на инструментальной панели), нажмём кнопку со  значком плюс для окошка Characters in queue, чтобы добавить в запрос 1 Всё это мы проделали на Панели в окне интерфейса RS232

Теперь нажимая кнопку, вы можете видеть, как появляются единицы в окне Characters sent

Единиц появляется много, даже при кратковременном нажатии на кнопку Что говорит нам о том, что микроконтроллер работает значительно быстрее, чем мы: за одно нажатие кнопки он успевает много раз опросить её и отправить команду

Рис 2521 Отправка команды

Теперь создадим программу приёма команды Все операции аналогичны тем, что мы делали в предыдущей программе: цикл, в котором добавлен макрос компонента, добавление RS232 и светодиода для соединения его с выходом А0

Рис 2522 Программа приёма команды

В макросе мы выбираем команду приёма символа

Рис 2523 Настройка свойств компонентного макроса

Переменную command, мы, конечно, создаём Настраиваем конфигурацию микроконтроллера (точно так же, как и в предыдущем случае) и транслируем программу в hex-файл Светодиод (в свойствах) соединяем с выводом А0 Проверяем работу программы

Отправляя единицу (через окно запроса), мы зажигаем светодиод

Можно было бы добавить ещё одну команду, при получении которой микроконтроллер гасил бы светодиод, но, думаю, вы сами справитесь с этой задачей

Рис 2524 Проверка программы

А теперь посмотрим, как проверить обе программы в ISIS (Proteus)

Начинаем  с  создания  нового  проекта,  затем  с  помощью  менеджера  компонентов  добавляем контроллер PIC16F628A

В рабочее поле добавляем два микроконтроллера – один будет отправлять команду, второй принимать её

Рис 2525 Проверка работы обеих программ в ISIS

В программе ISIS есть виртуальный терминал, который добавлен в схему Вывод передатчика второго контроллера соединён с приемником первого и с выводом приемника терминала Когда мы нажимаем кнопку, светодиод, как мы и планировали, загорается Правда терминал немного

«подвирает», отображая шестнадцатеричное число 21, хотя должно было быть 31

Чтобы терминал работал, его тоже нужно настроить Двойной щелчок по нему открывает диалоговое окно его свойств

Рис 2526 Диалоговое окно свойств терминала

Скорость обмена 2400 не слишком велика, но в очень многих случаях её достаточно Если нужна скорость выше, то не получится использовать внутренний тактовый генератор, надо  добавить кварцевый резонатор на 20 МГц, два конденсатора и настроить работу микроконтроллера на более высокой скорости обмена данными

Чтобы увидеть на экране виртуального терминала шестнадцатеричные числа, нужно щёлкнуть правой клавишей мышки по экрану (когда запущена работа отладчика) и выбрать отображение в шестнадцатеричном виде

Рис 2627 Выбор настроек экрана терминала

И последнее, очень полезно в качестве упражнения проверить работу двух микроконтроллеров в самой программе Flowcode

Источник: Гололобов ВН,- Самоучитель игры на паяльнике (Об электронике для школьников и не только), – Москва 2012

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

Устройство витков выходе генератора импульсов микросхемы мощности нагрузки напряжение напряжения питания приемника пример провода работы радоэлектроника сигнал сигнала сигналов сопротивление схема теория транзистора транзисторов управления усиления усилитель усилителя устройства частоты