Hallo
Ich messe momentan eine Spannung auf einem STK 500 an PORT 0 und 1 An
Port A
Diese Messung wird auf einem LCD Display dargestellt. Dies Funkioniert
auf dem STK 500 bestens. Nun habe ich mir eine eigene Platine gebaut, um
auf der die Spannung zu messen.
Das Problem, es funktioniert eigentlich alles außer die ACD Messsung?
ICh habe PORT0 und PORT1 abgeklemmt
Messe ich nun Zeigt mir mein Display immer 1024 und 1023 an?
Obwohl keine Spannung anliegt. Lege ich PORT0 oder PORT1 auf Ground/5V
ändert sich nichts an der Messung...
Alles andere ,Ports ansteuerung usw geht!
Hat jemand eine Idee?
Gruß und besten Dank im Voraus
Sebastian
Sebastian schrieb:> ja AVcc liegen 4,92V an Ground ist auch vorhanden
Dann zeig deine Schaltung und dein Programm.
Immer diese Ratespiele. Bei mir gehts nicht, kann wer raten was ich
wieder falsch gemacht habe? Du gehst ja auch selber zum Arzt, damit er
sich die Sache mal ansehen kann.
>while(ADCSRA&(1<<ADSC))// auf Abschluss der Konvertierung warten
2
>returnADCW;
3
>
... fehlt ein ;
1
...
2
while(ADCSRA&(1<<ADSC))// auf Abschluss der Konvertierung warten
3
;
4
5
returnADCW;
Warum änderst du die Funktionen aus dem Tutorial ab? Die funktionieren
genau so, wie sie veröffentlicht wurden. Ok, die Referenzspannung musst
du nach deinen Wünschen einstellen (und zwar korrekt), aber abgesehen
davon gibt es keinen Grund am restlichen Code rumzupfuschen.
Auch:
WElchen Sinn hat es denn, wenn du die Funktion ADC_Read duplizierst? Die
FUnktion ist so geschrieben, dass sie an Kanal 0 misst, wenn du sie mit
adcval = ADC_Read( 0 );
aufrufst, und dass sie an Kanal 1 misst, wenn du sie mit
adcval2 = ADC_Read( 1 );
aufrufst. Es gibt keinen Grund, die Funktion selber zu duplizieren! Du
teilst mit dem Argument beim Aufruf der Funktion mit, welchen Kanal sie
messen soll, und das macht die Funktion dann auch. Wer oder was braucht
daher die Funktion ADC_Read2. Richtig. Die braucht keiner.
Immerhin hast du nicht den Fehler gemacht an ARef eine Verbindung zu Vcc
zu machen. Das ist gut.
Aber ein 100nF Kondensator nach Masse darf es an diesem Pin schon sein
um mitzuhelfen die Referenzspannung zu stabilisieren.
ok ok .. warum meckert der compiler nicht?
vermutlich hab ich das semikolon vergessen
das ganz tut aber nichts zur sache und ich bekommt immer noch die 1024
auf dem lcd angezeigt und weis nicht warum ob5V oder Ground auf den PA0
und PA1
Sebastian schrieb:> ok ok .. warum meckert der compiler nicht?
Weil es syntaktisch immer noch korrekt ist.
"Die Birke streicht die Kreissparkasse über dem Sonnenaufgang."
ist laut Duden auch völlig korrekt.
Und trotzdem ein sinnloser Satz.
Deinen Compiler interessiert nur, ob du die Sprachregeln eingehalten
hast. Ob das was dann raus kommt einen Sinn ergibt oder nicht, das
interessiert ihn nicht. Das ist dein Bier.
> vermutlich hab ich das semikolon vergessen
Nicht vermutlich.
Ganz sicher.
Oder wo in deiner Anweisung
1
>while(ADCSRA&(1<<ADSC))// auf Abschluss der Konvertierung warten
ist denn der Teil 'warten' zu finden?
> das ganz tut aber nichts zur sache
Na, wenn du meinst, dann eben nicht.
Sebastian schrieb:> wieso referenzspannung`? Der Aref ist bei mir nicht angeschlossen> die werden mir doch intern gebeben?
Und was sagt das Datenblatt (sprich ATmel dazu)?
Die sagen, dass du als Mindestvorkehrung zumindest einen 100nF
Kondensator nach Masse anschliessen sollst.
naja diesen kondensator hab ich mal drangehängt... geht aber weiterhin
naja mit deine warten anweisung.. versteht ich jezt gerade nicht so ganz
auf dem stk 500 schwanken ja die werte je nach anliegender spannung
und auf meinem board sinds nur 1024
Sebastian schrieb:> naja diesen kondensator hab ich mal drangehängt... geht aber weiterhin>> naja mit deine warten anweisung.. versteht ich jezt gerade nicht so ganz>
du hast 2 Fehler
Den hier
> ADMUX = (REFS0);
ADMUX = (1 << REFS0);
und den hier
> while (ADCSRA & (1<<ADSC) ) // auf Abschluss der> return ADCW;>
while (ADCSRA & (1<<ADSC) ) // auf Abschluss der
;
return ADCW;
korrigiere BEIDE!
Karl Heinz Buchegger schrieb:> Sebastian schrieb:>> wieso referenzspannung`? Der Aref ist bei mir nicht angeschlossen>> die werden mir doch intern gebeben?>> Und was sagt das Datenblatt (sprich ATmel dazu)?> Die sagen, dass du als Mindestvorkehrung zumindest einen 100nF> Kondensator nach Masse anschliessen sollst.
Lustig
Datenblatt Seite 217
REFS0 alleine gesetzt bedeutet "AVCC with external capacitor at AREF
pin". :-)
Sebastian schrieb:> hallo adcx>>> wie meinst du das?
Genau so wie er es geschrieben hat.
Da stehen wir nämlich drauf, wenn Schaltung und Programm nicht
zusammenpassen, du mit Fehlern kämpfst und sich erst im Nachsatz
rausstellt
> die beiden PA 0 und P1 hab ich nur testweise jetzt> angeschlossen..
dass das Board welches vor dir liegt, ganz anders verschaltet ist :-)