Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Отметим также, что АЦП в старых версиях AVR Studio (о ней см. главу 5) не симулируется, поддержка АЦП была добавлена, начиная с версии 4.13.
Аналоговый компаратор, ввиду его простоты, мы рассмотрим сразу в практических приложениях в главе 10. Здесь остановимся на другом важнейшем компоненте МК AVR— последовательных портах, которые служат основным каналом коммуникации МК с внешним миром.

Последовательные порты
Последовательные порты называют так потому, что в них в каждый момент времени передается только один бит (в некоторых случаях возможна одновременная передача и прием, но суть дела от этого не меняется). Самое главное преимущество последовательных портов перед параллельными (когда одновременно производится обмен целыми байтами или полубайтами — тетрадами) — снижение числа соединений. Но оно не единственное: как ни парадоксально, но последовательные интерфейсы дают значительную фору параллельным на высоких скоростях, когда на скорость передачи начинают влиять задержки в линиях. Последние невозможно сделать строго одинаковыми, и это одна из причин того, что последовательные интерфейсы в настоящее время начинают доминировать (типичные примеры — USB вместо LPT и SCSI или Serial ATA вместо IDE).

В микроконтроллерных устройствах с малыми объемами данных, конечно, скорость передачи нас волнует во вторую очередь, но вот число соединительных проводов — очень критичный фактор. Поэтому все внешние устройства, описанные в этой книге, будут иметь последовательные интерфейсы.

Практически любой последовательный порт можно имитировать программно, используя обычные выводы МК. Когда-то так и поступали даже в случае самого популярного из таких портов — UART. Однако с тех пор МК обзавелись аппаратными последовательными портами, что, впрочем, не всегда удобно: так, по глубокому убеждению автора, аппаратная реализация порта TWI (ГС) в AVR далека от идеала, и целесообразнее пользоваться программным имитатором. Но давайте обо всем по порядку.

UART
Сначала уточним соответствующие термины. В компьютерах есть СОМ-порт (а если и нет, то его всегда можно эмулировать через USB, как мы увидим в главе 13), часто ошибочно называемый портом RS-232. Правильно сказать так: СОМ-порт передает данные, основываясь на стандарте последовательного интерфейса RS-232. Последний, кроме собственно протокола передачи, стандартизирует также и электрические параметры, и даже всем знакомые разъемы DB-9 и DB-25. UART (Universal Asynchronous Receiver-Transmitter, "универсальный асинхронный приемопередатчик") — основная часть любого устройства, поддерживающего RS-232, но и не только его (недаром он "универсальный")— например, стандарты RS-485 и RS-422 также реализовыва-ются через UART, т. к. они отличаются от RS-232 только электрическими параметрами и допустимыми скоростями, а не общей логикой построения.

Кроме UART, в конкретный порт (в том числе в СОМ-порт ПК) обычно входит схема преобразования логических уровней в уровни соответствующего стандарта. Преобразователь уровня в состав МК, естественно, не входит, так что для стыковки с компьютером или другим устройством, поддерживающим стандарт RS-232 (RS-485 или RS-422), его придется разрабатывать самостоятельно или использовать готовый. Отметим, что RS-232 предполагает возможность соединения только двух устройств между собой, в то время как к линиям RS-485 и RS-422 может подсоединяться и большее их число. Эти вопросы мы рассмотрим в главе 13.

Рассмотрим подробнее, как, собственно, происходит обмен. Стандарт RS-232 — один из самых древних протоколов передачи данных между устройствами, он был утвержден еще в 1962 г., и к компьютерам (тем более ПК) тогда еще не имел никакого отношения. Идея этого интерфейса заключается в передаче целого байта по одному проводу в виде последовательных импульсов, каждый из которых может находиться в состоянии 0 или 1. Если в определенные моменты времени считывать состояние линии, то можно восстановить то, что было послано.

Однако эта простая идея натыкается на определенные трудности. Для приемника и передатчика, связанных между собой двумя проводами (два сигнальных провода: "туда" — TxD, и "обратно" — RxD), приходится задавать скорость передачи и приема, которая должна быть одинакова для устройств на обоих концах линии. Число передаваемых/принимаемых битов в секунду иногда носит название битрейта (bitrate). В данном случае биты в секунду совпадают с бодами — числом посылок в секунду (в общем случае один бод может нести несколько битов в секунду), поэтому нередко скорость передачи называют бодрейтом (haudrate).



     
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru