Разработка алгоритма работы микропроцессорного устройства
AVR — самая обширная производственная линии среди других флэш-микроконтроллеров корпорации Atmel. Atmel представила первый 8-разрядный флэш-микроконтроллер в 1993 году и с тех пор непрерывно совершенствует технологию. Прогресс данной технологии наблюдался в снижении удельного энергопотребления (мА/МГц), расширения диапазона питающих напряжений (до 1.8 В) для продления ресурса батарейных систем… Читать ещё >
Разработка алгоритма работы микропроцессорного устройства (реферат, курсовая, диплом, контрольная)
- Введение
- 1. Анализ поставленной задачи
- 2. Разработка структурной схемы устройства и разработка алгоритма работы устройства
- 3. Разработка функциональной схемы устройства. Проектирование аппаратных средств
- 4. Проектирование программного обеспечения
- Заключение
- Список литературы
Современную микроэлектронику трудно представить без такой важной составляющей, как микроконтроллеры. Микроконтроллеры незаметно завоевали весь мир. В последнее время на помощь человеку пришла целая армия электронных помощников. Мы привыкли к ним и часто даже не подозреваем, что во многих таких устройствах работает микроконтроллер.
Микроконтроллерные технологии очень эффективны. Одно и то же устройство, которое раньше собиралось на традиционных элементах, будучи собрано с применением микроконтроллеров, становится проще. Оно не требует регулировки и меньше по размерам.
Кроме того, с применением микроконтроллеров появляются практически безграничные возможности по добавлению новых потребительских функций и возможностей к уже существующим устройствам. Достаточно просто поменять программу[1].
AVR — самая обширная производственная линии среди других флэш-микроконтроллеров корпорации 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 до 115 200 бит/с. Для решения данной задачи выбрана скорость равная 19 200 бит/с, исходя из следующих причин:
— при скорости близкой к 110 бит/с, устройство работало бы относительно медленно;
— при скорости близкой к максимальной скорости COM — порта (115 200 бит/с) возрастает вероятность передачи данных с большим числом ошибок, что, в свою очередь, затрудняет прием и обработку переданных данных.
Учитывая, что уровни сигналов в COM — порте колеблются в диапазоне от -15 до +15 Вольт (рис.1), то, для подключения COM — порта к микроконтроллеру, который работает с уровнями +5 Вольт, необходимо использовать преобразователь уровней. Для этих целей используется микросхема MAX232. Питание для этой микросхемы подводится от внешнего источника питания (+5В).
микропроцессорный преобразование интерфейс Рисунок 1. — Уровни COM-порта Преобразование последовательного интерфейса в параллельный интерфейс будет осуществляться на микроконтроллере ATMega8.
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;
— Скорость приема данных из компьютера, установленная в конвертере по умолчанию: 57 600 бит/с.
Стоимость данного конвертера составляет порядка (20 …30) $ США.
2. Разработка структурной схемы устройства и разработка алгоритма работы устройства
Структурная схема проектируемого устройства изображена на рис. 4. Данная схема представлена в виде трех блоков:
1) COM — порт, предназначен для соединения проектируемого устройства с COM — портом другого устройства;
2) Микроконтроллер, предназначен для преобразования интерфейсов RS-232 в IEEE 1284;
3) LPT — порт, предназначен для соединения проектируемого устройства с другим устройством, через разъем LPT — порта DB-25.
Рисунок 4. — Структурная схема устройства Для удобства анализа и оценки работы проектируемого устройства был разработан алгоритм работы данного устройства, который представлен в виде блок-схем (рис. 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 представлен в виде листинга (с комментариями), который описан ниже.
Листинг программы:
/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.9 Professional
Chip type: ATmega8
Program type: Application
Clock frequency: 8,0 MHz
Memory model: Small
External SRAM size: 0
Data Stack size: 256
*****************************************************/
#include /*Подключаемые библиотеки*/
#include
#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<
#define PARITY_ERROR (1<
#define DATA_OVERRUN (1<
#define DATA_REGISTER_EMPTY (1<
#define RX_COMPLETE (1<
// USART Receiver buffer
#define RX_BUFFER_SIZE 64 /*Константа, определяющая размен буфера приемника УСАПП*/
char rx_buffer[RX_BUFFER_SIZE]; /*Глобальная переменная*/
#if RX_BUFFER_SIZE<256 /*Выбирается тип переменных в зависимости от размера буфера*/
unsigned char rx_wr_index, rx_rd_index, rx_counter;
#else
unsigned int rx_wr_index, rx_rd_index, rx_counter;
#endif
// This flag is set on USART Receiver buffer overflow
bit rx_buffer_overflow;
// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr (void) /*Приема данных на УСАПП*/
{
char status, data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
{
rx_buffer[rx_wr_index]=data;
if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
{
rx_counter=0;
rx_buffer_overflow=1;
};
};
}
char get_char (void) /*Функция считывания данных*/
{
char data;
while (rx_counter==0);
data=rx_buffer[rx_rd_index];
if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#asm («cli») /*Объявляется общее запрещеие глобальных прерываний, по выходе из которой бит_i регистра SREG обнуляется*/
—rx_counter;
#asm («sei») /*Объявляется общее разрешение прерываний*/
return data;
}
// Standard Input/Output functions
#include
char input_byte;
void 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
PORTB=0×00; /*Регистр данных порта Б*/
DDRB=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
PORTC=0×00;
DDRC=0×00;
// 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
PORTD=0×00;
DDRD=0×06;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0×00;
TCNT0=0×00;
// 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: Off
TCCR1A=0×00; /*Регистр, А управления таймера/счетчика Т1*/
TCCR1B=0×00;
TCNT1H=0×00; /*Счетный регистр таймера/счетчика Т1, старший байт*/
TCNT1L=0×00; /*Счетный регистр таймера/счетчика Т1, младший байт*/
ICR1H=0×00; /*Регистр захвата таймера/счетчика Т1, старший байт*/
ICR1L=0×00; /*Регистр захвата таймера/счетчика Т1, младший байт*/
OCR1AH=0×00; /*Регистр, А совпадения таймера/счетчика Т1, старший байт*/
OCR1AL=0×00; /*Регистр, А совпадения таймера/счетчика Т1, младший байт*/
OCR1BH=0×00;
OCR1BL=0×00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0×00; /*Регистр состояния асинхроного режима*/
TCCR2=0×00; /*Регистр управления таймера/счетчика Т2*/
TCNT2=0×00;
OCR2=0×00;
// External Interrupt (s) initialization
// INT0: Off
// INT1: Off
MCUCR=0×00; /*Регистр управления микроконтроллера*/
// Timer (s)/Counter (s) Interrupt (s) initialization
TIMSK=0×00; /*Регистр маски прерывания от таймера счетчика*/
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: Off
// USART Mode: Asynchronous
// USART Baud Rate: 19 200
UCSRA=0×00; /*Регистр, А управления и состояния УСАПП*/
UCSRB=0×90;
UCSRC=0×86;
UBRRH=0×00; /*Регистр скорости передачи УСАПП, старший бит*/
UBRRL=0×19;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0×80; /*Регистр управления и состояния аналогового компаратора*/
SFIOR=0×00; /*Регистр специальных функций*/
// Global enable interrupts
PORTD.2=0; /*Присвоили биту 2 регистра порта D значение «0», т. е. выключение встроенного счетчика Т0*/
#asm («sei»); /*Объявляется общее разрешение прерываний*/
while (1) /*Бесконечный цикл*/
{
input_byte = get_char (); /*Вызов функции, которая считывает последовательность из 9 битов*/
PORTB = input_byte; /*Передача данных на выход, через порт Б*/
PORTD.2=1; /*Включение встроенного счетчика*/
delay_us (120); /*Вводится задержка для вывода данных*/
PORTD.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
4. Евстифеев А. В. «Микроконтроллеры AVR семейства MEGA. Руководство пользователя». — М.: Издательский дом «Додэка-XXI», 2007 — 592с.
5. Белов А. В. «Создаем устройство на микроконтроллерах». — Спбю.: Наука и техника, 2007 — 304с.
6. Гребнев В. В. «Микроконтроллеры семейства AVR фирмы Atmel». — М.: ИП РадиоСофт, 2002 — 176с.