Forum: Analoge Elektronik und Schaltungstechnik Spannungsausgabe auf lcd!


von B.K. (Gast)


Lesenswert?

Hallo,

bin grade am assembler lernen nun habe ich das kleine programm aus dem 
tutorial übernommen und statt über den uart auf mein lcd ausgegeben.
Bekomme werte zwischen 0...1023 raus. Nun habe ich das problem, das die 
werte imer springen d.h. bei 5v zeigt er mal 1023 an und mal was ganz 
anderes.

Weiß vielleicht jemand wo mein fehler liegen könnte???

von Frank L. (franklink)


Lesenswert?

Hallo B.K.
poste bitte mal Dein Programm. Meine erste Vermutung, Du wartest nicht 
lange genug. D.h. Du liest den ADC bevor er fertig ist.

Gruß
Frank

von BK (Gast)


Lesenswert?

Hier der relevante Auszug des codes!!!

von BK (Gast)


Angehängte Dateien:

Lesenswert?

Sorry anhang vergessen....

von BK (Gast)


Lesenswert?

Kann mir keine weiter helfen????

von Karl H. (kbuchegg)


Lesenswert?

Beim schnellen Drüberschauen ist mir eigentlich nichts
Grossartiges aufgefallen (was nicht unbedingt viel heissen
mag).

Wenn du springende Werte bekommst, solltest du erst mal
feststellen, ob das ein Software oder ein Hardware Problem
ist.

Ich würde mal folgendes Versuchen:
Stell den ADC Eingang auf 5V. Theoretisch müsste jetzt
vom ADC immer ein Wert von 1023 kommen.
Programmier dir ein Programm, welches folgendes tut:

1)   ADC initialisieren
2)   ADC einlesen
3)   Wert mit 1000 vergleichen
4)   Wenn kleiner als 1000, eine LED einschalten
5)   Weiter bei 2)

Und das lässt du jetzt einfach mal eine Zeitlang laufen.
Wenn irgendwann die LED angeht, dann kam vom ADC ein Wert
unter 1000 und damit hast du nachgewiesen, dass der Eingang
springt ( = Hardwareproblem).
Wenn hingegen nach 1 Stunde, der Wert immer noch nicht gesprungen
ist, dann hat dein richtiges Programm irgendwo ein Software-
problem.


Nur zur Sicherheit:
* Was hast du mit dem AREF Pin des Prozessors gemacht?
* Wie sieht deine Eingangsbeschaltung am ADC Pin aus.

von BK (Gast)


Lesenswert?

Aref liegt über 100nF auf masse.
Als analogwert habe ich ein 100k poti von 5V gegen masse geschaltet.

Und übrigends, wenn der wert springt kommen anstatt des wertes immer 
3en.
Vielleicht kann das den fehler ja weiter eingrenzen.

von BK (Gast)


Lesenswert?

Kann mir jemand vielleicht ein Beispielprogramm zum einlesen einer 
bspannung posten???

von THM (Gast)


Lesenswert?

Liest du evtl. den falschen Pin ein? Die sprechen stark über, wenn der 
Eingang offen ist un liefern dann so einen Effekt.

von TOMTOM (Gast)


Lesenswert?

Aref ist auf intern??? da kannst du ned mit 5v dran

von B.K. (Gast)


Lesenswert?

Nee habe Aref auch nicht auf 5V.
Habe Aref nur zur Sicherheit mit einem 100nF Kond. auf Masse geschaltet.

von B.K. (Gast)


Lesenswert?

Bekomm es einfach nicht hin der digitalwert zittert immer auf dem lcd, 
nimmt also keinen definieren zustan ein. Aber der angezeigte wert ändert 
sich nicht. Irgendwas muss doch mit der oben geposteten software nicht 
stimmen.

Bitte um Hilfe.

Gruß

von B.K. (Gast)


Lesenswert?

Habe den Teiler auf 128 gesetzt nun ist das zittern wech, aber der wert 
springt immer zwischen dem sollwert zb. 00522 und 33333. Wo kommen nur 
diese 3en her?????

von B.K. (Gast)


Lesenswert?

P.S. es muss definitiv an der Softwar liegen da ich das obig genannte 
Testprogramm realisiert habe und der wert nie unter 1000 gegangen ist.

von BK (Gast)


Angehängte Dateien:

Lesenswert?

Hier ist nochmal der Komplette code.

Hoffe mir kann jemand sagen was da los ist.
Bin am verzweifeln.

Gruß

von Gast (Gast)


Lesenswert?

Vielleicht solltest Du AREF zum Test mal auf 5V statt auf GND legen?

von Karl H. (kbuchegg)


Lesenswert?

Er hat doch mit

  ldi temp3, (1<<REFS0)
  out ADMUX, temp3

die interne Referenz ACvv ausgewählt.

Ich würde den Code ja gerne mal ausprobieren. Allerdings
ist es mir ehrlich gesagt zu mühsam, schon wieder in einem
fremden Code die Bits für die LCD Ansteuerung auseinanderzupfriemeln
um zu wissen, wie das Display hardwaremässig angeschlossen werden
muss, bzw. irgendwelche magische Konstanten in irgendwelchen
Delay-Loops nachzurechnen und an meine Taktfrequenz anzupassen.

von B.K. (Gast)


Lesenswert?

Also das display ist im 4 bit modus an Pd0-Pd3, E1 an Pd5, E2 an Pd6, RS 
an pd4, ich habe es für eine Taktfrequenz von 4Mhz programmiert bei mir 
läuft es aber nur auf 1Mhz.

Vielleicht kannst es ja jetzt mal kurz ausprobieren.

Gruß

von µluxx .. (uluxx) Benutzerseite


Lesenswert?

was ich mal hatte, war ganz komisch, ich hatte auf aref ne 5V ref, und 
wollte dann auch übers lcd den übern 10kPoti geteilte wert lesen, bin 
ich über einen best. wert der so ca. bei 45V lag gekommen, bekam ich nur 
noch 0 als wert...ka an was das lag weiß ich bis heute nicht...

von Karl H. (kbuchegg)


Lesenswert?

Hier ...

> outp:
>      ldi temp7, -1 + '0'
>
> a6ser:
>      inc temp7
>      subi adlow, low(10000)
>      sbci adhigh, high(10000)
>      brcs a6ser

... muss es
       brcc a6ser

heissen.
Ich musste dein Pgm etwas verändern, weil ich kein 4 Zeilen
Display habe, aber das sollte es sein.

von B.K. (Gast)


Lesenswert?

Super danke.

Jetzt frage ich mch wie ich eine Tabelle für diese Werte anlegen kann um 
Temperaturen dazustellen.

Kennt jemand vielleicht ein gutes Tutorial für solche Tabellen???

von Karl H. (kbuchegg)


Lesenswert?

B.K. wrote:
> Super danke.

Heist das jetzt, dass das dein Problem gelöst hat?
Wie gesagt: Ich musste dein Pgm etwas verändern um es
auf meiner Hardware laufen lassen zu können.

>
> Jetzt frage ich mch wie ich eine Tabelle für diese Werte anlegen kann um
> Temperaturen dazustellen.
>
> Kennt jemand vielleicht ein gutes Tutorial für solche Tabellen???

Hier
http://www.mikrocontroller.net/articles/AVR-Tutorial:_7-Segment-Anzeige
findest du wie man mit Tabellen arbeiten kann.
Aber ehrlich: Ob ich mir das antun würde eine Tabelle mit 1024
Einträgen auszurechnen und in Assembler runterzucoden.

( :-)
  Spätestens jetzt wäre für mich der Punkt erreicht, wo ich den
  Assembler gegen einen C-Compiler eintauschen würde. :-) )

von B.K. (Gast)


Lesenswert?

Ja nur geht es leider um eine Facharbeit die ich in Assembler schreiben 
muss.
Denke mal mit excel ist so eine Tabelle schnell gemacht.

Gruß

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
Noch kein Account? Hier anmelden.