- •Раздел I. Общие сведения о микроконтроллерах. Тема 1.1. Понятие микроконтроллера.
- •Тема 1.2. Типы микроконтроллеров.
- •Встраиваемые микроконтроллеры.
- •16-И 32-разрядные микроконтроллеры (микроконтроллеры с внешней памятью).
- •Цифровые сигнальные процессоры.
- •Тема 1.3. Архитектура процессоров. Cisc и risc процессоры.
- •Гарвард против принстона.
- •Тема 1.4. Типы памяти микроконтроллеров
- •Память программ
- •Память данных
- •Тема 1.5. Регистры микроконтроллера. Пространство ввода-вывода
- •Внешняя память
- •Раздел II. Аппаратные средства микроконтроллеров Тема 2.1. Корпуса устройств
- •Тема 2.2. Питание микроконтроллеров.
- •Потребляемая мощность.
- •Подключение питания.
- •Тема 2.3. Запуск микроконтроллера (сброс в начальное состояние). Тактирование системы.
- •Тактирование системы
- •Тема 2.4. Командные циклы. Программный счетчик. Алу. Командные циклы.
- •Программный счетчик.
- •Арифметико-логическое устройство
- •Тема 2.5. Сторожевые таймеры. Прерывания. Сторожевые таймеры.
- •Прерывания.
- •Раздел III. Средства обмена в микроконтроллерах. Тема 3.1. Таймеры.
- •Тема 3.2. Параллельный ввод-вывод данных. Преобразование логических уровней. Параллельный ввод-вывод данных
- •Преобразование логических уровней.
- •Тема 3.3. Последовательный ввод-вывод данных.
- •Асинхронный последовательный обмен.
- •Синхронный последовательный обмен.
- •Тема 3.4. Протоколы передачи данных. Протокол microwire.
- •Протокол spi.
- •Протокол i2с
- •Раздел IV. Микроконтроллеры семействаMcs-51 Тема 4.1. Фирмы-производители микроконтроллеров. Типовые характеристики семейства mcs-51.
- •Тема 4.2. Структура микроконтроллеров mcs-51 и функции выводов
- •Тема 4.3. Организация памяти и программно доступные ресурсы.
- •Тема 4.4. Синхронизация, магистральные циклы.
- •Тема 4.5. Методы адресации и система команд.
- •Методы адресации
- •Регистровая адресация.
- •Прямая адресация.
- •Косвенно-регистровая адресация.
- •Непосредственная адресация.
- •Система команд семейства mcs-51
- •Арифметические команды.
- •Логические команды.
- •Команды пересылки данных.
- •Команды работы с битами.
- •Команды передачи управления.
- •Тема 4.6. Система прерываний
- •Особенности запросов внешних прерываний.
- •Тема 4.7. Параллельные порты
- •Обновление данных в портах
- •Операции типа «чтение-модификация-запись»
- •Тема 4.8. Таймеры-счетчики
- •Тема 4.9. Последовательный порт
- •Синхронный обмен (режим 0)
- •Асинхронный обмен (режимы 1, 2, 3)
- •Обмен в многопроцессорных системах
Преобразование логических уровней.
При работе с микроконтроллерами часто приходится обеспечивать интерфейс устройств, реализованных на микросхемах с различным типом логики. При использовании серийных микросхем с положительной логикой, например, ТТЛ (транзисторно-транзисторная логика) или КМОП (логика на комплементарных МОП-транзисторах), реализация интерфейса не вызывает проблем, так как возможно непосредственное соединение этих микросхем. Однако интерфейс устройств, реализованных на микросхемах с отрицательной и положительной логикой, например, ЭСЛ (эмиттерно-связанная логика) и КМОП, может вызвать некоторые трудности.
Хотя имеются специальные микросхемы для выполнения такого интерфейса, однако обычно они обеспечивают одностороннюю передачу данных, что затрудняет реализацию двунаправленных шин. Кроме того, применение этих микросхем может значительно увеличить стоимость проектируемого устройства.
Наиболее типичный метод преобразования логических уровней состоит в том, чтобы привести в соответствие пороги переключения обоих устройств. Как показано на рис. 3.8, нижний потенциал напряжения питания для КМОП-микроконтроллера сдвигается ниже потенциала «земли» таким образом, чтобы его порог переключения стал соответствовать порогу переключения микросхем ЭСЛ. Резистор с номиналом от 1 кОм до 10 кОм используется для ограничения тока, который протекает из-за разного значения логических уровней используемых микросхем.
При взгляде на эту схему может сложиться впечатление, что цена сдвига уровня питающего напряжения для микроконтроллера намного выше цены нескольких интерфейсных микросхем. На самом деле это не сложно, так как современные КМОП-микроконтроллеры потребляют очень малую мощность. В приведенной схеме необходимый сдвиг уровней может быть обеспечен включением в цепь питания кремниевых диодов, падение напряжения на которых составляет 0,7 В. Этот простой способ согласования уровней позволяет с минимальными дополнительными затратами подключать КМОП-микроконтроллеры к микросхемам ЭСЛ, обеспечивая возможность двунаправленной передачи данных.
Рис. 3.8 - Согласование логических уровней ЭСЛ и КМОП микросхем.
Самостоятельная работа № 2-3.
Тема 3.3. Последовательный ввод-вывод данных.
Наиболее распространенный вид связи между различными системами (или компьютерами) - это последовательный обмен. В этом случае байт данных передается по единственному проводу бит за битом с обеспечением синхронизации между приемником и источником данных. Очевидное преимущество последовательной передачи данных состоит в том, что она требует небольшого количества линий связи.
Существует множество стандартных последовательных протоколов передачи данных, которые применяются в микроконтроллерах. В некоторых микроконтроллерах эти протоколы реализуются внутренними схемами, размещенными на кристалле, что позволяет упростить разработку различных приложений.
Асинхронный последовательный обмен.
Наиболее распространенная форма последовательной связи - асинхронный обмен, при котором байт данных посылается как пакет, включающий информацию о начале и конце передачи данных, а также информацию для контроля ошибок.
Первым передается не бит данных, а старт-бит, указывающий на начало передачи данных (начало пакета). Этот бит используется приемником для синхронизации процесса чтения данных, которые следуют за старт-битом (младший бит данных идет первым). После битов данных может следовать бит четности (контрольный бит), который используется для проверки правильности полученных данных. Существует два типа проверки на четность. Проверка на нечетность (Odd) означает, что число единиц в пакете данных, включая бит четности, должно быть нечетным (например, 55h будет иметь бит четности равным 1, чтобы сделать число единичных битов равным пяти, то есть нечетным). Проверка на четность (Even), наоборот, означает, что число единичных битов должно быть четным (например, при передаче числа 55h бит четности будет равен 0).
В некоторых микроконтроллерах значение бита четности должно определяться программно, а затем помещаться в регистр.
За битом четности следует стоп-бит, который используется приемником для обработки конца передачи пакета.
Асинхронный пакет данных показан на рис. 3.9. Существует набор параметров, который должен быть известен при реализации обмена. Одним из таких параметров является число передаваемых бит данных, которое определяется типом приемного и передающего устройств. Пакет на рис. 3.9 содержит только 5 бит данных (такое число бит использовалось в телетайпах), но возможны пакеты длиной до 8 бит.
Наряду с битами четности («odd») или нечетности («even») возможны другие варианты контрольных битов: «no», «mark» и «space». «No» означает отсутствие бита четности в пакете. «mark» или «space» означает, что вместо бита четности всегда посылается 1 («mark») или 0 («space»), соответственно. Эти варианты контрольных битов используется достаточно редко - в тех случаях, когда необходимо дать приемнику дополнительное время на обработку пакета.
Рис. 3.9 - Асинхронная последовательная передача данных.
Количество стоп-битов также может быть различным. Второй стоп-бит может вводиться для той же цели, что и контрольные биты «mark» и «space» - чтобы дать приемнику больше времени для обработки принятого пакета.
Практически все современные устройства используют для асинхронного обмена формат данных «8-N-1», что означает передачу 8 бит данных, отсутствие бита четности и один стоп-бит. Бит четности и дополнительный стоп-бит обычно не требуются для последовательной связи.
Наиболее популярный протокол асинхронной последовательной связи называется «RS-232», который в настоящее время является международным стандартом. Это очень старый стандарт, используемый для связи компьютеров.
Асинхронный приемник ждет прихода старт-бита, когда на линии устанавливается низкий уровень. Через половину времени передачи одного бита (длительность этого времени задается синхросигналом) линия вновь опрашивается. Если на линии все еще установлен низкий уровень сигнала, то приемник ждет один период и считывает данные (рис 3.10). Если же на линии оказывается высокий уровень сигнала, то приемник считает, что произошла ошибка, и данные не принимаются. Этот метод используется как при аппаратной, так и при программной реализации асинхронного приема данных. В программно реализованных приемниках используются программные циклы для отсчета задержек времени.
Другой распространенный метод асинхронной последовательной передачи данных - это использование кода типа «Манчестер» («manchester»). При этом методе передача каждого бита данных синхронизируется импульсом, а значение бита (0 или 1) определяется промежутком времени до следующего импульса (рис.3.11.). После передачи заданного числа битов данных следует стоп-импульс, а затем прием данных прекращается. Особенность манчестерского кодирования заключается в том, что старт-бит качественно отличается от 1 или 0. Это позволяет приемнику определить, являются ли поступающие данные началом или серединой посланного пакета (в последнем случае данные не будут приниматься до прихода старт-бита). Манчестерское кодирование хорошо подходит для использования в случаях, когда поток передаваемых данных может быть легко прерван. Поэтому такой метод передачи данных является основным для связи с помощью инфракрасного излучения, например, в пульте дистанционного управления телевизором.
Рис. 3.10 - Чтение данных при асинхронном последовательном обмене.
Рис. 3.11 - Последовательный обмен с манчестерским кодированием