Цифровой генератор аналоговых сигналов на основе микроконтроллера
Проектирование цифрового генератора аналоговых сигналов. Разработка структурной, электрической и функциональной схемы устройства, блок-схемы опроса кнопок и работы генератора. Схема делителя с выходом в виде напряжения на инверсной резистивной матрице.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 05.08.2011 |
Размер файла | 268,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Курсовая работа
по дисциплине
"Узлы и элементы медицинской техники"
на тему:
«Цифровой генератор аналоговых сигналов на основе микроконтроллера»
Санкт-Петербург 2009
Задание
В данном курсовом проекте необходимо разработать цифровой генератор аналоговых сигналов, со следующими характеристиками:
Форма сигналов |
Sin, Rest, Lin |
|
Напряжение источника питания |
±12 В |
|
Погрешность формирования сигналов |
не более 1% |
|
Диапазон изменения амплитуды |
1ч10 В с шагом 0.1 В |
|
Диапазон изменения частоты |
0ч100 кГц с шагом 1 Гц |
Питание данного прибора осуществляется от батареек. В соответствии с исходными данными необходимо разработать функциональную и принципиальную электрическую схемы, алгоритм и программу работы электронного генератора.
Введение
В последние годы получили развитие системы прямого цифрового синтеза сигналов, обеспечивающие высокую точность задания частоты и начальной фазы сигналов, а также высокую верность воспроизведения их формы. Более того, эти системы позволяют генерировать сигналы большого многообразия форм, в том числе и форм, задаваемых пользователем. Генератор синусоидального напряжения является одним из наиболее распространенных приборов в измерительной лаборатории. Генераторы промышленного производства имеют большие габариты и вес, а к тому же, немалую стоимость. Кроме того, аналоговые генераторы обладают целым рядом недостатков: недостаточной точностью установки и стабильностью частоты и амплитуды, относительно большим коэффициентом гармоник.
Существуют цифровые методы синтеза сигнала и не только синусоидального. В связи с этим в данной курсовой работе будет разработан программный метод задания формы сигнала и изменение его некоторых параметров.
1. Разработка структурной схемы
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Условные обозначения:
МК - микроконтроллер фирмы Analog devices
УВ - устройство ввода, для задания формы и параметров сигнала
ПК - блок синхронизации интерфейса (БСИ): последовательный интерфейс связи с ПК необходим для передачи полученных данных в персональный компьютер;
ЦАП - цифро-аналоговый преобразователь,
УМ - усилитель мощности (буферный)
ИП - источник питания всех устройств
СН - стабилизатор напряжения, который стабилизирует напряжения до необходимого нам уровня.
Принцип работы генератора: Управляющим элементом системы является МК, в памяти программ которого хранится программа, реализующая определенную форму сигнала на выходе, с заданной амплитудой и частотой, также в ПЗУ хранится таблица синусов.
Амплитуда, частота и форма сигнала вводятся с запрограммированных кнопок. Изменение частоты будет происходить за счёт программно реализованной задержки между выдачей значений в ЦАП. По заданию диапазон изменения частоты лежит в пределах от 0 до 100 кГц, а в таблице синусов находится 256 значений. Таким образом, на максимальной частоте задержка равна (1/100000)/256=390 мкс. Вывод табличных значений синуса осуществляется с помощью ЦАПа. Усилитель мощности необходим для обеспечения выхода по напряжению и требуемой нагрузочной способностью.
Для связи с пользователем используется компьютер, который подключается по средствам последовательного интерфейса RS232 и DB9. Так как амплитуда и частота и амплитуда изменяются дискретно, с заданным шагом, предусмотрены следующие кнопки: «амплитуда +», «амплитуда -» и «частота +», «частота -». Управление и сканирование кнопок осуществляется Микроконтроллером.
2. Подбор элементов принципиальной схемы
2.1 Выбор устройства ввода
Клавиатуру можно было бы выбрать из готовых, однако это не целесообразно экономически. В готовых клавиатурах предусмотрено большое количество клавиш, что в нашем случае ненужно, можно обойтись гораздо меньшим числом. Так как нам нужно задавать только два параметра (амплитуду и частоту), причем каждый из них может изменяться только с определенным шагом (амплитуда от 0 до 100 кГц с шагом - 1 Гц, частота от 1 до 10 В с шагом - 0.1 В), то вполне достаточно наличие 5 кнопок, одна из которых будет определять вид сигнала, а остальные 4 соответственно: «амплитуда», «частота», «больше», «меньше».
Для того чтобы при замыкании кнопки МК нормально работал, необходимо уменьшить подаваемое напряжение до уровня логической единицы. Для выполнения этой цели поставим сопротивления R1, R2, R3, R4, R5.
2.2 Выбор связи с компьютером
Для связи с компьютером используем последовательный интерфейс RS232 реализованный на SP202 и DB9.
Последовательный интерфейс RS232:
Широко используемый последовательный интерфейс синхронной и асинхронной передачи данных, определяемый стандартом EIA RS-232-C и рекомендациями V.24 CCITT. Изначально создавался для связи компьютера с терминалом. В настоящее время используется в самых различных применениях.
Интерфейс RS-232-C соединяет два устройства. Линия передачи первого устройства соединяется с линией приема второго и наоборот (полный дуплекс) Для управления соединенными устройствами используется программное подтверждение (введение в поток передаваемых данных соответствующих управляющих символов). Возможна организация аппаратного подтверждения путем организации дополнительных RS-232 линий для обеспечения функций определения статуса и управления.
Скорость передачи |
115 Кбит/с (максимум) |
|
Расстояние передачи |
15 м (максимум) |
|
Характер сигнала |
несимметричный по напряжению |
|
Количество драйверов |
1 |
|
Количество приемников |
1 |
|
Схема соединения |
полный дуплекс, от точки к точке |
Компьютер имеет 9-контактный (DB9P) разъем для подключения RS-232C.
Назначение сигналов следующее.
FG - защитное заземление (экран).
- TxD - данные, передаваемые компьютером в последовательном коде (логика отрицательная).
- RxD - данные, принимаемые компьютером в последовательном коде (логика отрицательная).
RTS - сигнал запроса передачи. Активен во все время передачи.
CTS - сигнал сброса (очистки) для передачи. Активен во все время передачи. Говорит о готовности приемника.
DSR - готовность данных. Используется для задания режима модема.
SG - сигнальное заземление, нулевой провод.
DCD - обнаружение несущей данных (детектирование принимаемого сигнала).
DTR - готовность выходных данных.
RI - индикатор вызова. Говорит о приеме модемом сигнала вызова по телефонной сети.
Все сигналы RS-232C передаются специально выбранными уровнями, обеспечивающими высокую помехоустойчивость связи. Отметим, что данные передаются в инверсном коде (логической единице соответствует низкий уровень, логическому нулю - высокий уровень).
Формат передачи данных RS-232
2.3 Выбор ЦАП и источника питания
Так как МК выдает последовательность импульсов, который можно принять за сигнал, квантованный как по уровню, так и по времени, то для преобразования этой последовательности в аналоговый непрерывный сигнал требуется Цифро-аналоговый преобразователь (ЦАП). Важной областью применения ЦАП является синтез аналоговых сигналов необходимой формы. Аналоговые генераторы сигналов - синусоидальной, треугольной и прямоугольной форм - имеют низкую точность и стабильность, не могут управляться от ЭВМ. В последние годы получили развитие системы прямого цифрового синтеза сигналов, обеспечивающие высокую точность задания частоты и начальной фазы сигналов, а также высокую верность воспроизведения их формы. Более того, эти системы позволяют генерировать сигналы большого многообразия форм, в том числе и форм, задаваемых пользователем.
Следовательно, в ЦАПах мы имеем не достаточно большую мощность, для усиления которой нам необходим усилитель мощности (УМ), для которого питание должно быть биполярным ±12В. Значит, одной батареи на 5В нам не достаточно. Этот вопрос я решила с помощью батарей на 12В. Возьмем 4 батарейки типа GR2025, литиевые с напряжением по 3В. Также нам необходим инвертор, с помощью которого можно получить -12В и стабилизатор напряжения на 5В, чтобы питать МК и ЦАП. Подсчитаем необходимую нам разрядность: число возможных значений амплитуд N=10/0.1=100 отсюда разрядность ЦАП n=7, следовательно, можно взять 10 разрядный ЦАП. В данном случае нам подходит ЦАП AD5310.
2.4 Выбор МК
При выборе МК следует учитывать такие параметры, как наличие опыта работы с применением данного МК, соответствие МК поставленной задаче и др. В качестве управляющего микроконтроллера был выбран МК MEGA 8. ATmega8, ATmega8L: 8-разрядные микроконтроллеры с 8 Кбайтами внутрисистемно программируемой Flash памятью.
Отличительные особенности:
· Прогрессивная RISC архитектура 130 высокопроизводительных команд, большинство команд выполняется за один тактовый цикл, 8-разрядных рабочих регистра общего назначения.
· Полностью статическая работа
· Приближающаяся к 16 MIPS (при тактовой частоте 16 МГц) производительность
· Встроенный 2-цикловый перемножитель
· Энергонезависимая память программ и данных
· Обеспечивает 1000 циклов стирания / записи
· Обеспечен режим одновременного чтения / записи (Read-While-Write)
· 512 байт EEPROM
· 1 Кбайт встроенной SRAM
· Программируемая блокировка, обеспечивающая защиту программных средств пользователя
· Встроенная периферия
· Два 8-разрядных таймера / счетчика с отдельным предварительным делителем, один с режимом сравнения
· Один 16-разрядный таймер / счетчик с отдельным предварительным делителем и режимами захвата и сравнения
· Счетчик реального времени с отдельным генератором
· Три канала PWM
· 8-канальный аналого-цифровой преобразователь (в корпусах TQFP и MLF)
· 6 каналов с 10-разрядной точностью
· 2 канала с 8-разрядной точностью
· 6-канальный аналого-цифровой преобразователь (в корпусе PDIP)
· 4 канала с 10-разрядной точностью
· 2 канала с 8-разрядной точностью
· Байт-ориентированный 2-проводный последовательный интерфейс
· Программируемый последовательный USART
· Последовательный интерфейс SPI (ведущий / ведомый)
· Программируемый сторожевой таймер с отдельным встроенным генератором
· Встроенный аналоговый компаратор
· Специальные микроконтроллерные функции
· Сброс по подаче питания и программируемый детектор кратковременного снижения напряжения питания
· Встроенный калиброванный RC-генератор
Рабочие напряжения Рабочая частота
2,7 - 5,5 В (ATmega8L) 0 - 8 МГц (ATmega8L)
4,5 - 5,5 В (ATmega8) 0 - 16 МГц (ATmega8)
Описание выводов модели ATmega 8
Название вывода |
Назначение |
|
Порт В. |
||
PB0 (ICP) |
Вход захвата таймера / счётчика |
|
PB1 (OC1A) |
Выход А таймера / счётчика Т1 |
|
PB2 (SS/OC1B) |
Выбор Slave-устройства в канале SPI /выход В таймера / счётчика Т1 |
|
PB3 (MOSI/OC2) |
Выход (Master) или вход (Slave) данных канала SPI/ Выход таймера / счётчика Т2 |
|
PB4 (MISO) |
Вход (Master) или выход (Slave) данных канала SPI) |
|
PB5 (SCK) |
Выход (Master) или вход (Slave) тактового сигнала SPI |
|
PB6 (XTAL1/TOSC1) |
Вход тактового генератора / Вывод для подключения резонатора к таймеру / счётчику Т2 |
|
PB7 (XTAL2/TOSC2) |
Выход тактового генератора/ Вывод для подключения резонатора к таймеру / счётчику Т2 |
|
Порт С. |
||
PC0 (ADC0) |
Вход АЦП |
|
PC1 (ADC1) |
Вход АЦП |
|
PC2 (ADC2) |
Вход АЦП |
|
PC3 (ADC3) |
Вход АЦП |
|
PC4 (ADC4/SDA) |
Вход АЦП / Линия данных модуля TWI |
|
PC5 (ADC5/SCL) |
Вход АЦП / Тактовый сигнал модуля TWI |
|
PC6 (RESET) |
Вход сброса |
|
ADC6 |
Вход АЦП |
|
ADC7 |
Вход АЦП |
Порт D. |
||
PD0 (RXD) |
Вход USART |
|
PD1 (TXD) |
Выход USART |
|
PD2 (INT0) |
Вход внешнего прерывания |
|
PD3 (INT1) |
Выход внешнего прерывания |
|
PD4 (T0/XCK) |
Вход внешнего тактового сигнала таймера / счётчика Т0 / Вход/выход внешнего тактового сигнала USART |
|
PD5 (T1) |
Вход внешнего тактового сигнала таймера / счётчика Т1 |
|
PD6 (AIN0) |
Положительный вход компаратора |
|
PD7 (AIN1 |
Отрицательный вход компаратора |
|
AREF |
Вход опорного напряжения для АЦП |
|
AGND |
Аналоговый общий вывод |
|
AVcc |
Вывод источника питания АЦП |
|
GND |
Общий вывод |
|
Vcc |
Вывод источника питания |
2.5 Выбор стабилизатора напряжения и инвертора
Для обеспечения питания микросхем используем стабилизатор напряжения компенсационного типа с отрицательной обратной связью - 142ЕН5, который стабилизирует подаваемое напряжение 12В в напряжение 5В, необходимое для питания микросхем генератора.
Инвертор возьмём 3-фазный мостовой MiniSKiiP 2:
Температура корпуса ограничивается значением TC = 125°C
Характеристики надежности действительны для Tj = 150°C
SC-данные: tp 6 мкс; VGE 15В; Tj = 150°C; VCC = 360В
VCEsat, VF - значения на уровне кристалла (без учета потерь на контактах).
Рабочие характеристики (если не указано прочее значение, то полагается Tc = 25 °C) |
|||||||
Обозначение |
Наименование |
Условия снятия характеристики |
мин. |
ном. |
макс. |
Единица измерения |
|
IGBT-транзистор инвертора |
|||||||
VCE(sat) |
напряжение насыщения коллектора-эмиттера |
ICnom = 100 A, Tj = 25 (150) °C |
1,05 |
1,45 (1,65) |
1,85 (2,05) |
В |
|
VGE(th) |
пороговое напряжение затвор-эмиттер |
VGE = VCE, IC = 2 мА |
5,8 |
В |
|||
VCE(TO) |
Пороговое напряжение коллектора-эмиттера (статическое) |
Tj = 25 (150) °C |
0,9 (0,8) |
1,1 (1) |
В |
||
rT |
Дифференциальное сопротивление во включенном состоянии |
Tj = 25 (150) °C |
5,5 (8,5) |
7,5 (10,5) |
мОм |
||
Cies |
Входная емкость при закороченном выходе |
VGE = 25, VCE = 0 В, f = 1 МГц |
6,15 |
нФ |
|||
Coes |
выходная емкость при закороченном входе |
VGE = 25, VCE = 0 В, f = 1 МГц |
1,12 |
нФ |
|||
Cres |
Обратная передаточная емкость (емкость Миллера) |
VGE = 25, VCE = 0 В, f = 1 МГц |
0,9 |
нФ |
|||
RCC'+EE' |
сопротивление пружинный контакт-кристалл |
Ts = 25 (150)°C |
мОм |
||||
Rth(j-s) |
Тепловое сопротивление |
для одного IGBT |
0,6 |
K/Вт |
|||
td(on) |
длительность задержки включения |
VCC = 300 В, VGE = -8/+15В ICnom = 100 A, Tj = 125 °C RGon = RGoff = 8,2 Ом индуктивная нагрузка |
40 |
нс |
|||
tr |
время нарастания |
40 |
нс |
||||
td(off) |
длительность задержки выключения |
410 |
нс |
||||
tf |
время спада |
50 |
нс |
||||
Eon(Eoff) |
рассеиваемая энергия в процессе включения (выключения) |
3,4 (3,5) |
мДж |
||||
Обратный диод инвертора |
|||||||
VF = VEC |
прямое напряжение, равное напряжению на эмиттере-коллекторе |
IFnom = 100 A; Tj = 25 (150) °C |
1,3 (1,3) |
1,5 (1,5) |
В |
||
V(TO) |
пороговое напряжение |
Tj = 25 (150) °C |
0,9 (0,8) |
1 (0,9) |
В |
||
rT |
прямое дифференциальное сопротивление |
Tj = 25 (150) °C |
4 (5) |
мОм |
|||
Rth(j-s) |
Тепловое сопротивление |
для одного диода |
0,8 |
K/Вт |
|||
IRRM |
максимальный ток обратного восстановления |
IIFnom = 100 A, VR = 300 В VGE = 0В, Tj = 125 °C diF/dt = 2560 A/мкс |
102 |
A |
|||
Qrr |
заряд восстановления |
15,5 |
мкКл |
||||
Err |
Рассеиваемая энергия в процессе обратного восстановления |
3,3 |
мДж |
||||
Датчик температуры |
|||||||
Rts |
сопротивление |
3%, Tr = 25 (100) °C |
1000 (1670) |
Ом |
|||
Механические данные |
|||||||
Ms |
монтажный вращающий момент |
2 |
2.5 |
Н · м |
|||
M |
масса |
65 |
грамм |
IC - ток коллектора;
VGE - напряжение затвор-эмиттер;
VCE - напряжение коллектор-эмиттер;
Tj - температура перехода;
ICnom - номинальный ток коллектора;
VCC - напряжение питания коллектора-эмиттера;
RGon (RGoff) - внешнее последовательное сопротивление с затвором во время включения (выключения);
IFnom - номинальный прямой ток.
Внешний вид модулей семейства SKIIP 2:
2.6 Выбор УМ
Входное напряжение подается на свободный вывод резистора обратной связи ЦАП, размещенного на кристалле ИМС. В этой схеме выходной ток ЦАП
что при выполнении условия Rос=R дает
цифровой генератор сигнал резистивный
Следует отметить, что при коде «все нули» обратная связь размыкается. Предотвратить этот режим можно, либо запретив такой код программно, либо включив между выходом и инвертирующим входом ОУ резистор с сопротивлением, равным R·2N+1.
Схема делителя на основе ЦАП с выходом в виде напряжения, построенном на инверсной резистивной матрице и включающем буферный ОУ. Выходное и входное напряжения этой схемы связаны уравнением
Отсюда следует
В данной схеме усилитель охвачен как положительной, так и отрицательной обратными связями. Для преобладания отрицательной обратной связи (иначе ОУ превратится в компаратор) необходимо выполнение условия D<2N-1 или MD<1/2. Это ограничивает значение входного кода нижней половиной шкалы. Резисторы на отрицательной обратной связи нужны для компенсации смещения, вызванного входным током. Так же с их помощью рассчитан коэффициент усиления.
Для выполнения поставленной задачи будем использовать усилитель AD 718.
3. Программа
Включаем файл определений символических имен для процессора AT90Mega8
include «m8def.inc»
; объявляем адреса расположения пользовательских переменных в ОЗУ
equ MyTIrqCntr = $100
equ MyADC_resLO = $101
equ MyADC_resHI = $102
equ MyADC_ReadyFlag = $103
; таблица векторов прерываний:
org 0; - расположить следующие инструкции начиная с этого абсолютного адреса FLASH ПЗУ
rjmp RESET ; переход на RESET
; reti
; reti
; reti
org OVF1addr; == то же, что и.org 8 - Overflow1 Interrupt Vector Address
rjmp MyIntTimerOVF;
org ADCCaddr; =$00e - ADC Interrupt Vector Address
rjmp MyIntADCsampleReady
;
RESET:
; 1***** Инициализация указателя стека
;* Инициализация стека по старшему адресу внутренней SRAM
;* Комментарий для устройст без SRAM
ldi r16, high(RAMEND); старший байт требует только если
out SPH, r16 ; RAM больше чем 256 байт
ldi r16, low(RAMEND)
out SPL, r16
; 2***** Конфигурации таймера 1 - 100 Гц Режим работы:
; - нормальный способ действия, prescaler Fosc/256
ldi r16, (0<<ICNC1 | 0<<ICES1 | 0<<WGM13 | 0<<WGM12 | 1<<CS12 | 0<<CS11 | 0<<CS10) ;== ldi r16, 0x07; == 00000100b
out TCCR1B, r16
ldi r16, (0<<COM1A1 | 0<<COM1A0 | 0<<COM1B1 | 0<<COM1B0 | 0<<FOC1A | 0<<FOC1B | 0<<WGM11 | 0<<WGM10) ;== ldi r16, 0x00
out TCCR1A, r16
in r16, TIMSK; прывание по переполнению
ori r16,1<<TOIE1; == 0000 0100 == 7
; andi r16,~(1<<TOIE1); == 1111 1011 == 0xFB
out TIMSK, r16
;
; 3***** Инициализация АЦП
; ADMUX регистр
ldi r16, 0b10000101; REFS1 REFS0 ADLAR - MUX3 MUX2 MUX1 MUX0
; REFS1, REFS0 = b10 => выбор источника опорного напряжения
; ADLAR = b0 => выравнивание результата преобразования
; MUX3..0 = b0101 => выбор входного канала ADC5
out ADMUX, r16
; ADCSRA регистр
ldi r16, 0b10001111; ADEN ADSC ADFR ADIF ADIE ADPS2 ADPS1 ADPS0
; ADEN - разрешение АЦП
; ADSC - запуск преобразования (однократно)
; ADFR - выбор режима работы АЦП
; ADIF - флаг прерывания от компаратора (только чтение)
; ADIE - разрешение прерывания от компаратора
; ADPS2..0 - выбор частоты преобразования (b111 => 1/128)
out ADCSRA, r16
rcall Init_uart
sei;
; ОСНОВНОЙ ЦИКЛ ПРОГРАММЫ
; в нем анализируется флаг готовности данных АЦП (установит прерывание)
; по готовности данных происходит подготовка и передача по последовательному порту RS-232
main_prog_loop:
; АЦП данные готовы?
lds r16, MyADC_ReadyFlag; устанавливается в прерываниии АЦП
cpi r16, 1 ; сравнить с числом 1 (== ДА)
brne main_prog_loop; если не готовы. ждем
ldi r16, 0
sts MyADC_ReadyFlag, r16; сбрасываем флаг готовности данных;
Подготовить входные данные для вызова подпрограммы преобразования чисел в BCD (двоично-десятичный) формат
; fbinL =r16; двоичное значение, младший байт
; fbinH =r17; двоичное значение, старший байт
lds r16, MyADC_resLO;
lds r17, MyADC_resHI;
; ldi r16, low(12345); проверка преобразования и передачи известного числа
; ldi r17, high(12345)
rcall bin16BCD5; вызов подпрограммы BIN->BCD
; Результат BCD - теперь в регистрах:
; tBCD0 =r17; BCD значение, цифры 1 и 0
; tBCD1 =r18; BCD значение, цифры 3 и 2
; tBCD2 =r19; BCD значение, цифра 4
; ldi r20,'0'; для преобразование в символ ASCII
mov r16, r19; BCD значение, цифра 4
andi r16, 0x0f; для маскирования старших бит
add r16, r20
rcall Send
mov r16, r18; BCD значение, цифра 3
swap r16; поменять местами 4 старшие бита с 4-мя младшими
andi r16, 0x0f; для маскирования старших бит
add r16, r20
rcall Send
mov r16, r18; BCD значение, цифра 2
andi r16, 0x0f; для маскирования старших бит
add r16, r20
rcall Send
mov r16, r17; BCD значение, цифра 1
swap r16; поменять местами 4 старшие бита с 4-мя младшими
andi r16, 0x0f; для маскирования старших бит
add r16, r20
rcall Send
mov r16, r17; BCD значение, цифра 0
andi r16, 0x0f; для маскирования старших бит
add r16, r20
rcall Send
ldi r16, 13; символ - возврат каретки
rcall Send
rjmp main_prog_loop;
; Запустить цикл преобразования АЦП
ldi r16, 0b11001111; ADEN ADSC ADFR ADIF ADIE ADPS2 ADPS1 ADPS0
; ADEN - ADC Enable
; ADSC - ADC Start Conversion (однократно)
; ADFR - ADC Free Running Select
; ADIF - ADC Interrupt Flag (только чтение)
; ADIE - ADC Interrupt Enable
; ADPS2..0 - ADC Prescaler Select Bits (b111 => 1/128)
out ADCSRA, r16
pop r16
out SREG, r16
pop r17
pop r16
reti
MyIntADCsampleReady:
push r16; сохранить знак
in r16, SREG; сохранить значение
push r16; сохранить указатель строки результата
; Результат преобразования АЦП сейчас в паре регистров ADCH:ADCL
; Когда читаем ADCL, возможность обновления самим блоком АЦП регистра ADCH аппаратно блокируется.
; Поэтому важно считывать результат в таком порядке - сначала ADCL, затем ADCH
in r16, ADCL
sts MyADC_resLO, r16; сохраняем результат в ячейки ОЗУ
in r16, ADCH
sts MyADC_resHI, r16
ldi r16, 1; активируем ячейку
sts MyADC_ReadyFlag, r16; устанавливаем для основного цикла флаг готовности данных
pop r16; загрузить адрес строки
out SREG, r16
pop r16
reti
Работа с прерываниями:
; включаем файл определений символических имен для процессора AT90Mega8
include «m8def.inc»
; объявляем адреса расположения пользовательских переменных в ОЗУ
equ MyTIrqCntr = $100
equ MyADC_resLO = $101
equ MyADC_resHI = $102
equ MyADC_ReadyFlag = $103
; таблица векторов прерываний:
org 0; - расположить следующие инструкции начиная с этого абсолютного адреса FLASH ПЗУ
rjmp RESET; переход на RESET
; reti
; reti
; reti
org OVF1addr; == то же, что и.org 8 - Overflow1 Interrupt Vector Address
rjmp MyIntTimerOVF;
org ADCCaddr; =$00e - ADC Interrupt Vector Address
rjmp MyIntADCsampleReady
;
RESET:
; 1***** Инициализация указателя стека
;* Инициализация стека по старшему адресу внутренней SRAM
;* Комментарий для устройств без SRAM
ldi r16, high(RAMEND); старший байт требуется, так как
out SPH, r17
ldi r16, low(RAMEND); RAM больше чем 256 байт
out SPL, r16
; 2***** Конфигурации таймера 1 - 100 Гц Режим работы:
; - нормальный способ действия, prescaler Fosc/256
ldi r16, (0<<ICNC1 | 0<<ICES1 | 0<<WGM13 | 0<<WGM12 | 1<<CS12 | 0<<CS11 | 0<<CS10) ;== ldi r16, 0x07; == 00000100b
out TCCR1B, r16
ldi r16, (0<<COM1A1 | 0<<COM1A0 | 0<<COM1B1 | 0<<COM1B0 | 0<<FOC1A | 0<<FOC1B | 0<<WGM11 | 0<<WGM10) ;== ldi r16, 0x00
out TCCR1A, r16
in r16, TIMSK; прывание по переполнению
ori r16,1<<TOIE1; == 0000 0100 == 7
; andi r16,~(1<<TOIE1); == 1111 1011 == 0xFB
out TIMSK, r16
;
; 3***** Запись таблицы синусов
; ***** EEPROM ***********************
; EEDR - EEPROM Data Register
; EECR - EEPROM Control Register
equ EERE = 0 ; EEPROM Read Enable
equ EEWE = 1 ; EEPROM Write Enable
equ EEMWE= 2 ; EEPROM Master Write Enable
equ EEWEE= EEMWE ; For compatibility
equ EERIE = 3 ; EEPROM Ready Interrupt Enable
;****AVR studio: View New Memory View (Alt+4) EEPROM записываем туда таблицу; синусов
Ram:
in R16, EEDR
sts MyADC_resLO, R16; сохраняем результат в ячейки ОЗУ
in R16, EEDR
sts MyADC_resHI, R16
; *****Настраиваем таймер
; ******разрешаем прерывания
loop:
; Define pull-ups and set outputs high
; Define directions for port pins
ldi r16, 1<<PB1
ldi r17, 1<<DDB1
; init port b
out PORTB, r16
out DDRB, r17
mainloop:
; Read port pins
in r16, PINB
; invert bit 1 state
ldi r17, 1<<PB1
eor r16, r17
; wr to port
out PORTB, r16
rcall delay1
rcall delay1
rcall delay1
rcall delay1
rcall delay1
rjmp mainloop;
;########################## передача данных из ОЗУ
; по готовности данных происходит подготовка и передача по последовательному порту SPI
delay1:
; готов??
lds r16, My ADC _ReadyFlag; устанавливается в прерывании и АЦП
cpi r16, 1; сравнить с числом 1 (== ДА)
brne delay1; если пока не готовы, ждем
lds temp, Low; загрузить в SPI младший байт ОЗУ
out MyADC_resLO, temp
out SPI, temp; вывод в порт
delay2:
; готов??
ldi r16, My ADC _ReadyFlag; устанавливается в прерывании и АЦП
cpi r16, 1; сравнить с числом 1 (== ДА)
brne delay2; если пока не готовы. ждем
ldi temp, High; загрузить в SPI старший байт ОЗУ
out MyADC_resHI, temp
out SPI, temp; вывод в порт
rjmp delay1;
Заключение
В ходе данной курсовой работы по проектированию цифрового генератора аналоговых сигналов были разработаны структурная, электрическая и функциональные схемы устройства. Разработана блок-схема опроса кнопок и работы генератора, а также написана программа.
Список литературы
1. Д. Гивоне.Р. Россер «Микропроцессоры и микрокомпьютеры» Москва «Мир» 1983
2. А.В. Евстифеев «Микроконтроллеры AVR семейств Tiny и Mega фирмы Atmel» Москва, «Додэка - XXI», 2005
3. М. Гук «Энциклопедия «Аппаратные средства IBM PC», С-Пб, «Питер» 2003
4. www.atmel.com
5. www.analog.com
6. www.eltech.ru
7. www.chip-dip.ru
8. www.radiokot.ru
9. www.gaw.com
Размещено на Allbest.ru
Подобные документы
Исследование принципов разработки генератора аналоговых сигналов. Анализ способов перебора адресов памяти генератора аналоговых сигналов. Цифровая генерация аналоговых сигналов. Проектирование накапливающего сумматора для генератора аналоговых сигналов.
курсовая работа [513,0 K], добавлен 18.06.2013Расчет генератора синусоидальных сигналов как цель работы. Выбор принципиальной схемы высокочастотного генератора средней мощности. Порядок расчета LC-генератора на транзисторе, выбор транзистора. Анализ схемы (разработка математической модели) на ЭВМ.
курсовая работа [258,5 K], добавлен 10.05.2009Анализ аналогов генератора пилообразного напряжения. Принципиальная схема, принцип работы. Генератор пилообразного напряжения на микроконтроллере. Разработка структурной функциональной схемы цифрового устройства. Индикатор уровня сигнала на LM3915.
курсовая работа [1,3 M], добавлен 27.01.2016Ознакомление с устройством преобразователя аналоговых сигналов в цифровые. Описание регистра управления и статуса устройства. Расчет коэффициента деления частоты тактового генератора микроконтроллера. Сборка схемы светодиодного индикатора напряжения.
лабораторная работа [277,3 K], добавлен 18.10.2015Проектирование устройства преобразования цифровой информации в аналоговую и наоборот для цифрового магнитофона. Описание используемых интегральных микросхем. Разработка структурной и принципиальной схемы цифрового канала звукозаписи без кодера и декодера.
курсовая работа [1,8 M], добавлен 18.10.2010Разработка структурной и функциональной схем устройства преобразования аналоговых сигналов на микропроцессоре PIC. Входное буферное устройство, аналого-цифровой преобразователь. Устройство цифровой обработки сигнала, широтно-импульсный модулятор.
контрольная работа [612,9 K], добавлен 11.04.2014Классификация цифровых приборов. Модели цифровых сигналов. Методы амплитудной, фазовой и частотной модуляции. Методика измерения характеристики преобразования АЦП. Синтез структурной, функциональной и принципиальной схемы генератора тестовых сигналов.
дипломная работа [2,2 M], добавлен 19.01.2013Обзор генераторов сигналов. Структурная схема и элементная база устройства. Разработка печатной платы модуля для изучения генератора сигналов на базе прямого цифрового синтеза. Выбор технологии производства. Конструкторский расчет; алгоритм программы.
дипломная работа [1,7 M], добавлен 25.04.2015Описание алгоритма работы и разработка структурной схемы микропроцессорной системы управления. Разработка принципиальной схемы. Подключение микроконтроллера, ввод цифровых и аналоговых сигналов. Разработка блок-схемы алгоритма главной программы.
курсовая работа [3,3 M], добавлен 26.06.2016Назначение и виды генераторов испытательных сигналов. Проектирование ГИС с использованием аналоговых и цифровых интегральных микросхем серии К155. Работа основных его элементов. Выбор функциональной схемы. Конструкция, детали и налаживание устройства.
курсовая работа [173,9 K], добавлен 18.10.2010