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

#include <16F84.h>

/* 0-й бит порта А — SCL, 1-й бит порта А — SDA, режим ведущего, протокол Fast */

#use i2c(master, scl=PIN_A0, sda=PIN_A1, fast)

#byte DATA_X = 0x20

#byte DATA_Y = 0x21

void MAX518 (unsigned int channel_0, unsigned int channel_1);

void irain(void)

{

/* Различный код * /

МАХ518(DATA_X, DATA_Y); /* Передаем два байта данных * /

/* Остальной ход * /

}

void MAX518(unsigned int channel_0, unsigned int channel_1)

{

i2c_start(); /* Формируем состояние СТАРТ * /

i2c_write(0x58); /* Передаем адрес ведомого * /

i2c_write(0); /* Посылаем 1-й управляющий байт * /

i2c_write(channel_0); /* Посылаем данные 0-го канала * /

i2c_write(0x01); /* Посылаем 2-й управляющий байт * /

i2c_write(channel_1); /* Посылаем данные 1-го канала * /

/* Обновляем оба канала * /

i2c_stop(); /* Формируем состояние СТОП * /

}

В этой программе используются следующие встроенные функции компилятора CCS:

∙ i2c_start();

Формирует состояние СТАРТ.

∙ i2c_stop();

Формирует состояние СТОП.

∙ i2c_read();

Считывает один байт с шины. Если необязательный параметр равен 0, то в ответ на принятые данные будет возвращен NACK. При работе в режиме ведущего также генерирует тактовый сигнал.

∙ i2c_write(value);

Передает по шине один байт. При работе в режиме ведущего также генерирует тактовый сигнал.

∙ #use i2c(master, scl=PIN_A0, sda=PIN_A1, fast)

С помощью этой директивы программист сообщает компилятору о том, какие выводы будут использоваться для подключения к линиям шины I2С, тип используемого протокола (стандартный или высокоскоростной), а также режим работы модуля (ведущий или ведомый). К моменту написания книги компилятор не поддерживал возможности модуля MSSP по работе в качестве ведущего, поэтому такие функции реализованы программно. Функции ведомого могут быть реализованы аппаратно модулем MSSP, если в директиве #use i2c() указать опцию FORCE_HW.

* * *

Отличительной особенностью всех последовательных протоколов, рассмотренных нами до настоящего момента, является то, что ведущее устройство генерирует тактовый сигнал, благодаря которому ведомое устройство может принимать и передавать данные в синхронном режиме. Альтернативный подход к передаче данных базируется на допущении, что передатчик и приемник работают примерно с одной и той же скоростью. Такой асинхронный протокол использовался в системах передачи данных на протяжении более ста лет для передачи алфавитно-цифровых символов по телеграфу, телефону и радиоканалу.

Одной из особенностей ранних компьютеров, создававшихся в 40-х и 50-х годах, было интенсивное заимствование существовавших к тому времени технологий. А одним из основных элементов любой машинно-ориентированной системы является терминал данных. В то время в области телекоммуникаций широко использовались телетайпы (TTY)[159]. Последовательные данные преобразовывались в параллельный формат самим терминалом, который также выполнял функции клавиатуры и печатающего устройства.

До начала 80-х годов телетайпы были исключительно электромеханическими устройствами, управляющимися синхронными электродвигателями. То есть синхронность работы удаленных терминалов гарантировалась только в течение короткого интервала времени. Для устранения этой проблемы каждому передаваемому слову предшествовал старт-бит, а после него передавался один или более стоп-битов. Типичный пример показан на Рис. 12.20. В свободном состоянии линии на ней присутствует лог. 1 (обрыв). Появление сигнала лог. 0 сигнализирует о начале слова. Завершает передачу слова сигнал лог. 1. Электромеханические терминалы обычно печатали со скоростью десять символов в секунду и требовали не менее двух стоп-битов. Для 8-битных слов данных это соответствует скорости передачи, равной 110 бит в секунду или 110 бод[160].

Рис. 12.20.Передача строки сообщения «РIС» по асинхронному последовательному каналу с проверкой четности и, как минимум, одним стоп-битом

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

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

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

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

Сид Катцен

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

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

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

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

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

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