Читаем PIC-микроконтроллеры. Все, что вам необходимо знать полностью

На Рис. 12.25 тот же микроконтроллер управляет полудуплексной линией связи стандарта RS-485, используя преобразователь уровней МАХ485 фирмы Maxim. Оба буфера имеют собственные входы разрешения с противоположными активными уровнями (буфер передатчика — ВЫСОКИЙ, а буфер приемника — НИЗКИЙ). Микроконтроллер может включать соответствующий буфер в зависимости от направления обмена. Также с помощью микросхемы МАХ485 можно реализовать дуплексный канал с использованием двух линий связи.

Данные по интерфейсу RS-485 можно передавать и по синхронному протоколу. При этом, разумеется, необходимо будет выделить отдельный буфер для передачи тактового сигнала.

Рис. 12.25. Взаимодействие с ПК по интерфейсу RS-232 и с внешним миром по интерфейсу RS-422/485

Примеры

Пример 12.1

В Примере 11.2 мы написали подпрограмму, сравнивающую фиксированное значение TRIP с байтом, считанным из порта В. В ряде случаев может потребоваться подстройка программы под изменяющиеся условия работы путем модификации порогового значения по командам извне. Вместо того чтобы использовать второй порт ввод/вывода, было предложено передавать новое значение в последовательном виде на вывод RA4, используя вывод RA3 для подключения к линии тактовых сигналов. Предполагая, что состояние линии данных стабильно при ВЫСОКОМ уровне на линии тактового сигнала, напишите подпрограмму, считывающую новое значение и записывающую его в ячейку TRIP.

Решение

Один из возможных вариантов решения этой задачи приведен в Программе 12.17. Эта подпрограмма отслеживает появление ВЫСОКОГО уровня на линии тактового сигнала, при котором, согласно условию задания, сигнал на линии данных стабилен. Изменяя значение бита переноса в соответствии с состоянием линии данных и выполняя операцию сдвига через перенос, осуществляется побитовая загрузка нового значения в память. Причем очередная итерация цикла завершается только после того, как на линии тактового сигнала вновь появляется НИЗКИЙ уровень.

Программа 12.17. Подпрограмма изменения порогового значения из Программы 11.6

; ***************

; * ФУНКЦИЯ: Задвигает значение порога TRIP, которое затем используется в качестве операнда п/п СОМР *

; * ВХОД: Изменение значения битов данных на RA4 происходит при НИЗКОМ уровне на RA3 *

; * ВЫХОД: COUNT = 00, принятое значение — в TRIP *

; ***************

SER_TRIP movlw 8; Счетчик битов

               movwf COUNT

SER_TRIP_LOOP

               btfss PORTA,3; Ждем 1 на такт, линии

                  goto SER_TRIP_LOOP

               bcf STATUS,С; Обнуляем флаг переноса

               btfsc PORTA,4; На линии данных 1?

               bsf STATUS,С; ЕСЛИ да, ТО устанавливаем флаг переноса

               rlf TRIP,f; Вдвигаем бит

SER_TRIP_LOOP2

               btfsc PORTA,3; Дожидаемся появления 0 на такт, линии

                  goto SER_TRIP_LOOP2

               decfsz COUNT,f

                  goto SER_TRIP_LOOP

               return

Эта подпрограмма похожа на подпрограмму SPI_READ (см. Программу 12.3), за исключением того, что тактовый сигнал формируется внешним устройством, т. е. микроконтроллер PIC в данном случае выступает в роли ведомого. В реальных системах, где ведомый микроконтроллер должен обладать возможностью сообщать ведущему о необходимости передачи нового байта, такая схема может вызвать определенные проблемы. Указанную возможность можно реализовать, используя дополнительную линию порта ввода/вывода для передачи квитирующего сигнала CTS. Этот сигнал будет генерировать прерывание на стороне ведущего и инициировать обмен. Конечно же, этим ведущим может быть другой микроконтроллер PIC, и в этом случае мы получим очень простой вариант объединения двух микроконтроллеров. При использовании микроконтроллера с встроенным последовательным портом прерывания могут генерироваться автоматически — такой подход наиболее часто используется для реализации многопроцессорных сетей.

Пример 12.2

Напишите подпрограмму I2C_IN, обратную по своему действию подпрограмме I2C_OUT из Программы 12.9. Предполагается, что в вашем распоряжении имеются те же переменные, а принятое значение должно сохраняться в регистре DATA IN.

Решение

Перейти на страницу:

Все книги серии Программируемые системы

PIC-микроконтроллеры. Все, что вам необходимо знать
PIC-микроконтроллеры. Все, что вам необходимо знать

Данная книга представляет собой исчерпывающее руководство по микроконтроллерам семейства PIC компании Microchip, являющегося промышленным стандартом в области встраиваемых цифровых устройств. В книге подробно описывается архитектура и система команд 8-битных микроконтроллеров PIC, на конкретных примерах изучается работа их периферийных модулей.В первой части излагаются основы цифровой схемотехники, математической логики и архитектуры вычислительных систем. Вторая часть посвящена различным аспектам программирования PIC-микроконтроллеров среднего уровня: описывается набор команд, рассматривается написание программ на ассемблере и языке высокого уровня (Си), а также поддержка подпрограмм и прерываний. В третьей части изучаются аппаратные аспекты взаимодействия микроконтроллера с окружающим миром и обработки прерываний. Рассматриваются такие вопросы, как параллельный и последовательный ввод/вывод данных, временные соотношения, обработка аналоговых сигналов и использование EEPROM. В заключение приводится пример разработки реального устройства. На этом примере также демонстрируются простейшие методики отладки и тестирования, применяемые при разработке реальных устройств.Книга рассчитана на самый широкий круг читателей — от любителей до инженеров, при этом для понимания содержащегося в ней материала вовсе не требуется каких-то специальных знаний в области программирования, электроники или цифровой схемотехники. Эта книга будет также полезна студентам, обучающимся по специальностям «Радиоэлектроника» и «Вычислительная техника», которые смогут использовать ее в качестве учебного пособия при прослушивании соответствующих курсов или выполнении курсовых проектов.

Сид Катцен

Радиоэлектроника

Похожие книги

Электроника для начинающих
Электроника для начинающих

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию для защиты от проникновения в дом, елочные огни, электронные украшения для одежды, устройство преобразования звука, кодовый замок, автономную роботизированную тележку и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий.Для начинающих радиолюбителей

Паоло Аливерти , Чарльз Платт

Радиоэлектроника / Технические науки