Анализатор последовательной линии

Автор работы: Пользователь скрыл имя, 09 Января 2012 в 22:12, курсовая работа

Краткое описание

Целью данной работы является проектирование и реализация устройства, способного осуществлять сбор и накапливание информации, передаваемой по последовательной линии с неизвестной скоростью.

Содержание работы

Введение 2
1. Теоретические основы 2
2. Методика работы 6
2.1. Сбор информации 6
2.2. Взаимодействие с компьютером 9
3. Код программы 12
4. Анализ результатов 28
Заключение 30
Список литературы

Содержимое работы - 1 файл

Анализатор последовательной линии.docx

— 262.23 Кб (Скачать файл)

 
 
 
 
 
 
 
 
 
 
 
 
 
Анализатор  последовательной линии 
 

 

 

Содержание

Введение 2

1. Теоретические основы 2

2. Методика работы 6

       2.1. Сбор информации 6

       2.2. Взаимодействие с компьютером 9

3. Код программы 12

4. Анализ результатов 28

Заключение 30

Список  литературы 31

Введение

Целью данной работы является проектирование и реализация устройства, способного осуществлять сбор и накапливание информации, передаваемой по последовательной линии с неизвестной скоростью.

1. Теоретические основы работы

Последовательные  интерфейсы используются для связи  двух или более устройств между  собой. Характерная черта таких  интерфейсов – использование  последовательного метода передачи цифровой информации, при котором  данные передаются последовательно  бит за битом, для чего используется всего лишь одна линия. При этом физическая реализация двустороннего обмена может  осуществляться с помощью 2 – 3 проводов. Значительное (по сравнению с параллельными  интерфейсами) сокращение числа каналов  передачи и проводов позволило упростить  и удешевить приемопередающие устройства и кабельные системы. В общем, последовательные интерфейсы отличаются лучшей помехоустойчивостью [здесь  не учитывается влияние типа линий  передачи], поскольку в них исключено  взаимное влияние между линиями  данных (фактически, линия данных всего  одна, а, например, в 8-разрядном параллельном интерфейсе – 8). Сравнительная простота и низкие аппаратные требования обусловили широкое использование последовательных интерфейсов в электронике и  смежных областях. Наибольшее распространение  из них получили интерфейсы 1-Wire, I2C, SPI, CAN, RS-485, RS-232, USB, Firewire. Каждый из перечисленных интерфейсов имеет свои достоинства и недостатки, и определяемую ими область использования. В частности, первые 4 интерфейса преимущественно используются в микроконтроллерных системах, последние 4 – для связи ПК с периферийным оборудованием. Последовательный интерфейс RS-232, разработанный несколько десятков лет назад [разработка стандарта проводилась, начиная с 1960 г.] для компьютеров (в основном для связи с модемами) и являющийся «патриархом» в своем роде, до сих пор не утратил своего коммуникационного назначения. Такое долголетие (особенно с учетом преимуществ других стандартов) отчасти объясняется развитием микроконтроллерной техники, которая в настоящее время повсеместно используется в системах автоматизации, сбора и обработки различных данных, встраиваемых системах различного назначения. При этом интерфейс RS-232 оказался едва ли не единственным средством связи между микроконтроллером (МК) и ПК, аппаратно присутствующем и в первом и во втором. В ПК за реализацию интерфейса отвечает COM-порт, а практически в любом МК есть один или несколько приемопередающих модулей (УАПП/UART, УСАПП/USART, SCI и пр.), аппаратно поддерживающих RS-232. Другие причины жизнеспособности интерфейса – сравнительная простота протокола обмена, поддержка во многих средах программирования на уровне библиотечных модулей, наличие доступных утилит, предназначенных для связи ПК с помощью COM-порта. Спецификация любого интерфейса включает в себя две составляющие: аппаратную и программную (логическую). Аппаратная часть (уровни напряжений, разъемы, назначение сигналов и пр.) описывается стандартом на интерфейс, описание программной часть (правил передачи данных) называется протоколом интерфейса.

Основой устройства, работающего с последовательной линией, будет микроконтроллер AVR семейства Mega. Почему AVR? одним из существенных преимуществ AVR стало применение конвейера. В результате для AVR не существует понятия машинного цикла: большинство команд выполняется за один такт. Для сравнения отмечу, что пользующиеся большой популярностью МК семейства PIC выполняют команду за 4 такта, а классические 8051 — вообще за 12 тактов (хотя есть и современные модели x51 с машинным циклом в один такт). Огромное преимущество AVR-архитектуры — наличие 32 оперативных регистров, не совсем равноправных, но позволяющих в ряде случаев вообще не обращаться к оперативной памяти и не использовать стек (что в принципе невозможно в том же семействе x51). Еще одна особенность AVR со схемотехнической точки зрения— все выводы в них могут пребывать в трех состояниях (вход — отключено — выход) и  электрически представляют собой КМОП-структуры (т. е. имеет место симметрия выходных сигналов и высокое сопротивление для входных). В общем случае это значительно удобнее портов х51 (двустабильных и TTL-совместимых) и предполагает лучшую помехозащищенность (по крайней мере, от помех по шине "земли"). Как и все микроконтроллеры AVR фирмы «Atmel», микроконтроллеры семейства Mega являются 8-разрядными микроконтроллерами, предназначенными для встраиваемых приложений. Они изготавливаются по малопотребляющей КМОП-технологии, которая в сочетании с усовершенствованной RISC-архитектурой позволяет достичь наилучшего соотношения быстродействие/энергопотребление. Микроконтроллеры описываемого семейства являются наиболее развитыми представителями микроконтроллеров AVR. К числу особенностей микроконтроллеров AVR семейства Mega относятся:

• FLASH-память программ объемом 8…128 Кбайт (число циклов стирания/записи не менее 1000);

• оперативная  память (статическое ОЗУ) объемом 1…4 Кбайт;

• память данных на основе ЭСППЗУ (EEPROM) объемом 512 байт…4 Кбайт (число циклов стирания/записи не менее 100000);

• возможность  защиты от чтения и модификации памяти программ и данных;

• возможность  программирования непосредственно в системе через последовательные интерфейсы SPI и JTAG;

• возможность  самопрограммирования;

• возможность  внутрисхемной отладки в соответствии со стандартом IEEE 1149.1 (JTAG);

• различные  способы синхронизации: встроенный RC-генератор с внутренней или внешней времязадающей RC-цепочкой или с внешним резонатором (пьезокерамическим или кварцевым); внешний сигнал синхронизации;

• наличие нескольких режимов пониженного энергопотребления;

• наличие детектора снижения напряжения питания (brownout detector, BOD);

• возможность программного снижения частоты тактового генератора.

В микроконтроллерах AVR реализована Гарвардская архитектура, которая характеризуется раздельной памятью программ и данных, каждая из которых имеет собственные  шины доступа к ним. Такая организация  позволяет одновременно работать как  с памятью программ, так и с  памятью данных. Разделение шин доступа  позволяет использовать для каждого  типа памяти шины различной разрядности, причем способы адресации и доступа  к каждому типу памяти также различны. Из всего многообразия микроконтроллеров семейства Mega я свой выбор остановлю на ATmega8, он имеют FLASH-память программ объемом 8 Кбайт, ОЗУ объемом 1 Кбайт и EEPROM-память данных объемом 512 байт, а также максимальное количество контактов ввода/вывода, равное 23.

2. Методика работы

Задачу можно условно разделить на две: организация работы устройства по сбору информации с последовательной линии и организация взаимодействия устройства с компьютером. При этом, сбор информации с последовательной лини будет осуществляться с использованием одного из трех таймеров/счетчиков общего назначения имеющихся в ATmega8, а взаимодействие с компьютером будет реализовано посредством модуля универсального синхронно/асинхронного приемопередатчика (USART).

2.1. Сбор информации

Микроконтроллеры  семейства в зависимости от модели имеют в своем составе от двух до четырех таймеров/счетчиков общего назначения. В ATmega8 их три (T0, T1, T2). Таймер/счетчик T1 может использоваться для отсчета временных интервалов и как счетчик внешних событий. Кроме того, он может выполнять запоминание своего состояния по внешнему сигналу. Упрощенная схема 16-и разрядного таймера/счетчика представлена на рисунке ниже (рис.1).

Рис.1. Упрощенная схема 16-и разрядного таймера/счетчика.

В состав каждого таймера/счетчика входят следующие  регистры ввода/вывода:

• 16-разрядный  счетный регистр TCNT1 (TCNT3);

• 16-разрядный  регистр захвата ICR1 (ICR3);

• два  или три 16-разрядных регистра сравнения OCR1A, OCR1B, OCR1C (OCR3A, OCR3B, OCR3C);

• два  или три 8-разрядных регистра управления TCCR1A, TCCR1B, TCCR1C (TCCR3A, TCCR3B, TCCR3C).

Каждый  из 16-разрядных регистров физически  размещается в двух регистрах  ввода/вывода, названия которых получаются добавлением к названию регистра буквы «H» (старший байт) и «L» (младший  байт). Счетный регистр таймера  счетчика TCNT1, например, размещается  в регистрах TCNT1H:TCNT1L. Регистр захвата ICR1 (ICR3) входит в состав блока захвата, назначение которого — сохранение в определенный момент времени состояния таймера/счетчика в регистре захвата ICR1 (ICR3). Это действие может производиться либо по активному фронту сигнала на выводе ICP1 микроконтроллера, либо (для таймера/счетчика T1) по сигналу от аналогового компаратора. Одновременно с записью в регистр захвата устанавливается флаг ICF1 регистра TIFR и генерируется запрос на прерывание. Разрешение прерывания осуществляется установкой в «1» разряда TICIE1 регистра TIMSK. Для управления схемой захвата используются два разряда регистра TCCR1B — ICNC1 и ICES1. Разряд ICNC1 управляет схемой подавления помех. Если этот разряд сброшен в «0», схема подавления помех выключена и захват производится по первому же активному фронту на выходе мультиплексора. Если же этот разряд установлен в «1», то при появлении активного фронта производится 4 выборки с частотой, равной тактовой частоте микроконтроллера. Захват будет выполнен только в том случае, если все выборки имеют уровень, соответствующий активному фронту сигнала (лог. 1 для нарастающего и лог. 0 для спадающего). Активный фронт сигнала, т. е. фронт, по которому будет выполнено сохранение содержимого счетного регистра в регистре захвата, определяется состоянием разряда ICES1. Если этот разряд сброшен в «0», то активным является спадающий фронт. Если разряд установлен в «1», то активным является нарастающий фронт. Для захвата по сигналу с вывода ICP1, этот вывод должен быть сконфигурирован как входной (разряд регистра DDRx, соответствующий выводу, должен быть сброшен в «0»). Если же он будет сконфигурирован как выходной, захват можно будет осуществлять программно, управляя соответствующим разрядом порта. В моем случае захват будет производиться по нарастающему фронту сигнала.

2.2. Взаимодействие с компьютером

Передача  данных.

Работа  передатчика разрешается установкой в «1» разряда TXEN (TXENn) регистра UCSRB (UCSRnB). При установке разряда вывод TXD (TXDn) подключается к передатчику USART/UART и начинает функционировать как выход независимо от установок регистров управления портом. Если используется синхронный режим работы (в USART), переопределяется также функционирование вывода XCK (XCKn). Передача инициируется записью передаваемых данных в буферный регистр передатчика — регистр данных UDR. После этого данные пересылаются из регистра UDR в сдвиговый регистр передатчика. После пересылки слова данных в сдвиговый регистр, флаг UDRE (UDREn)  регистра UCSRA (UCSRnA) устанавливается в «1», что означает готовность передатчика к получению нового слова данных. В этом состоянии флаг остается до следующей записи в буфер. Одновременно с пересылкой в регистре формируется служебная информация — старт-бит, возможный бит четности (только в USART), а также один или два стоп-бита. После загрузки сдвигового регистра его содержимое начинает сдвигаться вправо и поступать на вывод TXD (TXDn). Скорость сдвига определяется настройками контроллера тактовых сигналов. При работе в синхронном режиме (только USART) изменение состояния вывода TXD (TXDn) происходит по одному из фронтов сигнала XCK (XCKn). Если разряд UCPOL (UCPOLn)  регистра UCSRC (UCSRnC) сброшен в «0», изменение состояния вывода происходит по нарастающему фронту сигнала XCK (XCKn), если же установлен в «1» — по спадающему фронту сигнала, как показано на рисунке ниже (рис.2).

Рис. 2.Изменение  состояния вывода TXD.

Если  во время передачи в регистр UDR было записано новое слово данных, то после передачи последнего стоп-бита оно пересылается в сдвиговый  регистр. Если же к моменту окончания  передачи кадра такой записи выполнено  не было, устанавливается флаг прерывания «Передача завершена» TXC (TXCn)  регистра UCSRA (UCSRnA). Сброс флага осуществляется аппаратно при входе в подпрограмму обработки соответствующего прерывания или программно, записью в этот разряд лог. 1. Выключение передатчика осуществляется сбросом разряда TXEN (TXENn) регистра UCSRB (UCSRnB). Если в момент выполнения этой команды осуществлялась передача, сброс разряда произойдет только после завершения текущей и отложенной передач, т. е. после очистки сдвигового и буферного регистров передатчика. При выключенном передатчике вывод TXD (TXDn) может использоваться как контакт ввода/вывода общего назначения.

Прием данных.

Работа  приемника разрешается установкой разряда RXEN (RXENn)  регистра UCSRB (UCSRnB). При установке разряда вывод RXD (RXDn) подключается к приемнику USART/UART и начинает функционировать как вход независимо от установок регистров управления портом. Если используется синхронный режим работы (в USART), переопределяется также функционирование вывода XCK (XCKn). Прием данных начинается сразу же после обнаружения приемником

корректного старт-бита. Каждый разряд содержимого кадра затем считывается с частотой, определяемой установками контроллера скорости передачи или тактовым сигналом XCK (XCKn). Считанные разряды данных последовательно помещаются в сдвиговый регистр приемника до обнаружения первого стоп-бита кадра. После этого содержимое сдвигового регистра пересылается в буфер приемника, из которого принятое значение может быть получено путем чтения регистра данных модуля. Для индикации состояния приемника в модулях USART/UART используется флаг прерывания «Прием завершен» RXC (RXCn)  регистра UCSRA (UCSRnA). Этот флаг устанавливается в «1» при наличии в буфере приемника непрочитанных данных. В модулях UART этот флаг сбрасывается после прочтения регистра данных, а в модулях USART — при опустошении буфера (после считывания всех находящихся в нем данных).

Выключение  приемника осуществляется сбросом  разряда RXEN (RXENn) регистра UCSRB (UCSRnB). В отличие от передатчика приемник выключается сразу же после сброса разряда, т. е. кадр, принимаемый в этот момент, теряется. В модулях USART, кроме того, при выключении приемника очищается его буфер, т. е. теряются также все непрочитанные данные. При выключенном приемнике вывод RXD (RXDn) может использоваться как контакт ввода/вывода общего назначения.

Информация о работе Анализатор последовательной линии