Реферат
Пояснительная записка: 47 с., 30 рис., 4 табл., 6 ссыл.,приложения.
Цель работы – Проектирование программно-управляемого генераторапачек прямоугольных импульсов на микроконтроллере.
Метод исследования – моделирование работы устройства с помощьюпрограммного пакета Visual Micro Lab.
Генератор пачек прямоугольных импульсов реализован на микроконтроллереАТ90S2313. В память микроконтроллера записана специальная программа, по которойпроисходит работа устройства.
Результаты работы могут использоваться для разработкиаппаратуры и реальных устройств.
МИКРОКОНТРОЛЛЕР, ЦИФРО-АНАЛОГОВЫЙ ПРЕОБРАЗОВАТЕЛЬ,ТАЙМЕР-СЧЁТЧИК, АЛГОРИТМ И ПРОГРАММА ФУНКЦИО-НИРОВАНИЯ УСТРОЙСТВА.
Введение
В последние годы резко возросло употреблениецифровых устройств, которые на фоне аналоговых занимают более высокое место.Создание конкурентоспособных технических изделий в настоящее время немыслимо безприменения встроенных управляющих процессоров, придающих изделиям«интеллектуальные» свойства.
На сегодняшнее время ряд фирм, таких как Intel, Siemens, Philips, Atmel, AMD, Microchip и другие, выпускают широкий ассортимент цифровых устройств. К нимотносятся микропроцессоры, цифро-аналоговые и аналого-цифровые преобразователи,микросхемы памяти и другие устройства. Для решения ряда задач часто нецелесообразно применение универсальных микропроцессоров из-заих относительной дороговизны. Для этих целей подходят RISC-микропроцессоры, называемыемикроконтроллерами. Это те же микропроцессоры, но имеющие более узкую направленность,т.е. для решения определённого ряда задач, а следовательно и низкую цену. Современныемикроконтроллеры имеют расширенную гарвардскую архитектуру, достаточное быстродействие,возможность простого электрического перепрограммирования. Их используют для построенияустройств безопасности, дистанционного управления объектами, электронных игр, домашнейавтоматики, в приборах автомобильной электроники, периферийном оборудовании персональныхЭВМ, в автоматическом промышленном оборудовании, медицинских приборах и т. п. Вряде случаев к микроконтроллерам предъявляются серьезные требования в части производительности,ограничения потребляемой мощности, низкого электромагнитного излучения и т. д.
Поэтому сейчас разработкацифровых устройств является очень важной задачей современной техники. Устройствана микроконтроллерах в этом плане занимают одно из первых мест.
1. Обзор аналогичныхустройств
Для установки цифровых устройств в исходное состояние привключении питания можно применить простейшую RC цепь по схеме на рис. 1.1, а,формирующую импульс сброса положительной полярности. Для формирования короткогоимпульса положительной полярности при изменении уровня входного сигнала снулевого на единичный служит схема, приведенная на рис. 1.1, б.
/>Рис. 1.1,(а, б) – Устройстваподавления дребезга контактов (а – схема для установки цифровых устройств висходное состояние, б – схема формирующая импульс положительной полярности)
На рис. 1.2, а — рис. 1.2, б приведены схемы подавлениядребезга контактов, применяемые в устройствах выполненных на КМОП микросхемах.Первая из них формирует короткий импульс отрицательной полярности длительностьюоколо 0,7 мкс на уровне 0,5 В в момент первого замыкания контактов кнопки. Приэтом конденсатор С1 быстро заряжается через резистор R2, и дальнейший дребезгконтактов не влияет на выходное напряжение, так как разряжается он черезрезистор R1 большого сопротивления. Вторая используется, когда необходимополучить выходной импульс длительностью, равной продолжительности нажатия накнопку. Колебания напряжения на резисторе R1, здесь сглаживает цепь R2,C1,резистор R1 служит для быстрой разрядки конденсатора C1.
/> />
а) б)
Рис 1.2.(а, б)– Схемы подавления дребезга контактов (а – схемаформирования импульса отрицательной полярности, б – схема формирования импульсаположительной полярности)
1.1 Фильтры
Устройство задержки импульсов изображенное на рис. 1.3, атакже может использоваться для подавления дребезга. Время задержки фронтов испадов импульсов здесь составляет 0,7R1C1. Если длительность импульсов меньшеэтого значения, они через это устройство не пройдут. Вариант устройства посхеме на рис. 1.3, б позволяет отдельно регулировать задержку фронта (резисторомR1) и спада (R2) импульсов.
/> />
а) б)
Рис. 1.3.(а, б) – Устройство задержки импульсов (а –устройство задержки импульсов, б – устройство задержки фронта)
1.2 Одновибраторы
Схема простейшего одновибратора, выполненного на ТТЛмикросхеме приведена на рис. 1.4.1. Он запускается импульсом отрицательнойполярности при нажатии на кнопку SB1 и формирует импульс длительностью около0,5 мс отрицательной полярности.
/>
Рис. 1.4.1 – Схема простейшего одновибратора
/>
Рис. 1.4.2 – Схема одновибратора на D-триггере
На рис. 1.4.2 приведена схема одновибратора на D-триггереКМОП микросхемы. Он запускается или коротким им пульсом по входу S, илиположительным перепадом по входу С. Уровень 1 появляющийся при этом на прямомвы ходе триггера (выход 1) начинает заряжать конденсатор С1 через резистор R1.Когда напряжение на конденсаторе достигает порогового значения для входа R,триггер переключается в исходное состояние Диод VD1 ускоряет разрядкуконденсатора и возвращение устройства в исходное состояние (во многих случаяхон может быть исключен) Длительность импульса одновибратора определяют по тойже формуле, что и для дифференцирующей цепи фильтра. Так например при С=100мкфи R=1М, длительность импульса будет около 80С, при С=100мкф и R=390К — 40С, приС=10мкф и R=560К — 5С, при С=0,68мкф и R=2,7М — 1.5С. Для частоты 2кГц можновыбрать С=,015мкф и R=11К, для частоты 450Гц — С=0,022 и R=11К, для частоты 2Гцподойдет С=0,15мкф и R=1М.
Одновибратор, выполненный по схеме, приведенной на рис. 1.4.3, а,работает следующим образом: в исходном состоянии устройства на выходе счетчикаDD2 присутствует напряжение высокого уровня, запрещающее работу генератора,собранного на элементах ИЛИ-НЕ (DD1.1. DD1.2) микросхемы DD1. При импульсевысокого уровня на входе счетчик DD2 обнуляется — на его выходе появляетсянапряжение низкого уровня, разрешающее работу генератора. После того, каксчетчик отсчитает 213 импульсов, на его выходе появится напряжение высокогоуровня, запрещающее работу генератора. Таким образом, по фронту импульса навходе запуска на выходе устройства формируется импульс низкого уровнядлительностью в 213 импульсов задающего генератора. При этом на выходе 212(вывод 2) счетчика формируется импульс высокого уровня вдвое меньшейдлительности, заканчивающийся одновременно с основным низкого уровня, на выходе211 (вывод 2)—два импульса и т.д. рис. 1.4.3, б. Поскольку формированиевыходного импульса всегда начинается из одного и того же состояния задающегогенератора, то исключается случайная погрешность длительности импульса,связанная с неопределенностью фазы генератора.
/> />
а) б)
/> />
в) г)
/>
д)
Рис. 1.4.3,(а, б, в, г, д) – Схемы одновибраторов
Аналогичный одновибратор можно собрать на одной микросхемеК176ИЕ5, К176ИЕ12или К176ИЕ18. Вариант одновибратора собранного на микросхемеК176ИЕ5 (рис. 1.4.3, г) работает так же, как описанный выше, но его генераторсобран на инверторах, предназначенных для кварцевого генератора микросхемы. Длязапрета его работы напряжение высокого уровня с выхода 15 (вывод 5) микросхемыподается на вход цепи инверторов генератора через диод VD 1. При подаче свыхода 15 на вход запуска импульса низкого уровня диод VD1 закрывается и немешает нормальной работе генератора.
Частота импульсов в схемах на рис. 1.4.3, г, рис. 1.4.3, в присопротивлении резистора R2 более 20К, обратно пропорциональна произведениюR1C1, при этом коэффициент пропорциональности зависит от образца микросхемы.Типичное значение частоты можно определить по формуле f=2/C1, где f – вмегагерцах, C1 – в пикофарадах.
Длительность импульса, формируемого таким одновибратором,соответствует 215 периода задающего генератора и, как и в описанном вышеустройстве, на предпоследнем выходе 14 (вывод 4) счетчика формируется импульсвысокого уровня вдвое меньшей длительности, а на выходе 9 (вывод 1) — пачка из32 импульсов.
Следует отметить, что при построении одновибратора намикросхеме К176ИЕ5 случайная погрешность длительности формируемого импульсасоставляла бы 1/32 от его длительности, так как на младшие девять разрядовсчетчика импульс обнуления не поступает. В этом же варианте одновибратора вмомент окончания формирования импульса все триггеры, кроме последнего,устанавливаются в нулевое состояние, поэтому формирование очередного импульсаначинается из нулевого состояния всех триггеров счетчика.
Схема варианта одновибратора на микросхеме К176ИЕ12, илианалогичной ей К176ИЕ18, приведена на рис. 1.4.3, в. Длительность формируемогоимпульса составляет 39х32768 = 1 277 952 периода импульсов генератора,поскольку сигнал высокого уровня на выходе М (вывод 10) появляется спустя 39 спосле обнуления счетчика.
При необходимости кварцевой стабилизации длительностиформируемых импульсов одновибратор следует строить по схеме на рис. 1.4.3, д(включать кварцевый генератор так же, как RC-генератор, нельзя). К сожалению,для одновибратора такого варианта характерна случайная погрешность длительностиимпульса, соответствующая периоду кварцевого генератора. В случае использованияв таком одновибраторе микросхемы К176ИЕ5, К176ИЕ12 или К176ИЕ18 сигнал с выходаэлемента DD1.2 следует подавать на ее вход Z.
Описанным здесь одновибраторам, присущ недостаток: привключении питания они формируют на выходе импульс неопределенной длительности,однако не превышающий длительности импульса, на который он рассчитан. Если жедлительность запускающего импульса не превышает половины периода задающегогенератора, то пусковая дифференцирующая цепь не нужна. Одновибраторам присущетакже свойство перезапуска, аналогичное микросхемным одновибраторам К155АГЗ,К555АГЗ, КР1561АГ1: если во время формирования выходного импульса появляетсяочередной запускающий, отсчет длительности формируемого импульса начнетсязаново от последнего запускающего. При отсутствии специализированных микросхемК155АГ1, К155АГЗ одновибратор можно собрать на основе триггера микросхемыК155ТМ2. Здесь по фронту входного сигнала, формируется короткий положительныйимпульс, как только напряжение на входе R триггера снизится до уровня лог.нуля, формирование импульса прекратится и триггер переключится в нулевоесостояние ожидая прихода следующего импульса.
/>
а) б)
Рис. 1.4.4,(а, б) – Схемы одновибраторов (а – К555ТМ2 сэлементом DD2.1, б – К555ТМ2 с элементом DD2.2)
Микросхема КР1561АГ1 содержит два одновибратора. Каждый изних имеет входы для запуска A и B, сброса R, выводы C и RC для подключения времязадающих цепей, прямой иинверсный выходы.
/>
Рис 1.4.5 – Микросхема КР1561АГ1
Обязательное условие запуска — присутствие уровня 1 на входеR. Запуск происходит по фронту положительного импульса на входе A при уровне 1 навходе Bили по фронту отрицательного импульса на входе В при уровне 0 на входе А.Следовательно, входыA и B служат прямым и инверсным входами запуска, включенными поИЛИ, в отличие от входов запуска, собранных по И, одновибраторов в микросхемахК155АГЗ и К555АГЗ. Подача уровня 0 на вход R запрещает запуск одновибратора ипрекращает формирование импульса, если запуск уже произошел.
Рекомендуемое сопротивление времязадающего резистора — неменее 1 кОм. Его максимальное сопротивление ограничено лишь током утечкивремязадающего конденсатора и монтажа и достигает десятков мегаом. Емкостьвремязадающих конденсаторов не ограничена. Длительность формируемого импульсаможно рассчитать по формуле Tи= (0,3…0,5)RC. При этом удобно пользоваться размерностями МОм,мкФ, с или кОм, мкФ, мс, или кОм, нф, мкс. При емкости конденсатора менее 10 нФреальная длительность импульса получается большей, чем при расчете.
Одновибраторы микросхемы КР1561АГ1 обладают способностьюповторного запуска. Если его условия повторно выполнятся во время формированиявыходного импульса, длительность последнего увеличится на интервал временимежду запускающими импульсами. Повторный запуск можно исключить, соединиввход Bс инверсным выходом одновибратора, запуская его фронтом положительного импульсана входе A,или вход Aс прямым выходом, запуская фронтом отрицательного импульса на входе B.
На двух одновибраторах микросхемы КР1561АГ1 можно собратьавтогенератор, дновибратор DD1.1 определяет длительность положительных импульсовна выходе 1, а DD 1.2 — длительность пауз между ними и, наоборот, по отношению квыходу 2.
При использовании микросхем КР1561АГ1 следуетпомнить, что они весьма легко запускаются от помех, как по цепи питания, так ипо входным цепям. Для исключения ложных запусков необходимо в непосредственнойблизости от микросхем устанавливать по цепи питания блокировочные керамическиеконденсаторы емкостью не менее 0,015 мкФ, а проводники входных и времязадающихцепей делать минимальной длины. Выводы 1 и 15 соединены с общим проводом(выводом 8) внутри корпуса микросхемы, поэтому вне корпуса их и времязадающийконденсатор подключать к общему проводу не рекомендуется.
1.3 Генераторы налогических ИМС
/>
Рис. 1.5.1 – Схема генератора, формирующего пачкиимпульсов
/>
Рис. 1.5.2 – Схема генератора, выполненного наТТЛ микросхеме
На рис. 1.5.1 изображена схема генератора,формирующего пачки импульсов с частотой повторения около 1 Гц и заполненияоколо 100 Гц, длительность пачек 0,5 с. Генератор включают подачей уровня 1 наего вход. Первый формируемый импульс возникает сразу после поступленияразрешающего сигнала. Частоту импульсов здесь можно определить по формулеf=1/2RC. Если требуется регулировка скважности импульсов то следует разделитьзарядно-разрядные цепи конденсаторов, подобно тому как это сделано в схеме на рис.1.3, б.
/> />
а) б)
Рис. 1.5.3,(а, б) – Схемы простых кварцевыхгенераторов
На рис. 1.5.2 изображена схема аналогичного генератора,выполненного на ТТЛ микросхеме. Частота заполнения здесь около 1000 Гц,длительность пачек 0,2 с. Генератор включают подачей уровня 1 на его вход.Первый формируемый импульс возникает сразу после поступления разрешающегосигнала.
Схемы простых кварцевых генераторов выполненных на ТТЛ и КМОПмикросхемах приведены на рис. 1.5.3, б и рис. 1.5.3, а соответственно. Они вполнеподходят для большинства практических устройств, однако им все же свойственнынекоторые недостатки. Во-первых, генераторы возбуждаются на частоте, значениекоторой ниже значения частоты кварцевого резонатора, что вынуждает включатьпоследовательно с кварцем подстроечный конденсатор. Во-вторых, ихтемпературно-частотная характеристика (ТЧХ) отличается от ТЧХ кварцевогорезонатора, т е. Искажается. В-третьих, частота генераторов очень зависит отнапряжения питания, кроме того, в генераторе по схеме на рис. 1.5.3, а в рядеслучаев рассеиваемая мощность на кварцевом резонаторе может превышать предельнодопустимое значение.
/>
Рис. 1.5.5 – Генератор
Генератор,схема которого приведена на рис. 1.5.5, свободен от перечисленных недостатков иимеет улучшенные технические характеристики. Его рабочая частота отличается отчастоты кварцевого резонатора не более чем в 3 • 10-7 раза (у генератора,собранного по схеме Рис. 1.5.3, — в 10 • 10-6). При изменении напряженияпитания относительно номинального на ±:10 % изменение частоты не превышает 1 •10-6(в первом варианте 10 • 10-6). На кварцевом резонаторе рассеиваетсямощность — не более 1 мВт (в первом варианте — не менее 4 мВт). Частотугенерируемого сигнала можно регулировать в пределах 10 • 10-6 относительночастоты кварца. ТЧХ генератора идентична ТЧХ кварцевого резонатора. Дляповышения температурной стабильности генератора, его можно поместить втермостат. Температура термостатирования резонатора и микросхемы — (70±1) °С.
Технические характеристики кварцевого генератора удалосьулучшить включением дополнительного резистора параллельно инвертору DD1.3. Какпоказано на рис. 1.5.5, в точке А генератора действует импульсное напряжениенепрямоугольной формы. Это по видимому связано с тем что, что у кварцевыхрезонаторов на частоте 2…30 МГц динамическое сопротивление кварца составляетединицы-десятки Ом. Поэтому это малое сопротивление оказывает влияние наформирование вершины импульса напряжения в точке А, форма которой, в своюочередь, влияет на частоту возбуждения генератора.
Инвертор DD1 3 с параллельно включенным резистором R4 предназначен дляформирования в точке А импульсов напряжения, близких по форме к прямоугольным,и уменьшения тока через кварцевый резонатор. Так как резистор R2 уменьшает коэффициентзапаса по возбуждению, то для того, чтобы компенсировать это уменьшение,применена местная положительная обратная связь через резистор R3.
Конденсатор С1 нужен для устойчивого возбуждения генераторана частоте последовательного резонанса кварца. Кроме того, он устраняет«дрожание» фронта и спада импульсов.
Резисторы R1, R4 в генераторе — С2-29-0.1 25, R2 — СП5-16ВА-0,25, R3 —МТЕ-0,125 Конденсатор С1 — КТ-1-М47. Резонатор кварцевый К1-4ИЕ-7800 кГц. 1.6 Формирователи на таймере ВИ1
Реле времени на таймере ВИ1, можно собрать по схемеприведенной на рис. 1.6.1. Выдержка времени начинается после нажатия на кнопкуSB1. При этом на выводе 3 таймера появляется напряжение, и реле К1 срабатывает,управляя необходимыми устройствами. Выдержка определяется емкостьюподключенного переключателем SA1 конденсатора С2—CN, сопротивлениемрезистора R3 и положением движкапеременного резистора R4. Если вместо резистора R3 включить фоторезистор, времявыдержки будет автоматически изменяться в обратной зависимости от интенсивностипадающего на него светового потока. Прервать выдержку времени можно нажатием накнопку SB2.
/>
Рис. 1.6.1 – Реле времени на таймере ВИ1
2. Обоснование выбранноговарианта технического решения
В данном курсовом проекте использовался микроконтроллер фирмы ATMEL, AT90S2313 так как этоэкономичный 8 битовый КМОП микроконтроллер, построенный с использованиемрасширенной RISC архитектуры AVR. Исполняя по одной команде за период тактовойчастоты, AT90S2313 имеет производительность около 1MIPS на МГц, что позволяетразработчикам создавать системы оптимальные по скорости и потребляемоймощности.
В основе ядра AVR лежит расширенная RISC архитектура, объединяющаяразвитый набор команд и 32 регистра общего назначения. Все 32 регистранепосредственно подключены к арифметико-логическому устройству (АЛУ), что даетдоступ к любым двум регистрам за один машинный цикл.
Подобная архитектура обеспечивает десятикратный выигрыш вэффективности кода по сравнению с традиционными CISC микроконтроллерами.
AT90S2313 предлагает следующие возможности: 2кБ загружаемой флэш-памяти;128 байт EEPROM; 15 линий ввода/вывода общего назначения; 32 рабочих регистра;настраиваемые таймеры/счетчики с режимом совпадения; внешние и внутренниепрерывания; программируемый универсальный последовательный порт;программируемый сторожевой таймер со встроенным генератором; SPIпоследовательный порт для загрузки программ; два выбираемых программно режиманизкого энергопотребления. Холостой режим (IdleMode) отключает ЦПУ, оставляя врабочем состоянии регистры, таймеры/счетчики, SPI порт и систему прерываний.Экономичный режим (PowerDown Mode) сохраняет содержимое регистров, но отключаетгенератор, запрещая функционирование всех встроенных устройств до внешнегопрерывания или аппаратного сброса.
Микросхемы производятся с использованием технологииэнергонезависимой памяти высокой плотности фирмы Atmel. Загружаемая флэш памятьна кристалле может быть перепрограммирована прямо в системе через последовательныйинтерфейс SPI или доступным программатором энергонезависимой памяти. Объединяя наодном кристалле усовершенствованный 8-битовый RISC процессор с загружаемойфлэш-памятью, AT90S2313 является мощным микроконтроллером, который позволяетсоздавать достаточно гибкие и эффективные по стоимости устройства.
AT90S2313 поддерживается полной системой разработки включающей всебя макроассемблер, программный отладчик/симулятор, внутрисхемный эмулятор и отладочныйкомплект.
ОПИСАНИЕ ВЫВОДОВ
VCC — вывод источника питания
GND — земля
Port B (PB7..PB0) — Порт B является 8-битовым двунаправленнымпортом ввода/вывода. Для выводов порта предусмотрены внутренние подтягивающиерезисторы (выбираются для каждого бита). Выводы PB0 и PB1 также являются положительным(AIN0) и отрицательным (AIN1) входами встроенного аналогового компаратора.Выходные буферы порта B могут поглощать ток до 20мА и непосредственно управлятьсветодиодными индикаторами. Если выводы PB0..PB7 используются как входы и извнеустанавливаются в низкое состояние, они являются источниками тока, есливключены внутренние подтягивающие резисторы.
/>
Рис. 2.1 – Цоколёвка и название выводов микроконтроллера
Port D (PD6..PD0) — порт D является 7-битовым двунаправленнымпортом с внутренними подтягивающими резисторами. Выходные буферы порта D могутпоглощать ток до 20мА. Как входы установленные в низкое состояние, выводы портаD являются источниками тока, если задействованы подтягивающие резисторы. Крометого порт D обслуживает некоторые специальные функции, которые будут описаныниже.
RESET — Вход сброса. Удержание на входе низкого уровня в течениедвух машинных циклов (если работает тактовый генератор), сбрасывает устройство.
XTAL1 — Вход инвертирующего усилителя генератора и вход внешнеготактового сигнала.
XTAL2 — Выход инвертирующего усилителя генератора.
КВАРЦЕВЫЙ ГЕНЕРАТОР
XTAL1 и XTAL2 являются входом и выходом инвертирующего усилителя,на котором можно собрать генератор тактовых импульсов. Можно использовать как кварцевые,так и керамические резонаторы. При подключении внешнего тактового сигнала выводXTAL2 остается неподключенным, а XTAL1 подключается в выходу внешнегогенератора.
/>
Рис.2.2 – Подключение кристалла
/>
Рис.2.3 – Подключение внешнего генератора
Обзор архитектуры AT90S2313
Регистровый файл быстрого доступа содержит 32 8-разрядных регистраобщего назначения, доступ к которым осуществляется за один машинный цикл.Поэтому за один машинный цикл исполняется одна операция АЛУ. Два операндавыбираются из регистрового файла, выполняется операция, результат ее записываетсяв регистровый файл — все за один машинный цикл.
Шесть из 32 регистров можно использовать как три 16-разрядныхуказателя в адресном пространстве данных, что дает возможность использоватьвысокоэффективную адресную арифметику (16-разрядные регистры X, Y и Z). Один изтрех адресных указателей (регистр Z) можно использовать для адресации таблиц впамяти программ. Это X-, Y- и Z-регистры.
/>
Рисунок 2.4 – Регистры X-, Y- и Z-
АЛУ поддерживает арифметические и логические операции cрегистрами, с константами и регистрами. Операции над отдельными регистрамитакже выполняются в АЛУ.
Кроме регистровых операций, для работы с регистровым файлом могутиспользоваться доступные режимы адресации, поскольку регистровый файл занимаетадреса $00-$1F в области данных, обращаться к ним можно как к ячейкам памяти.
Пространство ввода состоит из 64 адресов для периферийных функцийпроцессора, таких как управляющие регистры, таймеры/счетчики и другие.
Доступ к пространству ввода/вывода может осуществлятьсянепосредственно, как к ячейкам памяти расположенным после регистрового файла ($20$5F).
Процессоры AVR построены по гарвардской архитектуре с раздельнымиобластями памяти программ и данных. Доступ к памяти программ осуществляется припомощи одноуровневого буфера. Во время выполнения команды, следующая выбираетсяиз памяти программ. Подобная концепция дает возможность выполнять по однойкоманде за каждый машинный цикл. Память программ — это внутрисистемнаязагружаемая флэш-память.
При помощи команд относительных переходов и вызова подпрограммосуществляется доступ ко всему адресному пространству. Большая часть команд AVRимеет размер 16-разрядов, одно слово. Каждый адрес в памяти программ содержитодну 16- или 32-разрядную команду.
При обработке прерываний и вызове подпрограмм адрес возврата запоминаетсяв стеке. Стек размещается в памяти данных общего назначения, соответственноразмер стека ограничен только размером доступной памяти данных и ееиспользованием в программе. Все программы пользователя должны инициализироватьуказатель стека (SP) в программе выполняемой после сброса (до того каквызываются подпрограммы и разрешаются прерывания). 8-разрядный указатель стекадоступен для чтения/записи в области ввода/вывода.
Доступ к 128 байтам статического ОЗУ, регистровому файлу ирегистрам ввода/вывода осуществляется при помощи пяти доступных режимовадресации поддерживаемых архитектурой AVR.
Все пространство памяти AVR является линейным и непрерывным.
Гибкий модуль прерываний имеет собственный управляющий регистр впространстве ввода/вывода, и флаг глобального разрешения прерываний в регистресостояния. Каждому прерыванию назначен свой вектор в начальной области памятипрограмм. Различные прерывания имеют приоритет в соответствии с расположениемих векторов. По младшим адресам расположены векторы с большим приоритетом.
Кроме этого AT90S2313 имеет очень удобную в использовании системукоманд, которая приведена ниже.
Система команд AT90S2313:
/>
/>
/>
/>
/>
/>
3. Разработка принципиальной схемы устройства
Принципиальная схема генератора пачек импульсов и перечень элементов показана в приложениях 2 и 3. Она состоит из микроконтроллера АТ90S2313, схем сброса и синхронизации, блока питания, цифро-аналогового преобразователя, усилителя выходного сигнала и нагрузки.
Выбор блока питания:
Рассчитаем приблизительную потребляемую мощность:
Микроконтроллер потребляет – 3мА*5В = 15мВт; ЦАП – приблизительно 450мВт.
Согласно техническому заданию, на нагрузке в 100 Ом необходимо получить напряжение в 3,5 В. Значит, мощность рассчитаем по формуле:
/>=0,1225 Вт. Общее потребление мощности – около 0,715 Вт.
Выберем трансформатор на мощность в пределах 2 Вт. Стабилизатор построим на микросхемах КР142ЕН8А, которые рассчитаны на выходное напряжение 2,1 – 26,5 В и ток до 1,5 А.
Усилитель соберём на микросхеме TDA1013. У неё максимальный ток 1,5 А, выходная мощность 4,2 Вт. Запитаем микросхему напряжением в 10 В.
В качестве ЦАП выберем микросхему AD7224. Выбираем режим, при котором любые изменения в выходных регистрах МК сразу же отображаются на выходном сигнале. Для этого подключаем выводы CS, WR, LDAC к корпусу, чем разрешаем прямое управление ЦАП. Напряжение питания зададим в 10 В.
4. Разработка алгоритма и программы функционирования устройства
При включении устройства происходит конфигурация контроллера,потом опрашивается клавиатура и контроллер перейдет на один из режимов. Если ниодна клавиша нажата не была, включается 1 режим. Подпрограмма Режим 1 формирует1 период сигнала с требуемыми параметрами (пачка импульсов и время междупачками), здесь же после каждого периода вызывается подпрограмма опросаклавиатуры. То есть контроллер зациклен на функциях формирования пачкиимпульсов, паузы между пачками и опросом клавиатуры.
Алгоритм подпрограммы приведен в приложении 4.
Текст программы приведён в приложении 1.
5. Анализ временных соотношенийи оценка погрешностей
Согласно техническому заданию, длительность импульса tи=10 мкс, частота следования импульсовf=5 кГц. Изменяется длительностьпачки: tп=0,2c; 0,4 c; 0,6 c. Период повторения пачек– 9 с.
Период повторения импульсов равен:
Т=1/f=200 мкс.
t0=T-tи=190 мкс – длительность паузы.
Расчитаем число импульсов в пачке:
Первый режим: N=tп/T=0,2c/200мкс=1000 импульсов (250+250).
Второй режим: N=tп/T=0,4c/200мкс=2000 импульсов (500+500).
Третий режим: N=tп/T=0,3c/200мкс=3000 импульсов (750+750).
Так как мы используем 8-битный ЦАП, то им можно сформировать лишь 255 уровней выходногонапряжения, что не всегда позволяет сформировать пачку заданной длительности.Поэтому можно формировать по несколько импульсов одинаковой амплитуды для увеличениядлительности пачки.
Рассчитаем коэффициенты, вносимые в таймер-счётчик Т1 для формированиявременных интервалов. Коэффициент деления частоты = 1
Тактовая частота 8 МГц, период такта – 0,125 мкс. Количество тактов0,10мкс/0,125мкс = 80. Число вносимое в таймер-счётчик – 65535-80 = 65455 ->$FFAF.
Количество тактов для интервалов между импульсами t0 = 190 мкс/0,125 мкс =1600. Число вносимое в таймер-счётчик: 65535-1600 = 63935 -> $F9BF.
Рассчитаем длительности интервалов между пачками.
Первый режим.
Длительность паузы: Т-tп = 9-0,2 = 8,8 с. Зададимкоэффициент деления частоты равный 1024. f = 8 МГц/1024 = 7812,5 Гц.Отсюда Т = 1/f= 128 мкс.
Для формирования паузы: 8,8 с/128 мкс = 68750.
В таймер-счётчик сначала запишем $0, так как 68750>65535,а затем внесём в него: 65535-(68750-65535)=62320 => $F370.
Рассчитаем второй режим:
Длительность паузы: Т-tп = 9-0,4 = 8,6 с. Зададимкоэффициент деления частоты равный 1024. Для формирования паузы: 8,6 с/128 мкс= 67186. В таймер-счётчик сначала запишем $0, так как 67186>65535, а затемвнесём в него: 65535-(67186-65535)=63882 => $F98А.
Рассчитаем третий режим:
Длительность паузы: Т-tп = 9-0,6 = 8,4 с. Зададимкоэффициент деления частоты равный 1024. Для формирования паузы: 8,4 с/128 мкс= 65625. В таймер-счётчик сначала запишем $0, так как 65625>65535, а затемвнесём в него: 65535-(65625-65535)=65445 => $FFA5.
Эти коэффициенты рассчитаны без учёта времени выполнения программы.После моделирования величину вводимых чисел в таймер-счётчик необходимо подкорректировать.
Проведем моделирование и отладку программы c помощью VMLab. Причем примоделировании используем макромодель 8 битного ЦАП, что позволяет наблюдатьтребуемые импульсы, измерять их длительность и амплитуду.
После моделирования получаем такие параметры импульса: По программе Требуемая Ошибка Длительность единицы 13мкс 10 мкс 3 мкс Длительность нуля 193 мкс 190 мкс 3 мкс
Проведем коррекцию временных интервалов:
Количество тактов для τи=(10-3) мкс/0,125мкс=56; Числовносимое в таймер счетчик 65535-56= 65479 => $FFC7
Количество тактов для τ0=(190-3) мкс/0,125мкс=1496; Числовносимое в таймер счетчик 65535-1456 = 64039 => $FA27
Результаты моделирования после коррекции.
/>
Рисунок 5.1 – Длительность импульса
/>
Рисунок 5.3 – Пачка импульсов длительностью 0,2с с линейным закономнарастания и спада уровня сигнала
/>
Рисунок 5.4 – Пачка импульсов длительностью 0,4с с линейным закономнарастания и спада уровня сигнала.
/>
Рисунок 5.5 – Пачка импульсов длительностью 0,6с с линейным закономнарастания и спада уровня сигнала.
Результаты работы генератора пачек импульсов былипромоделированы с помощью пакета Visual Micro Lab. Программа показала практическиидентичность полученных результатов и условий технического задания. Поэтому можносчитать, что погрешности измерений нет. В реальном устройстве точность формированияпачек импульсов не хуже 0,5 % от необходимого значения. Окончательные регулировкипроизводятся в собранном генераторе.
генератор импульс алгоритм
ЗаключениеВ данной курсовой работе был спроектирован программно-управляемыйгенератор пачек прямоугольных импульсов с треугольной огибающей. Он собран на микроконтроллереАТ90S2313 фирмы Atmel, который прошит специальной программой. Генератор управляетсяпосредством нажатия одной из трёх кнопок, которая переводит его в заданныйрежим работы. Работа генератора была промоделирована средствами ЭВМ. Получены пачкиимпульсов заданной формы и длительности 0,2с; 0,4 с; 0,6 с.
Перечень ссылок
1. Голубцов М.С.Микроконтроллеры AVR: от простого к сложному. Мос-ква, Солон-Пресс, 2003г.
2. Волков С. Генераторы прямоугольныхимпульсов на МОП-элементах. Москва, Энергоиздат, 1981г.
3. Баранов В.Н. Применение микроконтроллеровAVR:схеммы, алгорит-мы, программы. Москва, Издательский дом «Додэка-ХХI», 2004г.
4. Журнал Радио № 3, 1994г.
5. radiokot.ru
6. forum.cxem.net
7. RLBN.ru
8. avr123.nm.ru
9. costya-radio.narod.ru
10. radioradar.net
Приложение1
Текст программы
.include «C:\PROGRA~1\VMLAB\include\2313def.inc»
; Тактовая частота 4 МГц
; Делитель таймера0 = 8, для длительности 10 мкс — 5 значенийдо переполнения
.EQUTCCR0_INIT = 0b10; делитель таймера CK/8
.EQUTCNT0_WAIT10 = 0xFB; 10 мкс до прерывания с учетомнакладных расходов
.EQUTCNT0_WAIT190 = 0xA2; 190 мкс до прерывания с учетомнакладных расходов
; Делитель таймера1 = 1024
.EQUTCCR1B_INIT = 0b0101; CK/1024 без сброса после уд.сравнения
.EQUTCNT1_INIT = 0xFFF0; задержка начала пачки после старта> 0
.EQUTCNT1_START = 0x76AB; задание начального смещения для 9сек. до переполнения
.EQUN1CMP = TCNT1_START + 781; 0,2 с
.EQUN2CMP = TCNT1_START + 1563; 0,4 с
.EQUN3CMP = TCNT1_START + 2344; 0,6 с
; Настройка портов ввода выврда
.EQUDDRB_INIT = 0xFF; 8 разрядов для вывода на ЦАП
.EQUDDRD_INIT = 0b0111000; 4 входа + 3 выхода
.EQUPORTD_INIT = 0b0111111; подтягивающие резисторы длявходов и нач. уровни для выходов
; Определение клавиш
.EQUKEY_MODE1 = 0; кнопка перехода в режим 1
.EQUKEY_MODE2 = 1; кнопка перехода в режим 2
.EQUKEY_MODE3= 2; кнопка перехода в режим 3
; Регистры с константами
.DEFrc0 = r1; регистр для константы 0
.DEFrc255 = r2; регистр для константы 255
.DEFrcTCNT0_WAIT10 = r3; регистр с константой для задержки на10 мкс
.DEFrcTCNT0_WAIT190 = r4; регистр с константой для задержкина 190 мкс
.DEFrcPORTD_INIT = r5; регистр с константой для задержки на190 мкс
; Временные переменные
.DEFrt = r16; временный регистр для основной программы
.DEFrti = r17; временный регистр для прерываний
; Тукущие значения
.DEFCURKEYS = r22; тек. сост. клавиш
.DEFPREVKEYS = r23; пред. сост. клавиш
.CSEG
.ORG 0
rjmp start
.ORG OVF0addr
rjmp FIntTimer0
.ORG OC1addr
rjmp FIntTimer1OC
.ORG OVF1addr
rjmp FIntTimer1OVF
; ++++++++++++++++++++ start +++++++++++++++++++;
.ORG 0x0B
start:
; настройка стека
ldirt, LOW(RAMEND)
outspl, rt
; инициализация константных регистров
ldirt, 0
movrc0, rt; rconst0 = 0
ldirt, 255
movrc255, rt; rc255 = «1»
ldirt, TCNT0_WAIT10
movrcTCNT0_WAIT10, rt; TCNT0_WAIT10
ldirt, TCNT0_WAIT190
movrcTCNT0_WAIT190, rt; TCNT0_WAIT190
ldirt, PORTD_INIT
movrcPORTD_INIT, rt; PORTD_INIT
; настройка портов ввода-вывода
ldirt, DDRB_INIT
outDDRB, rt
ldirt, DDRD_INIT
outDDRD, rt
outPORTD, rcPORTD_INIT
; настройка таймера1
ldirt, TCCR1B_INIT
outTCCR1B, rt
; разрешение прерываний для таймеров
inrt, TIMSK
sbrrt,(1
outTIMSK, rt
; задание начального режима работы
ldirti, HIGH(TCNT1_INIT)
outTCNT1H, rti
ldirti, LOW(TCNT1_INIT)
outTCNT1L, rti
ldirt, HIGH(N1CMP)
outOCR1AH, rt
ldirt, LOW(N1CMP)
outOCR1AL, rt
; подсветка режима работы
outPORTD, rcPORTD_INIT
cbiPORTD, 3
; разрешение общих прерываний
sei
Loop:
rcall keys; опрашиваем клавиатуру в цикле
rjmpLoop
; — ;
; +++++++++++++++++++++ keys +++++++++++++++++++;
keys:
inCURKEYS, PIND; состояние клавиш
keys_10:
; проверка нажатия — клавиша 1
sbrcCURKEYS, KEY_MODE1; клавиша нажата — пропустить
rjmpkeys_19
sbrsPREVKEYS, KEY_MODE1; клавиша была сброшена — пропустить
rjmpkeys_19
; занесение констант для сравнения
ldirt, HIGH(N1CMP)
outOCR1AH, rt
ldirt, LOW(N1CMP)
outOCR1AL, rt
; подсветка режима работы
outPORTD, rcPORTD_INIT
cbiPORTD, 3
keys_19:
keys_20:
; проверка нажатия — клавиша 2
sbrcCURKEYS, KEY_MODE2; клавиша нажата — пропустить
rjmpkeys_29
sbrsPREVKEYS, KEY_MODE2; клавиша была сброшена — пропустить
rjmpkeys_29
; занесение констант для сравнения
ldirt, HIGH(N2CMP)
outOCR1AH, rt
ldirt, LOW(N2CMP)
outOCR1AL, rt
; подсветка режима работы
outPORTD, rcPORTD_INIT
cbiPORTD, 4
keys_29:
keys_30:
; проверка нажатия — клавиша 3
sbrcCURKEYS, KEY_MODE3; клавиша нажата — пропустить
rjmpkeys_39
sbrsPREVKEYS, KEY_MODE3; клавиша была сброшена — пропустить
rjmpkeys_39
; занесение констант для сравнения
ldirt, HIGH(N3CMP)
outOCR1AH, rt
ldirt, LOW(N3CMP)
outOCR1AL, rt
; подсветка режима работы
outPORTD, rcPORTD_INIT
cbiPORTD, 5
keys_39:
keys_9:
; сохранение пред. сост. клавиш
movPREVKEYS, CURKEYS
ret
; — ;
; ++++++++++++++++ FIntTimer0 ++++++++++++++++++;
FIntTimer0:
brtcFIntTimer0_5
; была «1», формируем «0»
outTCNT0, rcTCNT0_WAIT190
outPORTB, rc0
clt
rjmpFIntTimer0_9
FIntTimer0_5:
; был «0», формируем «1»
outTCNT0, rcTCNT0_WAIT10
outPORTB, rc255
set
FIntTimer0_9:
reti
; — ;
; +++++++++++++++ FIntTimer1OC +++++++++++++++++;
FIntTimer1OC:
; выключаем счетчик0
ldirti, 0
outTCCR0, rti
reti
; — ;
; +++++++++++++++ FIntTimer1OVF ++++++++++++++++ ;
FIntTimer1OVF:
; заносим в таймер начальные константы для 9 сек. допереполнения
ldirti, HIGH(TCNT1_START)
outTCNT1H, rti
ldirti, LOW(TCNT1_START)
outTCNT1L, rti
; включаем счетчик0
ldirti, TCCR0_INIT
outTCCR0, rti
outTCNT0, rcTCNT0_WAIT10
clt
reti
; — ;