So ich habe mich nun von der Bitverarbeitung zur Analogverarbeitun gekämpft und habe da einige Fragen.
Was ist bei der Dimensionierung zu beachten? Mal abgesehen davon, dass die Referenzspannung nicht überschritten werden darf?
Beschaltet werden muss bei Interner Referenzspannung nur AVCC (VCC) und AGND ohne Bauteile.
Bei Externer Referenzspannung AGND AVCC (VCC) und AREF ohne Bauteile.
AREF muss zwischen VREF (2,56V) und VCC liegen.
Habe gelesen man kann nur einen der vier ADC´s nutzen?? Ist das so richtig (ATMega![]()
Da ich mich mit C noch nicht beschäftigt habe würde ich auch gerne noch den Code besprechen...
Das eigentliche Prg ist aus dem Netz gesaugt. Ausprobiert habe ich es aber noch nicht. Code den ich so nicht verstehe bringt mir leider nichts.Code:#include <avr/io.h> /* Analog/Digital Wandler initialisieren */ void adc_init(void); unsigned int buffer; int main(void) { /* A/D - Wandler initialisieren */ adc_init(); while (1) { /* Wandlung starten */ ADCSRA |= (1<<ADSC); // Setzt das ADSC Bit im ADCSRA Register Also eine einfache Wandlung steht an. /* Warten bis die AD-Wandlung abgeschloßen ist */ while ( !(ADCSRA & (1<<ADIF)) ) //Das ADCSRA wird mit dem ADIF Bit und verknüpft //Rückgabewert 1 Wenn die Wandlung abgeschlossen ist. Duch die Negation wir die While Schleife möglich. ; /* AD-Wert auslesen */ buffer = (ADCH<<8) | ADCL; // Das ist mir überhaupt noch nicht klar??? } } /* Analog/Digital Wandler initialisieren */ void adc_init(void) { /* externe Referenzspannung und AD-Wandlerkanal 0 ( ADC0 ) auswählen */ ADMUX = 0; /* AD-Wandler einschalten und Prescaler = 64 einstellen ( enstpricht 115 khz Wandlertakt ) */ ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1); // Is klar ADEN triggert eine Messung... aber wie genau //wirkt sich der Wandlertakt aus?? Je langsamer je genauer??? /* Spezialfunktionen ausschalten */ SFIOR = 0; // Warum müssen alle Pull Up Widerstände ausgeschaltet werden? }
Gruß Olli
Lesezeichen