ATmega32 ADC Free Running Mode

Dieses C Sourcecode Beispiel konfiguriert im ATmega32 den ADC für den Free Running Mode.


Beschreibung

Am Eingang PA0 (ADC0) ist der ADC Eingang. Der ADC des ATmega32 läuft in diesem Programm im free running mode. Er vergleicht die Eingangsspannung mit 2.5V (halbe Referenzspannung Vcc). Nachdem eine ADC Wandlung gestartet wurde, wartet der ATmega32, bis die ADC-Wandlung abgeschlossen ist. Die eingelesenen Werte werden mit 2.5V verglichen und der digitale Ausgang entsprechend gesetzt.

C Sourcecode

#include <avr/io.h>

#define ADATE 5                         // Definition is missing in
                                        // some Versions of AVR Studio
int main(void)
{
    DDRB = 0x01;                        // Setup PB0 as output

    ADMUX |= (1<<REFS0);                // Set reference to AVcc

    ADCSRA |= (1<<ADEN)|(1<<ADATE)|     // Enable ADC, Enable auto Triggering
              (1<<ADPS2)|(1<<ADSC);     // Set prescaler to 16
                                        // Fadc=Fcpu/prescaler=1000000/16=62.5kHz
                                        // Fadc should be between 50kHz and 200kHz
                                        // Start first conversion

    for(;;)                             // Endless loop;
    {
            while(!(ADCSRA&(1<<ADSC)))// Wait until a conversion is finished

            if(ADC>=512)                // Compare the conversionresult with 512
                PORTB |= 0x01;          // If larger, set PB0
            else
                PORTB &= ~0x01;         // If smaller, reset PB0

    }                                   // main() will never be left

    return 0;                           // This line will never be executed
}


Download lauffähiges C-File mit ASCII-Schema: Downloadlink

Signalplot

ATMega32 ADC Free Running Mode

Gelb: ADC Eingang
Blau: BP0 Out