АНАЛОГОВЫЙ КОМПАРАТОР на МК AVR

March 6, 2011 by admin Комментировать »

Аналоговый компаратор входит в состав периферийных устройств практически всех микроконтроллеров AVR. На рис. 7.2 приведена структурная схема аналогового компаратора микроконтроллера AT90S8535. Аналоговый компаратор содержит собственно компаратор, на входы которого поступают два аналоговых сигнала – AINO и AIN1, 8-разрядный регистр управления и состояния ACSR (табл. 7.3) и элементы управления.

Компаратор имеет два входа: положительный (+) и отрицательный (-). Выходной сигнал компаратора АСО принимает значение 1, если напряжение на входе + больше напряжения на входе -.

Рис. 7.2. Структурная схема аналогового компаратора Таблица 7.3. Формат регистра ACSR

 

№ разряда

7

6

5

4

3

2

1

0

Имя

ACD

AGO

ACI

ACIE

ACIC

ACISl

ACISO

При определенном изменении сигнала АСО, обусловленном состоянием разрядов ACIS1, ACISO регистра ACSR (табл. 7.4), в регистре ACSR формируется сигнал ACI = = 1 и при разрешении прерывания ACIE = 1 вырабатывается запрос прерывания ANA СОМР. При переходе к прерывающей программе бит ACI в регистре ACSR аппаратно сбрасывается в нулевое состояние. Программно этот бит можно сбросить в О путем установки 1 в этот разряд.

При установке разряда ACIC в состояние 1 АСО может быть использован в качестве сигнала захвата для таймера Т1. При установке ACD в 1 отключается питание компаратора, что ведет к уменьшению тока потребления микроконтроллера.

Практическая часть

Задание 1. Подготовить программу для исследования работы аналого-цифрового преобразователя в одиночном режиме. Загрузить программу в память микроконтроллера при выбранной частоте тактовых сигналов 3,69 МГц. С помощью 10-проводного шлейфа соединить разъем порта PC с выводами светодиодов LEDO- LED7 для наблюдения результатов и кнопку SW2 – с выводом порта PD2 для управления выводом. Вывод AGND соединить с выводом GND, AVCC – с VCC. Опорное напряжение ^;aref должно находиться в пределах ^;gnd-‘-^avcc- При установленной перемычке AREF опорное напряжение для АЦП можно регулировать на вкладке Board в окне STK500 AVR Studio 4. На вход порта РАО подать напряжение с выхода потенциометра. Напряжение входного сигнала может изменяться от ^;gnd До ^avcc- После пуска программы с помощью кнопки SW2 можно поочередно просмотреть байты результата и сделать оценку показаний АЦП.

Программа 7.1

;Тестовая программа 7.1 работы АЦП в одиночном режиме с ;просмотром 10-разрядного выходного кода на индикаторах ;порта PC при нажатии кнопки SW2.

;Соединения: SW2-PD2,10-проводным шлейфом PC-LED, средняя ;точка потенциометра – РАО, остальные выводы потенциометра ;с выводами 9,10 (GND и VTG) разъема порта

.include "8535def.inc" ;файл определений AT90S8535 .def temp = г1б ;временный регистр

.def reg_led = rl9        ;регистр индикации

.org $0

rjmp init .org $001

rjmp inter .org $00E rjmp adc

init:

Idi temp,low(RAMEND)   ;установка

out SPL,temp          ; указателя стека

Idi temp,high(RAMEND)  ; на последнюю

out SPH,temp          ; ячейку ОЗУ

ser temp              ;порт PC

out DDRC,temp         ; на вывод

out PORTC,temp

Idi temp,OxFB          ;инициализация 2-го вывода

out DDRD,temp         ; порта PD на ввод

Idi temp,0x04      ;включение подтягивающего

out PORTD,temp     ; резистора порта PD

с1г temp           ;аналоговые входы

out DDRA,temp      ; порта РА, отключены

out PORTA,temp     ; подтягивающие резисторы

Idi temp,0x7F      ;разрешение внешнего

out GIMSK,temp     ; прерывания

Idi temp,0x02      ;обработка прерывания INTO

out MCUCR,temp     ; no перепаду 1;0

set                ;флаг T=1 для вывода двух байтов ;Инициализация АЦП

Idi temp,0x8D      ; ADEN=1, ADIE=1, Fadc=Fclk;32

out ADCSR,temp     ; Fadc=115 КГц при Fclk=3,69 МГц

Idi temp,0             ; Канал 0 АЦП (вход РАО) out ADMUX,temp

sei                ;разрешение прерываний

sbi ADCSR,ADSC     ;пуск преобразования

loop: rjmp loop        ;цикл ожидания прерываний

;Обработка прерывания от АЦП

adc: in rl8,ADCL       ;считывание ADCLrADCH

in rl7,ADCH reti

;Обработка внешнего прерывания от кнопки для просмотра ;результатов. Вывод в порт PC сначала двух старших, затем ;восьми младших разрядов при повторном нажатии кнопки inter:

cbi ADCSR,ADIE      ;запрет прерывания от АЦП

brtc to

clt

mov reg_led, rl7 com reg_led out PORTC, reg_led reti tO:set

mov reg_led, rl8

com reg_led

out PORTC, reg_led

sbi ADCSR, ADIE ;разрешение прерывания от АЦП

sbi ADCSR, ADSC ;пуск преобразования

reti

Задание 2. Изменить программу, увеличив скорость преобразования в 1,5 раза.

Задание 3. Изменить программу, выполняя вывод старших восьми разрядов результата преобразования АЦП с первоначальной скоростью преобразования 125 кГц.

Задание 4. Изменить программу, снова увеличив скорость преобразования в 1,5 раза.

Задание 5. Изменить программу, предусмотрев возможность преобразования с переводом контроллера в режим холостого хода. Сравнить результаты наблюдений.

Задание 6. Подготовить программу для исследования работы аналогового компаратора. Загрузить ее в память микроконтроллера. На входы порта РВ2, РВЗ подать напряжения с выходов двух потенциометров. С помощью 10-проводного шлейфа соединить разъем порта PC с выводами светодиодов LED0-LED7 для наблюдения содержимого счетчика сигналов сравнения. Проверить работу программы, изменяя с помощью потенциометра напряжения на одном из входов (AINO, AIN1) при постоянном напряжении на другом входе. В окне STK500 на вкладке Board установить частоту, при которой счетчик программы count последовательно увеличивается на единицу при изменении знака разности входных сигналов.

Программа 7.2

;Тестовая программа 7.2 аналогового компаратора с выводом ;счетчика изменений сигнала АСО на индикаторы порта PC. ;Соединения: 10-проводным шлейфом PC-LED,

;РВ2 – выход потенциометра 1, РВЗ – выход потенциометра 2

.include "8535def.inc"   ;файл определений AT90S8535

.def temp = г1б          ;временный регистр .def count = rl7

.def reg_led = rl9       ;регистр индикации

.org $0

rjmp init .org $010

rjmp ana_comp init:

Idi temp,low(RAMEND) ;установка

out SPL,temp           ; указателя стека

Idi temp,high(RAMEND) ; на последнюю

out SPH,temp           ; ячейку ОЗУ

ser temp               ;порт PC

out DDRC,temp          ; на вывод

out PORTC,temp

clr temp               ;аналоговые входы РВ2,РВЗ

out DDRB, temp     ;отключены подтягивающие

out PORTB, temp ; резисторы clr count

Idi temp,0x10      ;сброс ACI и ACSII;ACSIO

out ACSR,temp

sei

sbi ACSR,ACIE      ;разрешение прерывания

loop: rjmp loop ana_comp:

inc count

mov reg_led,count

com reg_led

out PORTC,reg_led

reti

Задание 7. Изменить условие прерывания. Вместо прерывания при любом изменении сигнала АСО запрограммировать прерывания при изменении сигнала АСО 0;1. Проверить работу программы.

Задание 8. Модифицировать программу, запретив прерывания и организовав программную проверку АСО в регистре ACSR, увеличивая счетчик изменений при переходе АСО 1;0. Проверить работу программы.

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты