Spannungsausgabe auf lcd!

Gast #698709
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???
#698887
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.
Gast #698907
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.
Gast #702570
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ß
#704794
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.
Gast #704908
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ß
#705027
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. :-) )

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren