Hallo Habe Folgendes Problem: Ich benutze einen Atmega 32 mit dem ich einen Analogwert einlesen möchte. Dieser soll in der Variablen „temp1“ abgelegt werden. Später will ich diesen auf einem LC-Display auslesen können. Im Anhang findet ihr ein Schaltbild wie ich zum Testen ein Poti am Analogeingang habe. Kann es sein das ich es Falsch angeschossen habe? Ich Wollte ohne interne Referenzspannung Messen können. Später will ich mit einem LM35CZ eine Temperatur erfassen. Um nun den Analogeingang zu testen habe ich vorerst dieses Programm geschrieben. Leider Kriege ich keine Ausgabe, bzw. die Variable wird nicht beschrieben. Kann mir einer sagen was ich Falsch gemacht habe? uint16_t ReadChannel(uint8_t mux) char temp1; { uint16_t Temperatur; ADMUX = (1<<REFS0) | (1<<MUX0); // Referenzspannung von AVCC nutzen//PortA0 ADCSRA = (1<<ADEN) | (1<<ADPS1) | (1<<ADPS2); //Analogwandlung ein//Teilungsfaktor 32 /* "Dummy-Readout" */ ADCSRA |= (1<<ADSC); // eine ADC-Wandlung while ( ADCSRA & (1<<ADSC) ) { ; // auf Abschluss der Konvertierung warten } Temperatur = ADCW; // ADCW muss einmal gelesen werden, // sonst wird Ergebnis der nächsten Wandlung // nicht übernommen. / *Messung */ Temperatur = 0; ADCSRA |= (1<<ADSC); // eine Wandlung "single conversion" while ( ADCSRA & (1<<ADSC) ) { ; // auf Abschluss der Konvertierung warten } ADCSRA &= ~(1<<ADEN); // ADC deaktivieren Temperatur=ADCW; temp1=Temperatur; } Danke für eure Bemühungen
GND/AGND/VCC Angeschlossen? (Im Schaltplan nicht Sichtbar) Diese drei vorhanden? 100nF von AREF->AGND. 100nF von VCC->GND 100nF von AVCC->AGND Und kopier den Programabschnitt hier rein (am besten in [c]..[ /c]) Bei Abtippen ist da wohl was schiefgelaufen.
@ DerAlex (Gast) >Dateianhang: ADC_Schaltung.JPG (98,5 KB, 3 Downloads) 1.Tip Bildformate 2. Tip AVR-Tutorial: ADC 3. Tip http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#ADC_.28Analog_Digital_Converter.29 >Kann es sein das ich es Falsch angeschossen habe? Da fehlt einiges. > Ich Wollte ohne interne Referenzspannung Messen können. Warum? MFG Falk
Mir kommt der Code allgemein sehr komisch vor ;)
1 | uint16_t ReadChannel(uint8_t mux) |
2 | char temp1; |
3 | {
|
4 | |
5 | uint16_t Temperatur; |
6 | |
7 | ADMUX = (1<<REFS0) | (1<<MUX0); // Referenzspannung von AVCC nutzen |
8 | //PortA0
|
was soll das "char temp1;" zwischen Funktionsname und Funktionscode? Gruß, CowZ
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.