Аналого цифровой преобразователь

Материал из Automata.

(Различия между версиями)
Перейти к: навигация, поиск
м
м (Полностью удалено содержимое страницы)
Строка 1: Строка 1:
-
#include <stdint.h>
 
-
#include <avr/io.h>
 
-
#include <avr/interrupt.h>
 
-
uint8_t ADCData = 0;//переменная хранения преобразованных данных;
 
- 
-
//процедура задержки;
 
-
void Wait (volatile uint32_t wait)
 
-
{
 
-
while (wait-- > 0); //wait - пустых тактов;
 
-
}
 
- 
-
//обработчик прерывания от АЦП;
 
-
ISR (SIG_ADC)
 
-
{
 
-
ADCData = ADCH;//сохраняем преобразованное значение;
 
-
Wait(800000);//ждем 0.1с, чтобы АЦП не происходило слишком быстро;
 
-
}
 
- 
-
//главная функция;
 
-
int main (void)
 
-
{
 
-
DDRB = 0xff;//порт В настраиваем на выход;
 
-
PORTB = 0x00;//напряжение на выводах порта 0в;
 
-
SREG = 0x80;//разрешаем все прерывания, выставляя флаг "I" глобального разрешения прерываний;
 
-
ADMUX = _BV(REFS1) | _BV(REFS0) | _BV(ADLAR) | 0x07;//внутреннее опорное напряжение в 2.56в,
 
-
//смещение данных влево в регистрах ADCH и ADCL,
 
-
//вход АЦП - PC7_ADC7;
 
-
ADCSRA = _BV(ADEN) | _BV(ADIE);//включаем модуль АЦП и разрешаем прерывания от него;
 
-
while (1)//в бесконечном цикле;
 
-
ADCSRA |= _BV(ADSC);//запускаем преобразование;
 
-
return 0;
 
-
}
 

Версия 13:04, 9 февраля 2010

Личные инструменты
Микроконтроллеры