PIC Урок 24. Модуль USART. Приём данных. Соединяем два микроконтроллера. Часть 2



В предыдущей части занятия мы подключили схему первого устройства и проверили на ней приём и передачу, написав предварительно соответствующий код.

 

Теперь остановим скрипт и терминальную программ и перейдём к проекту для второго контроллера. В качестве второго устройства мы будем использовать нашу плату от WaveShare с контроллером PIC16F877A на борту.

Соединим наши платы, отключив переходник USB-TTL, который нам теперь не потребуется, а также не забывая про то что ножка RX одного контроллера соединяется с ножкой TX другого и наоборот. Также подключим к плате программатор, а также убедимся, что перемычки на 8 светодиодов у нас на месте, так как отображать числа мы будем старым проверенным способом — светодиодами. А ещё подключим логический анализатор к шине USART (нажмите на картинку для увеличения изображения)

Проект для второго устройства мы возьмём из проекта прошлого урока USART_TX и назовём его USART_TXRX2.

 

 

Откроем наш проект в MPLAB X, сделаем его главным, зайдём в настройки и убедимся, что контроллер будет питаться от программатора.

В проекте в функции main() вернём скорость на 19200

 

В бесконечном цикле закомментируем передачу строк

 

А передачу числа раскомментируем

 

Соберём наш код и запустим его на выполнение и, если мы не отключали нашу первую плату, то циферки на индикаторе начнут свой счёт

Теперь нам надо научить нашу вторую плату также принимать данные. Для этого мы для начала перейдём в проект первой платы и раскомментируем там передачу в бесконечном цикле

 

Сделаем данный проект главным, соберём код и прошьём затем контроллер с помощью программы PicKit2.

 

 

Затем вернёмся в наш второй проект, также сделав его главным и в файле main.c в функции main() также настроим наш модуль на приём, применив весь код из первого проекта

 

Также на приём не забываем настроить и наш порт B

 

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

 

Соберём код и прошьём контроллер.

Если всё правильно, то результат себя долго ждать не заставит

Отлично!

Я оставлял схему работать очень надолго и ничего не повисло.

Тем более я долго пытался пытался поймать одновременную передачу данных в оба направления и мне это всё же удалось

 

 

 

Это позволяет с полной уверенностью подтвердить то, что наш модуль USART не только теоретически может обмениваться в полнодуплексном режиме.

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

 

Всем спасибо за внимание!

 

 

Предыдущая часть Программирование МК PIC Следующий урок

 

Исходный код для PIC16F876A

Исходный код для PIC16F877A

 

 

Купить программатор (неоригинальный) можно здесь: PICKit3

Купить программатор (оригинальный) можно здесь: PICKit3 original

Отладочную плату PIC Open18F4520-16F877A можно приобрести здесь: PIC Open18F4520-16F877A

Семисегментный чертырехразрядный индикатор красный с общим анодом 10 шт

Переходник USB to TTL можно приобрести здесь ftdi ft232rl

Логический анализатор 16 каналов можно приобрести здесь

 

 

Смотреть ВИДЕОУРОК (нажмите на картинку)

 

PIC Модуль USART. Приём данных. Соединяем два микроконтроллера

Добавить комментарий

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

*