www.mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik Spannungsausgabe auf lcd!


Autor: B.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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???

Autor: Frank Link (franklink)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: BK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier der relevante Auszug des codes!!!

Autor: BK (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Sorry anhang vergessen....

Autor: BK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir keine weiter helfen????

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: BK (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: BK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir jemand vielleicht ein Beispielprogramm zum einlesen einer 
bspannung posten???

Autor: THM (Gast)
Datum:

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

Autor: TOMTOM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aref ist auf intern??? da kannst du ned mit 5v dran

Autor: B.K. (Gast)
Datum:

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

Autor: B.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: B.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?????

Autor: B.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: BK (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier ist nochmal der Komplette code.

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

Gruß

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht solltest Du AREF zum Test mal auf 5V statt auf GND legen?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: B.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: µluxx .. (uluxx) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: B.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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???

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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-Tutori...
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. :-) )

Autor: B.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.