Forum: Mikrocontroller und Digitale Elektronik ADC gibt alle möglichen Werte aus


von Attila C. (attila)


Lesenswert?

Hallo!

Atmega 8,PORTD mit den LED auf dem STK 500 verbunden. An PINC 0 habe ich 
wahlweise 2,5 V zur Verfügung oder Masse.

#define F_CPU 8000000

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
  DDRC=0x00;
  DDRD=0xFF;

  ADMUX=(1<<REFS1)|(1<<REFS0);
  ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADFR)|(1<<ADPS2)|(1<<ADPS1);

  int test=0x00;
    while(1)
    {
        test=ADCW;
    PORTD=test;
    _delay_ms(500);
    }
}


Ich bekomme kein vernünftiges Ergebnis. Es scheint das das ADC alle 
möglichen Werte auspuckt. Gefühlt wie ein Voltmeter das in der Luft 
hängt.
Aktiviere ich die Pull ups am PORTC habe ich ein sauberes Ergebnis (Alle 
LED aus)
Was kann der Fehler sein?

Danke!

von Attila C. (attila)


Lesenswert?

Niemand eine Idee?

von Spess53 (Gast)


Lesenswert?

Hi

>ADC gibt alle möglichen Werte aus

Dich interessiert es doch auch nicht, ob der ADC wirklich mit einer 
Messung fertig ist. Im Free Running Mode sollte man im ADC-Complete 
Interrupt auslesen.

MfG Spess

von Attila C. (attila)


Lesenswert?

Hallo Spess

Ich habe das Programm dahingehend geändert das einzeln in einer Schleife 
gemessen wird. Leider mit dem gleichen Ergebnis.

Auch wenn Du natürlich recht hast hatte ich das schon mal so in einem 
anderen Zusammenhang laufen.

Atmega habe ich bereits ausgetauscht.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Aktiviere ich die Pull ups am PORTC habe ich ein sauberes Ergebnis (Alle
> LED aus)
> Was kann der Fehler sein?
Ein offener ADC-Eingang.
Ein offener ADC-Eingang floatet hin und her, wie es ihm gefällt. Und das 
siehst du dann.
Wenn du den Pullup einschaltest, dann ziehst du den ADC-Eingang auf 5V, 
du wandelst auf 0x3ff und die invertierten LEDs sind aus.

von Udo S. (urschmitt)


Lesenswert?

Attila Ciftci schrieb:
> Auch wenn Du natürlich recht hast hatte ich das schon mal so in einem
> anderen Zusammenhang laufen.

Mal wieder nach dem Motto, gestern kam um die Zeit auch kein Auto gehe 
ich jetzt wieder ohne zu schauen über die Straße.
...

von Stefan (Gast)


Lesenswert?

Hast Du in deinem geänderten Quelltext eine Warteschleife auf das Ende 
der Messung eingebaut?

Hast Du AVCC angeschlossen? Selbst bei Verwendung der internen Referenz 
muss AVCC angeschlossen werden (typischerweise über einen L/C Filter an 
VCC).

von Attila C. (attila)


Lesenswert?

Zuerst Stefan: Das STK 500 beschaltet die µCs ja "automatisch".

Lothar: Ganz genau! Alle PINC hingen in der Luft da der Atmega im 
falschen Sockel steckte. Das ist einerseits peinlich auf der anderen 
Seite verständlich da er sich problemlos flashen liess und auch andere 
Aufgaben klaglos ausführte.

Leider leider kann Studio 6 sich mit dem Atmega nicht verbinden sobald 
er auf dem richtigen Sockel sitzt. Ich mache daher mal einen neuen 
Thread auf.

Vielen Dank allen!

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.