Автор работы: Пользователь скрыл имя, 20 Апреля 2013 в 18:28, курсовая работа
С начала 1970-х годов широко известно, что рост мощности микропроцессоров следует закону Мура, который утверждает, что число транзисторов на интегральной микросхеме удваивается каждые 18 месяцев. В конце 1990-х главным препятствием для разработки новых микропроцессоров стало тепловыделение (TDP). Некоторые авторы относят к микропроцессорам только устройства, реализованные строго на одной микросхеме. Такое определение расходится как с академическими источниками, так и с коммерческой практикой (например, варианты микропроцессоров Intel и AMD в корпусах типа SECC и подобных, такие как Pentium II, были реализованы на нескольких микросхемах).
Введение
Закон Мура и первый МК
Микроконтроллер ATtiny2313 фирмы Atmel
Структура, основные характеристики и возможности
2.2 Особенности микросхемы ATtiny2313
3 Применение микроконтроллеров
4 Программирование контроллера
5 Схема программатора
6 Программа для прошивки
Архитектура МК 8051 предполагает раздельное использование памяти программ и данных и носит название гарвардской. Обычно такую архитектуру используют для повышения быстродействия системы за счёт разделения путей доступа к памяти программ и данных, но в 8051 она была применена с целью получения памяти программ и данных, не требующих одинакового размера. Антипод гарвардской – архитектура фон Неймана – предполагает хранение программ и данных в общей памяти и наиболее характерна для микропроцессоров, ориентированных на использование в компьютерах. Примером могут служить микропроцессоры семейства х86.
Таймеры Т0, Т1 – шестнадцатиразрядные программируемые таймеры / счётчики, которые могут быть запрограммированы на выполнения целого ряда функций. Их можно использовать для точного формирования временных интервалов, подсчёта импульсов на выводах МК, формирования последовательности импульсов, тактирования приёмопередатчика последовательного канала связи. Таймеры/счётчики способны вырабатывать запросы прерываний, переключая ЦП на их обслуживание по событиям и освобождая его от необходимости периодического опроса состояния таймеров. Поскольку основное применение МК находят в системах реального времени, таймеры / счётчики являются их обязательным элементом. В некоторых модификациях число таймеров достигает 32.
Последовательный порт – канал информационного обмена МК с внешним миром. Такие каналы связи занимают минимальное число выводов кристалла, обеспечивая связь на значительные расстояния с минимальными аппаратными затратами, В 8051 реализован универсальный асинхронный последовательный приёмопередатчик (UART), поддерживающий протокол стандарта RS-232C, что обеспечивает возможность организации связи этого МК и персональным компьютером. Кроме RS-332C, популярными протоколами в мире встраиваемых систем являются RS-485, I2C (двухпроводная двунаправленная шина), SPI (последовательный периферийный трёхпроводный интерфейс), Bitbus (последовательная магистраль управления), CAN (межконтроллерный сетевой интерфейс), USВ (универсальная последовательная шина) и некоторые другие. Практически для любого типа последовательного канала сегодня можно найти МК, имеющий в своем составе соответствующий последовательный порт.
Параллельные порты ввода / вывода – также обязательная часть любого МК. Обычно их используют для связи с ближайшим окружением – датчиками и исполнительными механизмами.
Важная особенность параллельны
Система прерываний – одна из важнейших частей МК. Особенность систем реального времени заключается в том, что для них чрезвычайно важным параметром является время реакции на внешние события. Поясним на простом примере. Когда Вы производите математический расчёт на компьютере, то обычно запускаете программу, предназначенную для выполнения этих расчётов, и после того, как она загрузится в память компьютера, вводите условие задачи и ждёте результата. Время ожидания в таком случае не имеет принципиального значения (в пределах разумного, конечно) – медленная работа компьютера может раздражать, но на результате это не скажется. Система реального времени предполагает совершенно конкретную, рассчитываемую на этапе разработки скорость реакции системы управления на внешние события. Задержки сверх расчётных здесь просто недопустимы – они могут приводить к катастрофическим последствиям.
Проблемы быстрой реакции на события решаются организацией системы прерываний. Она подразумевает, что для каждого такого события разрабатывается отдельный «кусок» кода, который формирует реакцию МК на него. Этот «кусок» кода называют подпрограммой обработки запроса на прерывание (для краткости часто используют термин подпрограмма прерывания) и размещают в памяти программ по известному адресу. В момент возникновения заданного события сигнал об этом поступает на вход контроллера прерываний. Последний представляет собой устройство, устанавливающее однозначное соответствие между входным сигналом о происшедшем событии и адресом программной памяти, по которому размещена точка входа в подпрограмму обработки запроса прерывания от данного события. Контроллер прерывает выполнение ЦП текущей программы и инициирует его переход на выполнение подпрограммы обработки прерывания. Время, прошедшее с момента возникновения события до начала выполнения первой инструкции подпрограммы прерывания, называют временем реакции МК на событие. После окончания обработки ЦП автоматически возвращается к выполнению прерванной программы.
Другая функция контроллера прерываний – установка приоритетов событий. Понятие приоритет означает, что выполняемая подпрограмма прерывания может быть прервана другим событием только при условии, что оно имеет более высокий приоритет, чем текущее. В противном случае ЦП перейдет к обработке нового события после окончания обработки предыдущего. Контроллер прерываний, входящий в состав МК 8051, имеет пять входов событий: два от внешних устройств, два от таймеров и один от последовательного канала.
Обычно, когда говорят о каком-либо МК, то всегда упоминают семейство, к которому он принадлежит. К одному семейству относят изделия, имеющие одинаковое ядро, под которым понимают совокупность таких понятий, как система команд, циклограмма работы ЦП, организация памяти ++программ и памяти данных, система прерываний и базовый набор периферийных устройств. Фактически на рис. 1 представлено ядро, ставшее основой для создания сотен других модификаций семейства 8051.
Отличия между его различными представителями заключаются, в основном, в составе периферийных устройств и объёме памяти программ или данных. Поскольку диапазон задач, решаемых МК, чрезвычайно широк, их производители стараются выпустить столько модификаций, чтобы удовлетворить самые разнообразные запросы потребителей. Во многих семействах число модификаций приближается к сотне или даже превышает это значение.
Наиболее важная особенность семейства – программная совместимость на уровне двоичного кода всех входящих в него МК. Это позволяет разработчикам систем заменять одни МК семейства другими без потери наработок своего программного обеспечения. Естественно, чем большее число разновидностей входит в семейство, тем больше шансов выбрать оптимальный вариант, тем привлекательнее это семейство для разработчика. Вопрос правильного выбора семейства МК для новой разработки является стратегическим, так как проблема переноса программного обеспечения между изделиями разных семейств чрезвычайно сложна и даже использование языков высокого уровня не всегда позволяет решить её без больших потерь. К вопросу о критериях выбора мы вернемся в следующих статьях цикла.
Разработка программы – один из наиболее важных этапов в создании устройства на базе МК. Без неё он «мёртв», не реагирует на внешние воздействия и не выдаёт управляющих сигналов.
При включении питания МК немедленно начинает исполнять программу, находящуюся в подключенной к нему памяти программ (обычно это ПЗУ). Её выполнение начинается с некоторого фиксированного адреса, чаще всего нулевого. Адрес – это просто номер ячейки ПЗУ. Процесс осуществляется следующим образом: МК считывает число, хранящееся в памяти программ, и в зависимости от его значения, называемого машинным кодом, выполняет определённые действия над содержимым регистров АЛУ, памяти, портов и т.д. Например, прочитав из памяти программ число 32Н, МК «соображает», что нужно считать значение из входного порта номер 2 и поместить его в регистр-аккумулятор. Часто одного байта для описания действия МК не хватает, и тогда МК считывает из памяти дополнительные байты.
После выполнения действия МК считывает значение из следующей по порядку ячейки памяти и т.д. Совокупность байтов, описывающих одно выполняемое МК действие, называют машинной командой (инструкцией), а совокупность таких команд, которые «понимает» МК, – его системой команд или набором инструкций (Instruction Set). МК разных семейств имеют разные системы команд, то есть машинные коды у них имеют разные значения, хотя и выполняют похожие действия.
Итак, программа для МК представляет собой последовательность чисел, значения которых указывают ему, какие действия выполнять. Результатом разработки программы является компьютерный файл, содержащий эти машинные коды. С помощью программатора ПЗУ его заносят («зашивают») в память программ МК.
Каким же образом составляется эта последовательность машинных кодов – программа для МК? Неужели разработчику необходимо помнить значения машинных кодов и вручную задавать их последовательность? Первые программы для МК создавались именно так, и называлось это программированием в машинных кодах. Ясно, что такой способ разработки программ очень трудоёмок и неэффективен.
Первым шагом в облегчении процесса создания программ была компьютерная программа – так называемый транслятор с языка ассемблера. Идея состояла в том, чтобы выражать выполняемые МК действия на более понятном человеку языке и затем преобразовывать эти выражения в машинные коды. В приведённом выше примере машинной инструкции, которая считывает значение порта 2 и помещает его в аккумулятор, выполняемые действия можно условно обозначить как MOV A, P2.
Здесь слово MOV (от англ. move), называемое мнемоникой инструкции, обозначает пересылку значения, а A и P2, именуемые операндами, указывают, откуда взять значение и куда его поместить. Система подобных обозначений называется языком ассемблера. Программа, написанная на нём, обрабатывается транслятором, который преобразует конструкции языка ассемблера в машинные коды.
Программирование на ассемблере широко распространено по сей день. Трансляторы с языка ассемблера для всех популярных семейств микроконтроллеров бесплатны.
Несмотря на очевидные
преимущества программирования на ассемблере
перед программированием в
С появлением трансляторов разработка программ для МК резко упростилась. Если, например, нужно сложить в программе два числа, то теперь достаточно просто написать
a = b + c;
а транслятор преобразует это выражение в необходимую последовательность машинных команда зависимости от типов переменных a, b и c.
Использование языка высокого
уровня позволяет разработчику отвлечься
от системы команд конкретного МК
и оперировать более простыми
и понятными человеку категориями.
От разработчика требуется только знание
общей архитектуры МК, принципов
работы необходимых для решения
поставленной задачи встроенных периферийных
устройств и навыки программирования
на языке Си. Функциональное наполнение
программы реализуется с
2 Микроконтроллер ATtiny2313 фирмы Atmel
2.1 Структура, основные характеристики и возможности
Микросхема ATtiny 2313 представляет собой восьмиразрядный микроконтроллер с внутренней программируемой Flash-памятью размером 2 Кбайт.
Общие сведения:
♦ использует AVRRISC архитектуру;
♦AVR–это высокое быстродействие и специальная RISC-архитектура с низким потреблением;
♦ 120 мощных инструкций, большинство из которых выполняется за один машинный цикл;
♦ 32 восьмиразрядных регистра общего назначения;
♦ полностью статическая организация (минимальная частота может быть равна 0);
♦ до 20 миллионов операций в секунду (MIPS/Sec) при тактовой частоте 20 МГц.
Сохранение программ и данных при выключенном питании:
♦ 2 Кбайт встроенной программируемой Flash-памяти, до 10000 циклов записи/стирания;
♦ 128 байт встроенной программируемой энергонезависимой памяти данных (EEPROM);
♦ до 10000 циклов записи/стирания;
♦ 128 байт внутреннего ОЗУ (SRAM);
♦ программируемые биты защиты от чтения и записи программной памяти и EEPROM.
Периферийные устройства:
♦ один 8-разрядный таймер/счётчик
с программируемым
♦ один 16-разрядный таймер/счетчик
с программируемым
♦ четыре канала ШИМ (PWM);
♦ встроенный аналоговый компаратор;
♦ программируемый сторожевой таймер и встроенный тактовый генератор;
♦ универсальный последовательный интерфейс USI (Universal Serial Interface);
♦ полнодуплексный USART.
Особенности микроконтроллера:
♦ специальный вход debug WIRE для управления встроенной системой отладки;
♦ внутрисистемный
♦ поддержка как внешних, так и внутренних источников прерываний;
♦ три режима низкого потребления (Idle, Power-downи Standby);
♦ встроенная система аппаратного сброса при включении питания;
♦ внутренний перестраиваемый тактовый генератор;
♦ цепи ввода-вывода и корпус;
♦ 18 программируемых линий ввода-вывода;
♦ три вида корпусов;
PDIP– 20 контактов;
SOIC – 20 контактов;
QFN/MLF – 20 контактных площадок.
Напряжения питания:
♦ 1,8 – 5,5 В (для ATtiny2313V);
♦ 2,7 – 5,5 В (для ATtiny2313).
Диапазон частот тактового генератора ATtiny2313V:
♦ 0-4 МГц при напряжении 1,8-5,5 В;
♦ 0–10 МГц при напряжении 2,7-5,5 В.
Диапазон частот тактового генератора ATtiny2313:
♦ 0-10МГц при напряжении 2,7-5,5 В;
♦ 0–20 МГц при напряжении 4,5-5,5 В.
Ток потребления в активном режиме:
♦ 1 МГц, 1,8 В: 230 мкА;
♦ 32 кГц, 1,8 В: 20 мкА (с внутренним генератором).
Ток потребления в режиме низкого потребления:
♦ не более 0,1 мкА при напряжении 1,8 В.