ADC gibt alle möglichen Werte aus

OP #3120825
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!
Gast #3120898
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
OP #3120908
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.
Moderator (Firma: Titel) Persönliche Seite #3120975
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.
Gast #3121054
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).
OP #3121064
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!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren