ATmega16 ADC Single Conversion

C Sourcecode Beispiel um auf dem ATmega16 den ADC im Single Conversion Mode zu betreiben.

electroicsplanet home electroicsplanet pagetree Sourcecode Examples electroicsplanet pagetree ATmega16 electroicsplanet pagetree ADC electroicsplanet pagetree Single Conversion

Beschreibung

Am Eingang PA4 (ADC4) wird eine Analogspannung angeschlossen. Der ADC des ATmega16 löst in einer Endlosschleife ADC-Wandlungen aus und vergleicht die Eingangsspannung mit 2.5V (halbe Referenzspannung Vcc). Die ADC Peripherie läuft im Single Conversion Mode. Das heisst, jede Wandlung wird durch eine Befehlszeile einzeln ausgelöst. Nachdem die ADC Wandlung gestartet wurde, wartet der Mikrocontroller, bis der ADC Wert zur verfügung steht. Ist ein eingelesener Wert grösser als 2.5V, wird der ausgang PB0 gesetzt. Der ADC arbeitet als einfacher Komparator.

C Sourcecode

#include <avr/io.h>

int main(void)
{

    DDRB = 0x01;                    // Setup PB0 as output

    ADMUX |= (1<<REFS0)|(1<<MUX2);  // Set Reference to AVCC and input to ADC4

    ADCSRA |= (1<<ADEN)|(1<<ADPS2)// Enable ADC, set prescaler to 16
                                    // Fadc=Fcpu/prescaler=1000000/16=62.5kHz
                                    // Fadc should be between 50kHz and 200kHz

    for(;;)                         // Endless loop;
    {
        ADCSRA |= (1<<ADSC);        // Start a conversion
        while(ADCSRA & (1<<ADSC));  // What until the bit is reset by the
                                    // CPU after the 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 C-Sourcefile mit ASCII-Schema: C-Sourcefile mit ACII-Schema

Signalplot

ATMega16 ADC Single Conversion Mode

Gelb: ADC Eingangsspannung
Blau: Digitaler Ausgang BP0