Forum: Mikrocontroller und Digitale Elektronik ADC Erfassen ohne Uref


von DerAlex (Gast)


Angehängte Dateien:

Lesenswert?

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

von Εrnst B. (ernst)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@ 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

von Lasse S. (cowz) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.