ATmega16 ADC Single Conversion
C Sourcecode Beispiel um auf dem ATmega16 den ADC im Single Conversion Mode zu betreiben.
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. |
Please visit: the four |
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
Gelb: ADC Eingangsspannung
|