Hallo, ich hab ein eigenartiges Problem :( Ich habe einen LM335 mit Vorwiderstand ein meinen AVR angeschlossen PA0(ADC0) als Ergebnis bekomme ich aber nach der ADC-Messung immer 0, lege ich aber 5V direkt an den Pin dann bekomme ich 1023 (was ja auch richtig ist. Wenn der LM335 Tem-Fühler dran ist lieg eine Spannung von 2,93V am Pin an, so soll es ja auch sein, aber ich bekomme keinen anderen Wert als 0 raus, egal was für einen Vorwiderstand ich verwende :( http://www.windarts.de/ADCMist.jpg dort ist die hoch-komplexe Schaltung zu sehen ;) Ich würde mich freuen wenn mir da jemand einen Tipp geben könnte ?
Du hast vergessen AVCC (an VCC) und AGND (an GND) anzuschließen? 100nF zwischen AVCC und AGND schaden nicht. Könnte fast zu Lieblingsfehler Nr.3 aufsteigen... Schmittchen.
MMMHHHH, hat jemand eine ahnung wie ich die Spannungen verbinden kann ohne am IC direkt zu löten beim STK 500 ???
Normalerweise sind bei STK500 die Pins 30,32 AVcc AGnd korrekt beschaltet, Aref kann entweder OnBoard erzeugt und eingestellt werden (JP Aref gesteckt) bzw. ist an PortE herausgeführt. Hardwareseitig sehe ich auch keinen offensichtlichen Fehler sehen, absehen von dem etwas hochohmigen R hier solltest du mal 1,8-2,2 kOhm einsetzen. Da der internen Muxer mit S/H Schaltung des 8535 auch eine kapazitve Last während der Umschaltvorgänge darstellt. Hilft evtl ein C von etwa 1nF von PA0 nach Masse.
Ich habe noch vergessen AREF zu erwähnen - das muß (im "Normalfall") auch an VCC angeschlossen werden. Das STK500 kenne ich nicht, könnte mir aber vorstellen, das Problem durch Setzen eines Jumpers gelöst werden kann?? Schmittchen.
Jetzt mit 2K und 1nF, aber immer noch das gleiche...:( Wenn ich die 5AVCC nehme und an die Port halte kommt 1023 raus, klasse und sonst immer 0 egal was ich verbinde und nicht verbinde (aarrgggg) Kann am Programm was falsch sein ??? ldi temp1, 0b00000000 out DDRA, temp1 ldi temp1,0 out PORTA, temp1 ; -------------------------- ; ADC init ; -------------------------- ldi temp0,0b00000111 out ADCSR,temp0 cbi ADCSR,ADIE sbi ADCSR,ADEN ; -------------------------- sei ; Interrupts zulassen ldi temp0,0b00000000 ; Multiplex (ADMUX) out ADMUX,temp0 sbi ADCSR,ADFR ;Free Run einschalten sbi ADCSR,ADSC ;Start Wandlung Bei mir läuft auchnoch ein Timer der alle 1Sec. einen Interrupt ausslöst, jedesmal dann Lese ich die ADC-Werte aus, wie gesagt mit 0 u. 1023 (0 u. 5V) funzt das aber nicht dazwischen P.S. benutze STK 500
Kann sein das ich auch einen Fehler übersehe, im Moment kann ich bei dem Codefragment auch keinen entdecken. Ich hoffe der Jumper Aref ist auf dem STK500 gesteckt und Aref im AVR-Studio korrekt eingestellt.
Ich glaub ich spinne, funktioniert bei irgendjemanden der ADC im 8535, jetzt hab ich hier noch einen wenn ich den reinstecke dann bekomme ich 0 oder 15 rausegal was ich mache, da kann doch irgednwas überhaupt nicht stimmen..... Liegt es am timer das der jede Sekunde einen Interrupt auslöst oder was ....:( in temp1,ADCL mov LO1,temp1 in temp1,ADCH mov HI1,temp1 das kann doch auch nicht falsch sein oder ... ich weiss es wirklich nicht mehr... Danke schonmal für jeden Tipp, wirklich jeden, egal wie unwichtig er scheint....
Hi! Mit welchem Takt betreibst du den ADC? Im Datenblatt steht 50-200KHz. Einzustellen über ADPS0-2 in ADCSR. In deinem Code sehe ich nichts, kenne aber auch deinen Quarz nicht. Ich habe mit dem 8535 jedenfalls schon Temp. gemessen, kein Problem. Gruss Uwe
@uwe Einmal richtig lesen wird mit 1/128 CPUclk betrieben. Könnte evtl. der Fehler sein beim STK500 ohne extern Quarz ist Fclk max. ja 3,69 MHz. 3,69 MHz / 128 = 28828,25 Hz
Beim Poti sehe ich im Bereich 5V-4,8V hüpfende Werte zwischen 300-1023, drunter sehe ich 0 Ja, AGND mit GND verbunden, ARef=5V Alles Mist :(
Hi! Die 3 1sen hatte ich glatt übersehen. Also wenn AVCC,Aref,AGND an deinem Chip ankommen kann ich es mir erstmal nicht erklären. Versuche doch mal Singelumsetzung. Wie verarbeitest du die Werte? (Man sieht manchmal den Wald vor lauter Bäumen nicht) Gruss Uwe
Ich hab mir eine Funktion geschrieben die 2 8Bit-Werte HI,LO(16Bit-Zahl) auf dem Display darstellen kann, das funzt auch perfekt, und schon oft verwendet. Darüber lasse ich mir die Werte des ADC ausgeben... Singleumsetzung werd ich dann mal versuchen... danke
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.