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

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

(Различия между версиями)
Перейти к: навигация, поиск
м (Новая: #include <stdint.h> #include <avr/io.h> #include <avr/interrupt.h> uint8_t ADCData = 0;//переменная хранения преобразованных данных; //пр...)
м
Строка 31: Строка 31:
ADCSRA |= _BV(ADSC);//запускаем преобразование;
ADCSRA |= _BV(ADSC);//запускаем преобразование;
return 0;
return 0;
-
}
+
}

Версия 17:36, 28 февраля 2008

#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;
}
Личные инструменты
Микроконтроллеры