PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Brauche dringend Hilfe zu Programm



malius
30.05.2005, 23:35
Hallo !
Kann mir jemand sagen was ich bei diesem Programm falsch mache.
wenn ich den wert des AD-Wandlers übers terminal auslese, schreibt dieser immer den Wert 268.
Obwohl ich die Vin Spannung an ADC0 abhänge.
ich verwende CodeVisionAVRund den Atmega128.
BITTE BITTe wer kann mir da weiterhelfen.
Der Code ist unter Attachment beigefügt.

Danke!

recycle
31.05.2005, 01:39
Da ich den Code vermutlich eh nicht verstehen würde, habe ich ihn mir nicht angesehen.
Das Problem selbst kommt mir aber bekannt vor. Bei mir lags immer dran, dass ich vergessen ahbe die internen Pullups zu aktivieren, bzw. zu deaktivieren. Könnte das bei dir auch die Ursache sein?

malius
31.05.2005, 15:42
werde das gleich mal checken !
Danke für den hinweis
recycle

malius
31.05.2005, 16:27
Hab da mit den Pullups abgecheckt!
Leider war das nichts, es ändert sich nichts bei AD-Wert.

Ich habe keine Ahnung was ich falsch mache.

PicNick
31.05.2005, 17:01
Hi, in deiner Routine readadc ()
kommt vor:

return ADCW;

Hol die die Werte sicherheitshalber einzeln in der richtigen Reihenfolge (->Datenblatt)
und gib sie dann erst zurück
Ich merk mir die richtige Folge nie, aber es ist heikel, das ist sicher.

malius
31.05.2005, 17:14
Hallo Robert!
ich bin noch ein Anfänger in diesem bereich, kannst du mir einen Tipp geben wie ich mir die Werte einzel zurückhole.
vielleicht mit ADCL bez ADCH liege ich da richtig.

Danke im Vorraus für alle brauchbare Tipps.
mfg Malik

PicNick
31.05.2005, 17:24
Ja, genau.
unsigned short wVal;
wVal = ADCL;
wVal += ADCH << 8;
oder
wVal = ADCH << 8;
wVal += ADCL;
return (wVal);
}
adcl oder adch MUSS man zuerst lesen (nachschauen)

malius
31.05.2005, 17:28
Das seltsame ist ja wenn ich die Spannung am ADC0 (kannal 0) abhänge bleit der Wert trotdem bestehen.
Kann es sein das es gar nicht der AD-WERT ist?
oder ist der AD-wandler def.?
Es ist mir noch was aufgefallen wenn ich die codezeile "CO Wert ausgeben" ,oder auch sonst eine Zeile deaktiviere ändert sich der Wert
z.b. von 268 auf 261, aufjedem Fall wird der Wert weniger.

was kann das sein?
Hat vielleicht jemand ein Beispielcode für den AD mit der ausgabe des Wertes auf Uart. Es gibt etliche beispiele im internet mit div. Makefiles, nur wie gesagt ich verwende CodeVisionAVR und ich kenn mich leider nicht so gut aus mit makefiles.
wäre echt toll wenn jemand ein Code für Atmega128 hätte.
Habe bald Matura und die Zeit läuft mir davon.

mfg malik

malius
01.06.2005, 22:47
Hallo,
habe den fehler selbst gefunden, es lag am C-code selber.
hatte vergessen von welche kanal er den wert lesen soll.

value=read_adc(0).....habe die Null total vergessen.

Aber Danke an alle
MFG
malius