Разработка алгоритма работы микропроцессорного устройства
Содержание
Введение
1. Анализ
поставленной задачи
. Разработка
структурной схемы устройства и разработка алгоритма работы устройства
. Разработка
функциональной схемы устройства. Проектирование аппаратных средств
. Проектирование
программного обеспечения
Заключение
Список
литературы
Введение
Современную микроэлектронику трудно представить без такой
важной составляющей, как микроконтроллеры. Микроконтроллеры незаметно завоевали
весь мир. В последнее время на помощь человеку пришла целая армия электронных
помощников. Мы привыкли к ним и часто даже не подозреваем, что во многих таких
устройствах работает микроконтроллер.
Микроконтроллерные технологии очень эффективны. Одно и то же
устройство, которое раньше собиралось на традиционных элементах, будучи собрано
с применением микроконтроллеров, становится проще. Оно не требует регулировки и
меньше по размерам.
Кроме того, с применением микроконтроллеров появляются
практически безграничные возможности по добавлению новых потребительских
функций и возможностей к уже существующим устройствам. Достаточно просто
поменять программу[1].- самая обширная производственная линии среди других
флэш-микроконтроллеров корпорации Atmel. Atmel представила первый 8-разрядный
флэш-микроконтроллер в 1993 году и с тех пор непрерывно совершенствует
технологию. Прогресс данной технологии наблюдался в снижении удельного
энергопотребления (мА/МГц), расширения диапазона питающих напряжений (до 1.8 В)
для продления ресурса батарейных систем, увеличении быстродействия до 16 млн.
операций в секунду, встройкой реально-временных эмуляторов и отладчиков,
реализации функции самопрограммирования, совершенствовании и расширении
количества периферийных модулей, встройке специализированных устройств
(радиочастотный передатчик, USB-контроллер, драйвер ЖКИ, программируемая
логика, контроллер DVD, устройства защиты данных) и др.
Успех AVR-микроконтроллеров объясняется возможностью простого
выполнения проекта с достижением необходимого результата в кратчайшие сроки,
чему способствует доступность большого числа инструментальных средств
проектирования, поставляемых, как непосредственно корпорацией Atmel, так и
сторонними производителями. Ведущие сторонние производители выпускают полный
спектр компиляторов, программаторов, ассемблеров, отладчиков, разъемов и
адаптеров. Отличительной чертой инструментальных средств от Atmel является их
невысокая стоимость.
Другой особенностью AVR-микроконтроллеров, которая
способствовала их популяризации, это использование RISC-архитектуры, которая
характеризуются мощным набором инструкций, большинство которых выполняются за
один машинный цикл. Это означает, что при равной частоте тактового генератора
они обеспечивают производительность в 12 (6) раз больше производительности
предшествующих микроконтроллеров на основе CISC-архитектуры (например, MCS51).
С другой стороны, в рамках одного приложения с заданным быстродействием,
AVR-микроконтроллер может тактироваться в 12 (6) раз меньшей тактовой частотой,
обеспечивая равное быстродействие, но при этом потребляя гораздо меньшую мощность.
Таким образом, AVR-микроконтроллеры представляют более широкие возможности по
оптимизации производительности/энергопотребления, что особенно важно при
разработке приложений с батарейным питанием. Микроконтроллеры обеспечивает
производительность до 16 млн. оп. в секунду и поддерживают флэш-память программ
различной емкости: 1… 256 кбайт. AVR-архитектура оптимизирована под язык
высокого уровня Си, а большинство представителей семейства megaAVR содержат
8-канальный 10-разрядный АЦП, а также совместимый с IEEE 1149.1 интерфейс JTAG
или debugWIRE для встроенной отладки. Кроме того, все микроконтроллеры megaAVR
с флэш-памятью емкостью 16 кбайт и более могут программироваться через
интерфейс JTAG[4].
1. Анализ поставленной задачи
В данной курсовой работе решается задача по проектированию
микропроцессорного устройства, которое преобразует интерфейс RS-232(COM - порт)
в IEEE 1284(LPT - порт). Скорость передачи данных определяется интерфейсом
RS-232, т.е. должна лежать в пределах от 110 до 115200 бит/с. Для решения
данной задачи выбрана скорость равная 19200 бит/с, исходя из следующих причин:
- при скорости близкой к 110 бит/с, устройство
работало бы относительно медленно;
- при скорости близкой к максимальной
скорости COM - порта(115200 бит/с) возрастает вероятность передачи данных с
большим числом ошибок, что, в свою очередь, затрудняет прием и обработку
переданных данных.
Учитывая, что уровни сигналов в COM - порте колеблются в
диапазоне от -15 до +15 Вольт(рис.1), то, для подключения COM - порта к микроконтроллеру,
который работает с уровнями +5 Вольт, необходимо использовать преобразователь
уровней. Для этих целей используется микросхема MAX232. Питание для этой
микросхемы подводится от внешнего источника питания (+5В).
микропроцессорный преобразование интерфейс
Рисунок 1. - Уровни COM-порта
Преобразование последовательного интерфейса в параллельный
интерфейс будет осуществляться на микроконтроллере ATMega8. - 8-разрядный КМОП
микроконтроллер, основанный на архитектуре Atmel AVR. Контроллер выполняет
большинство инструкций за 1 такт, поэтому вычислительная мощность контроллера
равна 1MIPS на 1 МГц. Микроконтроллер имеет RISC-архитектуру, но формат команды
двухоперандный, за один такт может быть обращение только к двум регистрам.
Контроллер содержит 32 регистра, которые могут равноправно использоваться в
арифметических операциях.
Основные аппаратные характеристики микроконтроллера:
- 8 Кбт флеш-памяти команд;
- 512 байт электрически программируемой
памяти;
- 1 Кбайт статической памяти;
- 23 линии ввода/вывода общего назначения;
- 32 РОНа;
- три многоцелевых таймер-счётчика с режимом
сравнения;
- поддержка внутренних и внешних прерываний;
- универсальный асинхронный адаптер;
- байт-ориентированный двухпроводной последовательный
интерфейс;
- 6/8 канальный АЦП с точностью 8 и 10
двоичных разрядов;
- сторожевой таймер;
- последовательный порт SPI;
- расширенные режимы управления
энергопотреблением.
Из микроконтроллера выходные данные передаются на LPT - порт.
Перед проектированием данного устройства, был произведен
поиск на наличие аналогичных устройств. В итоге было найдено несколько
устройств. Некоторые из них приведены далее.
Существуют зарубежные аналоги проектируемого устройство, вот
например: RS-232 to IEEE 1284 Converter (Model 2030).
Конвертер Patton 2030 RS-232/423 - IEEE-1284(рис.2)
обеспечивает двунаправленное преобразование данных между асинхронными
устройствами RS-232/423 и принтерами или другими параллельными устройствами с
интерфейсом IEEE-1284. Конвертер способен работать с любым оборудованием уровня
1 и поддерживает режимы Compatible и Nibble (в соответствии со стандартом
IEEE-1284). Высокая скорость преобразования делает модель 2030 эффективным
решением для использования с высокоскоростными лазерными принтерами для
графической печати.
Отличительные особенности данного устройства:
- Асинхронная связь со скоростью до 115.2 Кбит/с;
- Поддержка 2 режимов IEEE-1284 - compatible
и nibble (переключатель);
- ESD-защита до 10 кВ на последовательном
порту;
- Не требуется источник питания (питание -
от любого из интерфейсов);
- Индикаторы питания и данных;
- Непосредственное подключение к порту;
- Компактный корпус.
Рисунок 2. - Внешний вид устройства Patton 2030
Стоимость данного конвертера составляет порядка (40 …45) $
США.
Конвертер RS-232 в Centronics(IEEE 1284)(рис.3) Российского
производства.
Данное изделие предназначено в первую очередь для организации
печати из карманных компьютеров, оснащенных операционной системой Windows CE
2.0 (например, CASSIOPEIA), непосредственно на любой тип принтера, имеющего
вход Centronics (IEEE-1284).
Рисунок 3. - Внешний вид конвертера RS-232 в Centronics(IEEE
1284)
Проблема состоит в том, что карманный компьютер имеет только
COM-порт, соответствующий стандарту RS-232, и инфракрасный порт, в то время как
подавляющее большинство принтеров имеет только параллельный порт,
соответствующий стандарту CENTRONICS. Конвертер осуществляет преобразование из последовательного
формата данных, получаемых из карманного компьютера (RS-232) в формат данных,
которые может принять принтер (CENTRONICS).
Технические характеристики конвертер RS-232 в Centronics(IEEE
1284):
- Микроконтроллер: ATMEL
AT90S2313;
- Ток, потребляемый из последовательного
порта, не более: 5 мА;
- Входной интерфейс: RS-232;
- Выходной интерфейс CENTRONICS
(IEEE-1284);
- Управление потоком данных RS-232 Xon/Xoff
(Software);
- Старт. бит RS-232: 1;
- Стоп. бит RS-232: 1;
- Длина байта RS-232: 8;
- Скорость приема данных из компьютера,
установленная в конвертере по умолчанию: 57600
бит/с.
Стоимость данного конвертера составляет порядка (20 …30) $
США.
2. Разработка структурной схемы устройства и
разработка алгоритма работы устройства
Структурная схема проектируемого устройства изображена на
рис.4. Данная схема представлена в виде трех блоков:
) COM - порт, предназначен для соединения проектируемого
устройства с COM - портом другого устройства;
2) Микроконтроллер, предназначен для преобразования
интерфейсов RS-232 в IEEE 1284;
) LPT - порт, предназначен для соединения
проектируемого устройства с другим устройством, через разъем LPT - порта DB-25.
Для удобства анализа и оценки работы проектируемого
устройства был разработан алгоритм работы данного устройства, который
представлен в виде блок-схем(рис.5 и рис.6).
Рисунок 5. - Блок-схема алгоритма работы проектируемого
устройства
Рисунок 6. - Блок-схема вызываемой функции get_char()
3. Разработка функциональной схемы устройства.
Проектирование аппаратных средств
Функциональная схема преобразователя интерфейсов RS-232 в
IEEE 1284 представлена на рисунке 7.
Рисунок 7. - Функциональная схема устройства
Передатчик(COM-порт) представлен в виде разъема(рис.8),
который непосредственно подключается к COM-порту ведущего устройства.
Рисунок 8. - Внешний вид COM-порта
Преобразователь уровней выполнен на микросхеме MAX232(рис. 9)
Рисунок 9. - Преобразователь уровней последовательного
интерфейса MAX232
Микроконтроллер представлен микросхемой ATMega8 (рис.10).
Основные особенности:
- Полный дуплекс;
- Асинхронные и синхронные операции;
- Делитель частоты высокого разрешения;
- Частота синхронизации от задатчика или от
приёмника;
- Поддержка символов от 5 до 9 бит, 1 и 2
стоп-бит;
- Проверка ошибок передачи;
- генерация 3-х прерываний.
- Форматы фреймов данных совместимы со
стандартом RS-232.
- Скорости передачи данных составляют от 1.2
кБит/с до 115.2 кБит/с, но может достигать в режиме удвоения 230.4 кБит/с.
- Двухпроводной последовательный интерфейс -
I2C.
- Стандартный промышленный интерфейс;
- Режимы задатчика и приёмника;
- Режимы операций - приёмник и передатчик;
- 7-разрядное пространство адресов шины;
- Поддержка мультизадатчиков шины;
- Скорость пердачи данных до 400 кГц;
- Полностью программируемый адрес на шине.
Рисунок 10. - Микроконтроллер ATMega8
Приемник(LPT-порт) представлен в виде разъема (рис. 11),
который непосредственно подключается к LPT-порту ведомого устройства.
Рисунок 11. - Внешний вид LPT-порта(DB-25)
Адаптер параллельного интерфейса представляет собой набор
регистров, расположенных в пространстве ввода/вывода. Регистры порта адресуются
относительно базового адреса порта, стандартными значениями которого являются
386h, 378h и 278h. Порт имеет внешнюю 8-битную шину данных, 5-битную шину
сигналов состояния и 4-битную шину управляющих сигналов.
4. Проектирование программного обеспечения
Код программы для микроконтроллера ATMega8 представлен в виде
листинга (с комментариями), который описан ниже.
Листинг программы:
/*****************************************************program
was produced by theV1.25.9 Professional
type: ATmega8type: Applicationfrequency: 8,000000 MHzmodel:
SmallSRAM size: 0Stack size: 256
*****************************************************/
#include <mega8.h> /*Подключаемые библиотеки*/
#include <delay.h>
#define RXB8 1 /*Вводимые константы*/
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7
#define FRAMING_ERROR (1<<FE)
#define PARITY_ERROR (1<<UPE)
#define DATA_OVERRUN (1<<OVR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
#define RX_COMPLETE (1<<RXC)
// USART Receiver buffer
#define RX_BUFFER_SIZE 64 /*Константа, определяющая размен
буфера приемника УСАПП*/rx_buffer[RX_BUFFER_SIZE]; /*Глобальная переменная*/
#if RX_BUFFER_SIZE<256 /*Выбирается тип переменных в
зависимости от размера буфера*/char rx_wr_index,rx_rd_index,rx_counter;
#elseint rx_wr_index,rx_rd_index,rx_counter;
#endif
// This flag is set on USART Receiver buffer overflow
rx_buffer_overflow;
// USART Receiver interrupt service routine [USART_RXC] void
usart_rx_isr(void) /*Приема данных на УСАПП*/
{status,data;=UCSRA;=UDR;((status & (FRAMING_ERROR |
PARITY_ERROR | DATA_OVERRUN))==0)
{_buffer[rx_wr_index]=data;(++rx_wr_index == RX_BUFFER_SIZE)
rx_wr_index=0;(++rx_counter == RX_BUFFER_SIZE)
{_counter=0;_buffer_overflow=1;
};
};
}get_char(void) /*Функция считывания данных*/
#asm("cli") /*Объявляется общее запрещеие
глобальных прерываний, по выходе из которой бит_i регистра SREG обнуляется*/
-rx_counter;
#asm("sei") /*Объявляется общее разрешение
прерываний*/data;
}
// Standard Input/Output functions
#include <stdio.h> input_byte;main(void)
{
/*Производится инициализация портов*/
// Input/Output Ports initialization
// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out
Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0
State1=0 State0=0 =0x00; /*Регистр данных порта Б*/=0xFF; /*Регтстр направления
данных порта Б*/
// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T
State0=T =0x00;=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=Out
Func1=Out Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=0
State1=0 State0=T =0x00;=0x06;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped=0x00;=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: OffA=0x00; /*Регистр А
управления таймера/счетчика Т1*/B=0x00;H=0x00; /*Счетный регистр
таймера/счетчика Т1, старший байт*/L=0x00; /*Счетный регистр таймера/счетчика
Т1, младший байт*/H=0x00; /*Регистр захвата таймера/счетчика Т1, старший
байт*/L=0x00; /*Регистр захвата таймера/счетчика Т1, младший байт*/AH=0x00;
/*Регистр А совпадения таймера/счетчика Т1, старший байт*/AL=0x00; /*Регистр А
совпадения таймера/счетчика Т1, младший байт*/BH=0x00;BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected=0x00; /*Регистр состояния
асинхроного режима*/=0x00; /*Регистр управления таймера/счетчика
Т2*/=0x00;=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off=0x00; /*Регистр управления микроконтроллера*/
// Timer(s)/Counter(s) Interrupt(s) initialization=0x00;
/*Регистр маски прерывания от таймера счетчика*/
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: Off
// USART Mode: Asynchronous
// USART Baud Rate: 19200=0x00; /*Регистр А управления и
состояния УСАПП*/=0x90;=0x86;=0x00; /*Регистр скорости передачи УСАПП, старший
бит*/=0x19;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1:
Off=0x80; /*Регистр управления и состояния аналогового компаратора*/=0x00;
/*Регистр специальных функций*/
// Global enable interrupts.2=0; /*Присвоили биту 2 регистра
порта D значение "0", т.е. выключение встроенного счетчика Т0*/
#asm("sei"); /*Объявляется общее разрешение
прерываний*/ (1) /*Бесконечный цикл*/
{_byte = get_char(); /*Вызов функции, которая считывает
последовательность из 9 битов*/= input_byte; /*Передача данных на выход, через
порт Б*/.2=1; /*Включение встроенного счетчика*/_us(120); /*Вводится задержка
для вывода данных*/.2=0; /*Выключение встроенного счетчика*/
};
}
Заключение
В ходе выполнения данной курсовой работы было разработано
микропроцессорное устройство преобразования интерфейсов из RS-232 в IEEE 1284.
Так же были рассмотрены аналоги проектируемого устройства.
В процессе выполнения закреплены знания по основам работы
микроконтроллеров как в теории так и на практике.
Разработанное устройство может применяться для преобразования
интерфейсов при передачи данных из устройства поддерживающего RS-232 и
соответственно имеющее разъем COM-порта, в устройство, поддерживающего IEEE
1284 и содержащего разъем LPT-порта.
Симуляция спроектированного устройства осуществлялась с
помощью программного обеспечения Proteus 7.2 SP6 Proffesional.
Список литературы
1. Ю.А.
Шпак «Программирование на языке С для AVR и PIC микроконтроллеров». - К.:
«МК-Пресс», 2006 - 400 с.
2. www.avr123.nm.ru
3. www.gaw.ru/html.cgi/txt/ic/Atmel/micros/avr/atmega8.htm
. Евстифеев
А.В. «Микроконтроллеры AVR семейства MEGA. Руководство пользователя». - М.:
Издательский дом «Додэка-XXI», 2007 - 592с.
. Белов
А.В. «Создаем устройство на микроконтроллерах». - Спбю.: Наука и техника, 2007
- 304с.
. Гребнев
В.В. «Микроконтроллеры семейства AVR фирмы Atmel». - М.: ИП РадиоСофт, 2002 -
176с.