mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik (Mal wieder) LC-Display!


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

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Nachdem ich jetzt seit Tagen verzweifelt an meinem Display rumschraube, 
weiss ich einfach nicht mehr weiter. Ich hoffe, ihr könnt mir helfen.
Das Display ist ein Displaytech 162C mit 16*2 Zeichen an einem 4433.

Nach dem Einschalten seh ich immer nur einen Schwarzen Balken in der 
Ersten Zeile.
Im Display ist ein KS0070B-Controller drin, ich habe die Initialisierung 
1:1 aus dem Datenblatt.
Danach hab ich die Initialisierung für den HD44780 ausprobiert (Der ist 
ja glaub ich Kompatibel), mit genausowenig Erfolg.

In den Forenbeiträgen hab ich den Hinweis auf mein Problem leider auch 
nicht gefunden. Aber um gleich mal ein paar Fragen vorzubeugen:
Das Display ist korrekt verkabelt (siehe Quelltext)
Es sind keine kalten Lötstellen drin.
Der Kontrast ist richtig eingestellt.

Würde mich freuen, wenn mir jemand mit meinem Problem helfen kann.
Den Quellcode (Hier die Init-Sequenz für den HD44780) hab ich angehängt.

Gruss, Andreas

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andreas!
Sobald du 4Bit Mode anwählst musst du aber auch 2x4 Bit senden. Erst 
High dann Low sonst geht das in die Hosen.
Was hast du mit DB0-DB3 am Displ.gemacht?
Sind hoffentlich auf GND
Gruss Uwe

Autor: Josef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Uwe hat recht !
Software für 4-Bit-Ansteuerung ist im Netz.



sg Josef

Autor: AndreasG (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ähh, das mach ich doch, oder?
In meinem Register sind die obersten 2Bits 00, dann kommt RS und RW und 
danach 4 Datenbits. Was genau mach ich falsch?
DB0-3 ist auf GND.

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
ldi temp,0b00000010     ; 4-Bit Mode 2*
  out lcdport,temp
  rcall delay
  rcall lcd_clock
  rcall delay
  rcall lcd_clock
  rcall delay
bis jetzt OK
  ldi temp,0b00001000  ; Irgendwas anderes
  out lcdport,temp
  rcall delay
  rcall lcd_clock
  rcall delay
Aber jetzt sehe ich nur Das Lownibbel an deinem Displ.Wo sind die oberen 
4 Bit? Wann werden die ausgegeben?

Ganz grob sollte es für dich so aussehen
ldi temp,0b00001000  ; Irgendwas anderes
swap temp ;obere 4Bit nach unten weil zuerst senden
out lcdport,temp
rcall delay
rcall lcd_clock
rcall delay
swap temp ;nun zurück und untere 4Bit senden
out lcdport,temp
rcall delay
rcall lcd_clock
rcall delay

Dabei darf temp zwischen den Ausgaben nicht verändert werden. In der 
Codesammlung sind einige Beispiele zu finden.
Gruss Uwe

Autor: AndreasG (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Mit deiner Lösung verändere (tausche) ich doch auch die Bits RS und RW. 
Die darf ich doch dabei aber gar nicht verändern, sondern nur die 
Datenbits.

Ich versuche hier eigentlich nur die Init-Sequenz, wie sie in dem 
Datenblatt angegeben ist, nachzubauen. (Siehe Datenblatt hd44780, Seite 
43 mit Anpassung auf 2-Line). Aber warum das nicht funktioniert, hab ich 
noch nicht so ganz ergründet.
Ich werd am Wochenende auf jeden Fall mal meinen Quelltext überarbeiten, 
und sag euch dann obs funktioniert.

Gruss, Andreas

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Ich schrieb ja auch "ganz grob" solle es so aussehen.
Vermutlich wirst du den Stack bemühen oder anders zwischenspeichern wenn 
du RS / RW mit ausgeben willst.
Gruss Uwe

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

Bewertung
0 lesenswert
nicht lesenswert
hmm, also ganz grob weiss ich wie du das meinst :-)
Allerdings berücksichtigt die Init-Sequenz aus dem Datenblatt eigentlich 
den 4-Bitmodus, wenn ich das richtig verstanden hab. Und daher sollte es 
eigentlich stimmen - nur funktionieren tuts nicht.

Ich hab jetzt mal den Code aus dem LCD-Tutorial an meine Ports angepasst 
(hängt an). Damit hab ich genau das gleiche Problem. Könnte den jemand 
mal kurz auf Fehler prüfen? (Die Original-kommentare stimmen manchmal 
nicht mehr ganz) Mein 4433 läuft mit 8MHz, die Pinbelegung ist in der 
Datei drin.

Angezeigt wird auf meinem Display gar nichts. Die erste Zeile ist leicht 
angegraut (je nach Kontrast, praktisch das Hintergrundgrau eines LCDs, 
nicht aktiv schwarz). Die zweite Zeile ist ganz leer und reagiert auch 
nicht auf den Kontrast. Ist vielleicht mein LCD tot?
Freu mich über jede Hilfe -
Danke

Andreas

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
Also wenn ich nicht irgendwas übersehen habe sollte es jetzt gehen. 
Warum es trotzdem nicht tut ist mir momentan ein Rätsel.
Gruss Uwe

Autor: AndreasG (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, also du meinst, der Code ist ok?
Dann werd ich jetzt wohl mal alles ablöten, und nochmal gemäss der 
Belegung hier im Tutorial dranlöten (und alle Kabel tauschen).
Falls das nix wird, bleibt mir ja eigentlich nur noch, das Display als 
Schrott abzubuchen. Der Reichelt wirds mit Lötstellen drauf bestimmt 
nicht wieder haben wollen...

Danke für deine Hilfe,
Gruss, Andreas

Autor: Siegfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist die Kontrastleitung richtig verschaltet?

Siegfried

Autor: Hermann Kraus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Ich habe das gleiche LCD (162C LED, hat noch ne Hintergrundbeleuchtung)
@Siegfried: Das mit dem Kontrast müsste passen. Wenn da in der ersten 
Zeile leicht was graues erscheint, stimmt das so. Warum die 2.te Zeile 
da nicht aktiv wird ist mir auch ein Rätsel, aber bei mir schauts 
genauso aus.
@AndreasG: Pass unbedingt auf, das du keine Kontakte mit den Fingern 
berührst!!! Das reicht bei mir schon aus um gewaltige Fehler zu 
produzieren. Auch kannst du mal versuchen deine Schaltung ein paar mal 
zu reseten, oder sie mal mit Batterien anstatt einem Netzteil zu 
speisen.
Wenn du den Code aus dem Tut nimmst:
Die Warteschleifen musst du unbedingt verdoppeln, da das Prog. auf 4Mhz 
ausgelegt ist. Etwas mehr Wartezeit (besonders bei Powerup) kann nicht 
schaden! Bei mir hat's öfter mal Probleme gegeben, weil die Daten zu 
schnell gekommen sind.
Wenn du das Orginaldatenblatt zu exakt diesem Display brauchst kann 
ich's auch mal posten, steht aber eigentlich nicht viel neues mehr drin.

Autor: phagsae (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI
Andreas

Ist dir eigentliche folgende Zeile in deinem Prog aufgefallen ????


loop:
           rjmp loop


Alles klar ?

Autor: Cabal2002 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ist dir eigentliche folgende Zeile in deinem Prog aufgefallen ????
>
>loop:
>rjmp loop

Werd doch bitte etwas deutlicher zu so fortgeschrittener Stunde ;-)
Ich kann dir grad nicht folgen. Das ist der Code ausm Tutorial und der 
hat bei mir prima gefunzt.
Sorry falls ich irgendwie aufm Schlauch stehe.

Gruss Cabal

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo ist das Problem an loop: rjmp loop? Wird doch erst ganz am Ende des 
Programms ausgeführt.

Autor: phagsae (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
Der eine und der andere Andreas


Missverständniss !
Naja hätt ich auch schreiben können dachte aber es wird klar wenn ich 
mich auf  AndreasG beziehe und sein Lcd-test.asm
vom 27.10

Und da steht das wirklich so drin

Da kann mann lange über init sequenzen grübeln :-)


Phagsae

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bezog mich auch auf den Beitrag von AndreasG, und in seinem Programm 
kann ich keinen Fehler erkennen.

Autor: phagsae (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok...ok...ok...

Wenn man kein Ahnung hat sollte man einfach mal die Klappe halten :-)

( damit meine ich jetzt mich )

Eingerückten code erfasse ich sofort als sub funktion und das wahr ja 
wohl keine.

Macht der init Anfang nicht auch Probleme ??
Müssen nicht die Funktionen deklariert werden bevor das prog sie Aufruft 
oder ist das jetzt nur in C so ?

egal....

Was wirklich nicht stimmt ist die init sequenz.

Die lautet für 4 bit 2 zeilig  bei KS070 und dem hd44780 wie folgt

RS/RW/D7...D4
>30ms    ( hd44780 hier längere wartezeit

000010
000010
0010XX  ( 2 zeilen & 5*7 dot )
#
#000010 ( 1 zeile & 5*10 dot ) > nicht!!! 3mal 000010
#

>39us

000000
001110  = ( disp on  curs off  blink off )

>39us

000000
000001 = Disp. clear & on

>1,53ms

000000
000110 = ( incr on / shift off )



fertig

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
@phagsae: Lese bitte erstmal das Datenblatt bevor solchen Müll postest. 
Sein Init ist eigentlich richtig.

Das einzige wo ich mir nicht ganz klar drüber bin ist die Zeile: ldi 
temp1, 0b00000100        ;endlich fertig
Bleibt die Movedirektion eigentlich erhalten? Sie ist ja momentan 
negativ. 0b00000110 wäre "+" . Ich persöhnlich habe sie noch nie im 
"Init" gehabt und es geht trotzdem.
Mit:

Wait >15ms
3x $28 mit >4,1ms Pause
$0C ;Displ.on/Kurs.aus ($0e mit Kursor)
$01 ;Anz.auf 1.Zeichen + Displ.= cls

hatte ich bis jetzt immer gute Erfolge. Zwischen den Ausgaben sind bei 
mir aber grundsätzlich um die 5ms Pause
Aber das hat Andreas ja alles, bis auf die Movedirection.
Gruss Uwe

Autor: AndreasG (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ui, hier is ja richtig was los auf einmal :-)
Die Kontrastleitung ist definitiv richtig verschaltet. Ich hab da ein 
Poti dran.

@Hermann: Ich hab auch das 162C mit LED. Das Datenblatt ist dieses 
2seitige von Displaytech, oder? Da steht ja nicht wirklich viel drin. 
Meine Warteschleifen hab ich schon alle grosszügig auf ff gerundet. Ich 
werd sie aber trotzdem nochmal verdoppeln. Deinen Tipp mit der 
Stromversorgung probier ich morgen auch gleich mal aus.

@Uwe: Das mit dem Move hab ich doch tatsächlich übersehen. Macht zwar im 
Momentanen Funktionszustand meines Progs nich viel aus, werd ich aber 
auf jedenfall anpassen.

Was mir gerade noch einfällt: Könnte das eventuell an den Leitungen 
(Kapazität) liegen? Ich hab ca. 10cm 0.22mm² Litzen für das Display 
reingelötet.

Gruss, Andreas

Autor: phagsae (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Uwe

Jetzt ohne zu Streiten.

1. Es geht hier um 4 bit Ansteuerung und 2 Zeiligen modus OK ?

2. Das Beispiel im Hitachi Hd44780
Manual beschreibt 4bit aber !!!! nur 1 zeiligen Modus
( Steht fett und breit drüber)

OK ?

3. Im KS0070 Manual ist 4bit in allen Varianten Beschrieben
Und da ich Manuals lese ( wunder wunder ) sind die ersten drei schritte 
die wichtigsten um in den 2 zeiligen modus zu schalten
und die lauten s.o

OK ?
wenn man keine ........


Phagsae

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
@phagsae: Schaue dir bitte "Figure 26 4-Bit Interface"
im Datenblatt an, dann schauen wir mal.

Die Leitungen sind kurz genug.
Ich habe mal festgestellt, wenn du dem HD44780 genügend Zeit beim 
Poweron lässt reicht eine einzige Übertragung statt 3 am Anfang. Nicht 
das dein HD... den 8Bit Modus aktiviert. mache mal das Init nicht mit:
ldi temp1, 0b00000011 ;muss 3mal gesendet weden
sondern mit
ldi temp1, 0b00000010 ;muss 3mal gesendet weden
es entspricht ja dem 4 Bit Modus, obwohl es ja nicht so im Datenblatt 
steht. Ich mache es ja eigentlich auch so.
Also wenn es jetzt nicht hinhaut, ein einzeiliges Displ. ist noch da, 
das klebe ich ans STK und teste es einfach mal aus.
Gruss Uwe

Autor: phagsae (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Uwe

Klar kenn ich:

Wenn man zusätzlich einen Externen LCD reset benötigt dann
schickt man ein 0000011 Triplet ---VOR--- der eigentlichen init sequenz 
raus.

Nur wer braucht sowas ?
Das gilt für den fall das die Betriebsspannung nicht in der festgelegten 
zeit über 4,5 V kommt ( selten glaub ich )

Zumal der modus des externen Resets nicht im KS0070 implementiert ist.
Sofern man inkompatibele Lösungen vorzieht -- nur zu.

Danach gehts weiter s.o.

Also wenn schon externer reset-
Dann aber auch richtig weiter sonst ist der allemal für die Hasen.

Fakt ist einfach
nach dem LCD reset ( ob jetzt intern oder extern )

führt eine
000010
000010
000010
zu folgendem Ergebnis
1 Zeile 5*7dot

Im dritten schritt des triplets muss das N flag auf 1 und
und
( aus erfahrung ist nicht beschreiben )
das F Flag auf 5*7 gesetzt werden

F= DB6 N = DB7
Bei 000010 oder 000011 ist das auf keinen Fall erfüllt oder ?

Alle versuche 2 zeilig in den 10er mode zu kommen führen zu einer
1 Zeiligen ausgabe

Oder nochmal ganz anders :

Bei mir schaltet das 162F in den zweizeiligen Modus
( siehe Codesammlung )
Und das in bestem einvernehmen mit dem Manual.- sorry

Phagsae ( der nicht immer nur müll postet )

Autor: Hermann Kraus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, ich glaube ihr redet hier alle am eigentlichen Ziel vorbei:
>Nach dem Einschalten seh ich immer nur einen Schwarzen Balken in
>der Ersten Zeile.
Das klingt fast so, als ob überhaupt kein Text angezeigt werden könnte. 
Es ist also egal in welchem Modus das Display ist. Hauptsache mal 4bit.
Es bringt nichts wenn ihr euch hier beschimpt. Sucht lieber mal nach 
lösungen für das Problem!
Meiner Meinung nach handelt es sich um ein Hardwareproblem, weil ich das 
gleiche Display habe und bei mir der Code aus dem Tutorial prima 
funktioniert hat(mit längeren Warteschleifen, s.o.)

@AndreasG: Wenn du ein Osziloskop hast schau mal ob überhaupt die 
Signale ankommen. Mit langgenugen Warteschleifen geht das auch mit nem 
normalen Multimeter. Ich hab mal eine C-Lib angehängt, die ich mit Hilfe 
des Datenblattes erstellt hab.
Beispielsprog. für GCC: (Sollte so funktionieren, hab's leider nicht 
testen gekonnt)
#include <io.h>
#include <stdlib.h>
#include "lcd.h"
int main(void)
{
 lcd_init();
 lcd_print("ZEILE 1");
 lcd_set_dram(line_two);
 lcd_print("zeile 2");
 for (;;) ;
}
Wenn du noch keinen GCC hast, kann ich auch mal das Binary posten.

Hermann

Autor: Hermann Kraus (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hab vergessen das File anzuhängen, hier ist es!

Hermann

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

Bewertung
0 lesenswert
nicht lesenswert
Ich hab jetzt eure Vorschläge getestet. Die längeren Warteschleifen 
bringen nichts.

@Uwe: Deinen Init hab ich auch mal probiert. Ich nehme an, dass hier 
jeweils erst das high-nibble und dann low gesendet werden muss. Leider 
auch keine Funktion.

> Wait >15ms
> 3x $28 mit >4,1ms Pause
> $0C ;Displ.on/Kurs.aus ($0e mit Kursor)
> $01 ;Anz.auf 1.Zeichen + Displ.= cls

Eigentlich sollte jetzt ja wenigstens der Cursor blinken (mit $0e). Tut 
er aber nicht...

> ldi temp1, 0b00000010 ;muss 3mal gesendet weden

Das bringt auch nix.


@Hermann: Ich habe leider kein Oszi zur Verfügung. Ich werds mal mit dem 
Multimeter versuchen.
GCC hab ich noch nicht, ich wollte mich eigentlich erst mit C 
beschäftigen, wenn ich die ganzen Grundsätze (IO, Timer/Counter, ADC, 
Interrupts...) in asm verstanden hab. Wär super, wenn du mir das Binary 
posten könntest. Kannst du das bitte schnell auf meine Pinbelegung 
anpassen? Der Datenport müsste passen, nur in der Funktion lcd_enable() 
weis ich nicht, was ich ändern soll. Mein Enable-Pin liegt auf PB0. RS 
ist auf PC5, dafür sollte glaube ich die OR-Maske auf $20 geändert 
werden. (4433@8MHz)


@Phagsae: Dein Privatkrieg mit Uwe ums rechthaben hilft uns hier nicht 
viel weiter.
Deinen Beitrag aus der Codesammlung hab ich auch schon probiert. 
Allerdings mit genau dem selben Ergebnis wie alle anderen Versuche auch.
Für was ist denn das T-Flag gut? (Nicht in deinem Prog, sondern im 
allgemeinen)


Ich habe das Display jetzt mal ohne AVR getestet. Das Ergebnis ist, dass 
genau wie bei allen anderen versuchen die erste Zeile leicht angegraut 
dargestellt wird. Was sollte da normal passieren?

Ich hab das Init nochmal exakt nach dem Datenblatt für den KS0070B 
gebaut (hängt an). Damit kann man ja eigentlich keine Fehler machen 
(siehe Seite 32). Das will aber auch nicht.

Andreas

Autor: Hermann Kraus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Mein Enable-Pin liegt auf PB0. RS ist auf PC5, dafür sollte
> glaube ich die OR-Maske auf $20 geändert werden.
Warum hängst du dein Display an zwei verschiedene Ports? Das ist 
normalerweise nicht so sinnvoll, weil du dann ja immer auch an 
verschiedene Ports ausgeben musst. Und wenn die restlichen Pins eines 
Ports mal für was Anderes benutzt werden, kann es schnell passieren das 
es zu Problemen kommt, weil du vergessen hast dass da noch was daran 
ist.
Ich hab mir ein Board gebaut, dass so ähnlich ist wie das STK500, nur 
alles fest verkabelt und viel billiger. Wäre evtl. auch für dich 
sinnvoll. Dann gibt's keine Probleme mit doppelter Belegung.
Kurze Beschreibung:
Port A: 8 Taster + Tastaturbuchse laut App Note von Atmel + 
Steckverbindung für die Serielle Schnittstelle
Port B: LED-Bargraph + Programmeranschluss
Port C: 8Pol. Steckverbindung zum Anschluss des LCDs, bzw. anderer 
Zusatzplatinen
Spannungsversorgung: 7805 mit 22µF-Elko und 2x0,01Kondensator in der 
Eingangs- und 2x0,01Kondesator in der Ausgangsleitung(wird bald durch 
einen LM2825 ersetzt).
Oszi: 8,000MHz von Reichelt
Aufgebaut auf Lochraster
Damit läuft bis jetzt alles wunderbar. Also überleg dir erst mal ein 
sinnvolles Layout und Anschlussbelegung. (Soll jetzt keine Kritik 
sondern nur ein Hinweis wie du Probleme vermeidest sein.)

Das Binary ist noch nicht fertig. Ich muss es erst an die 2 
verschiedenen Ports anpassen. Ich werde aber heute warscheinlich nicht 
mehr dazu kommen. Sorry.

Hermann

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Also dein Prog. ist 100% io.,habe alle Tests gerade gemacht, auch 2 
Zeilig haut hin!
Bitte fange 100% mit 3x 0x00000011 an, nur 0x00000010 bringt manchmal 
Fehler weil beim Einschalten das Port meist wegen Pull Up auf High 
steht. Wenn jetzt die Ausgänge aktiviert werden kommt eine LH Flanke und 
das Disp. liest Müll.
Aber das erste was mir aufgefallen ist: Du hast RS und RW über Kreuz an 
Port C! Ist das bei dir auch so?
Mit was testest du die Geschichte, mit einem Bord?
Wenn ja hast du bedacht das Port C das Analogport ist und dehalb auch 
bei analog dein Disp. drann muss? Ich hatte es jedenfalls übersehen. 
Auch Port B ist bei mir verschoben (STK200)Sowas übersieht man recht 
schnell.
Hast du nicht wenigstens ein Multimeter mit TTL-Piepser, die Impulse 
sind hörbar.
Also wenn das jetzt alles nicht hilft ist dein Displ. vermutlich def.

Gruss Uwe

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
a propos Port C: sind AGND und AVCC angeschlossen?

Autor: phagsae (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin moin

@Hermann
Das mit dem Pinout ist wohl ein kopie meines Pinouts
( ist aus meinem prog rauskopiert) und insofern
Hat das schon sinn wenn man sich mal den 4433 genauer anschaut.
PortC ist der mit den wenigsten Sonderfunktionen.
Allerdings nur 6bit breit.
Also liegt es nahe diesen zu verwenden vorallen wenn man noch die
SPI und den UART benötigt




@AndreasG

Phagsae: Dein Privatkrieg mit Uwe ums rechthaben hilft uns hier nicht 
viel weiter.

Als Antwort eine Kopie von oben:
"@phagsae: Lese bitte erstmal das Datenblatt bevor solchen Müll postest. 
Sein Init ist eigentlich richtig."

Nach so einem Text - ohne uwe vorher irgendwie
" auf die füsse zu treten "
Binn ich durchaus in Privatkrieg laune

Allerding meine ich das ich bisher sehr nah am eigentlichen technischen 
problem geblieben binn.

Wenn der init nicht klappt was soll man sich dann zunächst Gedanken über 
den rest machen ?

Wenn das Display in den 2Zeiligen Modus wechselt siehst du 2 schwarze 
durchgehende Balken - sofern der Kontrast auf maximum gestellt ist


Sollte das mal der fall sein würd ich den rest des programms auf fehler 
überprüfen.

Deinen Beitrag aus der Codesammlung hab ich auch schon probiert. 
Allerdings mit genau dem selben Ergebnis wie alle anderen Versuche auch.

Meinst du jetzt das orginal oder das was du draus gebastelt hast ?
--> lcd3.asm ?


Für was ist denn das T-Flag gut?
Gute Frage: Für was ist das wort "hirntotes Fruchtgummi" gut ?

Das T-Flag ist das 7.bit des Status Registers und wird von keiner 
Operation des µC beeinflusst.
Es kann aber frei gesetzt und gelöscht werden
Und des gibt 4? befehle die auf dieses Flag reagieren.

Eine unter tausend möglichkeiten ist zb die parameterübergabe
an eine Sub funktion ohne ein zus. Register zu brauchen.
( Die werden ganz schnell höllisch knapp wenn man nicht aufpasst zumal 
ja nur die oberen >16 mit allen befehlen arbeiten )


PS:

Das erste triplet scheint ja nun in ordung zu sein
Aber !! wenn zu lange gar nicht passiert schaltet das LCD von selbst in 
einen voreingestellten Modus  8bit/1Zeile
Ich hab jetzt keine ahnung wann das passiert >1sec ? aber viel länger 
als 50ms nach dem power on würd ich nicht warten

Die folgenden drei befehle müssen immer mit einem
$00 eingeleitet werden -> Datenblatt 4bit
zwischen diesen Datensatz braucht man keine pause einlegen

also:

ldi temp1,$00;rcall lcd_enable
ldi temp1,0b001100;rcall lcd_enable
delay
ldi temp1,$00;rcall lcd_enable
ldi temp1,0b000001;rcall lcd_enable
delay
ldi temp1,$00;rcall lcd_enable
ldi temp1,0b000010;rcall lcd_enable
delay


Phagsae

Autor: AndreasG (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hermann:
Im moment is eigentlich egal, wo ich das Zeug anschliess, da ich erst am 
Probieren bin. Ich möchte nur die Grundlagen durchtesten, und dann 
überleg ich mir eine sinnvolle Anschlussbelegung, die alles 
berücksichtigt, was ran soll. Und da das jetzt eh alles verändert wird, 
wollte ich kein vollständiges Board aufbauen.
Mach dir bloss keinen Stress mit dem C-Binary. Nachdem ich 4 Monate auf 
meinen µC gewartet hab, kommts auf ein paar Tage auch nicht an :-)
Danke!


@Andreas S.:
ja, is dran.


@Uwe:
Ich hab mir da auf ner Lochrasterplatine ein Mini-Board aufgebaut.
Ich hab beide Versionen (0b00000011 und 0b00000010) getestet.
> Wenn ja hast du bedacht das Port C das Analogport ist und dehalb auch bei analog 
dein Disp. drann muss?
Äh...?
Ich glaub ich löt das erst mal an nen anderen Port und teste das Prog 
aus dem Tutorial nochmal.


@Phagsae: Dann trag deinen Privatkrieg woanders aus.
> Gute Frage: Für was ist das wort "hirntotes Fruchtgummi" gut ?
Wenn ich dir IRL gegenüberstehen würde, hätte ich mich spätestens jetzt 
umgedreht und wäre gegangen. Ich hab keine Lust auf deine agressiven 
Anfeindungen. Also mässige dich bitte oder lass uns in Ruhe, egal wie 
kompetent du sein magst!

Und jetzt wieder zum Thema:
Danke für deine Erklärung zum T-Flag.
>Wenn das Display in den 2Zeiligen Modus wechselt siehst du 2 schwarze 
durchgehende Balken - sofern der Kontrast auf maximum gestellt ist
Es wechselt ja anscheinend gar nie in den 2-Zeiligen Modus.
>Meinst du jetzt das orginal oder das was du draus gebastelt hast ?
Beides.
>Die folgenden drei befehle müssen immer mit einem
>$00 eingeleitet werden -> Datenblatt 4bit
>zwischen diesen Datensatz braucht man keine pause >einlegen
Ich kann Datenblätter lesen.

Andreas

Autor: phagsae (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@AndreasG
> Für was ist denn das T-Flag gut?
> Gute Frage: Für was ist das wort "hirntotes Fruchtgummi" gut ?

Ob Du es glaubst oder nicht das sollte beim lesen egentlich erheiternd 
wirken.

Hätte natürlich auch Tisch;Stuhl oder was anderes schreiben können
"Hirntotes Fruchtgummi" als Wort an sich find ich aber echt lustiger.
IRL denke ich hättest du geschmunzelt.

Im klartext die Frage ist so gestellt das man sie eigentlich nicht 
beantworten kann also hab ich ein bischen rumgeblödelt.

Nimmst du alles so bierernst oder hast du dich mit dem
"Fruchtgummi" identifiziert ?

Oder meinst Du erst beleidige ich dich dann mach ich mir die mühe eine 
Erklärung zum T-Flag zu schreiben ?
D i e s e Variante find ich jetzt eigentlich unlogisch.

So jetzt noch kurz zum Datenblatt Thema.
Nein ich nehme nicht an du kannst keine Datenblätter lesen.
( hab ich das irgendwann geschrieben zu irgenjemand hier? )

!!!! Die folgenden zeilen enthalten eine logelei!!!!!
Allerdings hab ich diese Befehlsfolgen die für den 4 bit modus richtig 
währen nicht in deiner letzten version vorgefunden das legt den verdacht 
schon nahe das sie fehlen -- oder?
!!! Das ist humor !!!

Nein!- Das musst Du nicht lustig finden
Ja  !- Ich finde sowas lustig
Ja  !- Es steht dir frei sowas niveaulos zu finden
Ja  !- Das macht mir eigentlich nicht aus
Ja  !- Ich finde den Unterton hier schon manchmal etwas geladen

Was währe besser immer gleich ein RTFM?
( Read The Fucking Manual )

So wenn man alles falsch verstehen will muss ich jetzt erleutern :
Die zusatzzeile () hab ich nur für den fall geschrieben
dieses akronym währe Dir nicht geläufig wovon ich natürlich nicht 
ausgehe.
Ich gehe ausdrücklich davon aus das Du es kennst.

.....wird ganz schön komliziert nicht ?


Also ich halte mich jetzt komplett raus

Phagsae

Autor: Hermann Kraus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@phagsae:
1.
> Das mit dem Pinout ist wohl ein kopie meines Pinouts ( ist aus
> meinem prog rauskopiert) und insofern
> Hat das schon sinn wenn man sich mal den 4433 genauer anschaut.
Ich hab noch nie ein Programm von dir angeschaut. Einfach weil ich bei 
Programmieren selten Hilfe brauche, sondern eher bei Hardwaredesign, 
weil ich doch noch relativ neu bin und noch nicht so viel Erfahrung mit 
den ganzen ICs habe. Beim Aufbau des Boards habe ich mir einfach 
überlegt, was wohinpasst, welche Pins ich evtl. noch in einer anderen 
Belegung brauche, etc.
2. Dein letztes Posting war ziemlich sinnlos(von technischer Seite). Es 
wurde nur über das Verhalten der anderen geschimpft und nichts zum 
eigentlichen Problem beigetragen.
@Andreas Schwarz:
>a propos Port C: sind AGND und AVCC angeschlossen?
Ist das wirklich nötig, wenn man den Port für die digitale Ausgabe und 
nicht als ADC verwendet. Bei mir läuft das seit Wochen ohne Probleme!
@AndreasG:
>Nachdem ich 4 Monate auf meinen µC gewartet hab, kommts auf ein
>paar Tage auch nicht an :-)
Wo hast du den bestellt? Bei Reichelt hat's ein paar Tage gedauert.(ur 
für meinen Kumpel, der bei mir mitbestellt hat, als ich was reklamieren 
musste, dauerts etwas länger, der wartet jetzt seit ca. 3Wochen auch den 
4433, weil Reichelt meine Rücksendung verschlampt hat und dann der 4433 
auch noch nicht vorrätig war. Sollte aber Montag oder Dienstag kommen. 
Also 4 Monate sind doch extrem lang!
>Ich glaub ich löt das erst mal an nen anderen Port und teste das
>Prog aus dem Tutorial nochmal.
Soll ich das Programm dann überhaupt anpassen und wenn ja, auf welchen 
Port?
Hast du evtl. Freunde, von denen du dir ein Display mit dem gleichen 
Controller leihen könntest. Oder hast du schon mal die Anleitung für den 
Parallelportanschluss am Computer mit deinen Display ausprobiert. Wenn's 
da auch nicht geht würde ich sagen es ist kaputt.
Zum Vorschlag von Uwe:
>Hast du nicht wenigstens ein Multimeter mit TTL-Piepser, die
>Impulse sind hörbar.
Wenn du kein solches Multimeter hast(ich hab auch keins):
So ein kleiner Hochtonlautsprecher(zieht nicht viel Strom), wie der aus 
Uhren, etc. müsste doch auch gehen. Findet sich evtl. in irgendeinem 
Gerät, dass du nicht mehr brauchst, oder du hast sowieso welche 
rumliegen. Wenn das nicht geht korregiert mich bitte! Ich hab's noch 
nicht versucht, mach's aber bald.

Wenn du feststellen solltes, das wirklich nicht's hilft, schick das 
Display einfach zurück. Bei Reichelt gibt's da normalerweise keine 
Probleme.

Hermann

Autor: AndreasG (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hermann
Schick mir einfach das Binary und die Pinbelegung, dann verlöt ich das 
entsprechend. Danke!

Bestellt hab ich erst bei Conrad. Der hat mich dann 1,5 Monate 
vertröstet und dann geschrieben, dass es die Dinger bei ihm nicht mehr 
gibt. Ich soll doch neu bestellen. Das hab ich dann auch - bei Reichelt. 
Nach 2 Wochen: Hammer net, bitte in 2 Monaten neu bestellen. 
Schlussendlich hab ich sie dann bei Wolfgang Rompelt, auf den ich hier 
im Forum gestossen bin, bestellt. Er hat dann auch prompt geliefert... 
(wenn ichs nachrechne warns ca 2,5 Monate)

Ich hab ein Multimeter mit Diodenprüfer. Müsste eigentlich immer Piepen, 
wenn der Port auf Ausgang ist und Log 0 führt. Ich teste das gleich mal.

Andreas

Autor: AndreasG (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es funktioniert!

Ich weiss nicht, wie oft ich die verdammte Pinbelegung gecheckt hab. Und 
genauso oft hab ich übersehen, dass irgend ein Idiot EN an PD6 gelötet 
hab. Da kann man natürlich lang probieren.

Als Ergebnis der Geschichte kann ich zusammenfassen:
1. Traue deinen Augen nicht!
2. Benutze ein Messgerät!
3. Lass jemand anders die Pinbelegung nochmal prüfen!

Ich bedanke mich bei allen, die mir geholfen haben und möchte mich 
nochmal für den total blöden Fehler entschuldigen!

Gruss, Andreas

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich sage es ja
manchmal sieht mann den Wald vor lauter Bäumen nicht!

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.