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!
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
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.
> 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.
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. ...
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).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.