Hallo! Zunächst noch: 1) STK läuft mit externem 8 MHZ Quarz 2) Initialisierungsroutine vom Datasheet des EA DIP162 übernommen und BEIDE Varianten probiert: Einmal mit der in dem Tutorial empfohlenen 3 mal 00110000 (fals das Gerät schon im 4 bit modus ist) und auch ohne probiert. 3) Verkabelung mehrfach geprüft und auch, wegen Fehlern, umgelötet und daher alle Pins einzeln eingeschaltet und mit dem Multimeter geprüft. Auch die Benachbarten Pins geprüft. (Übersprechen) 4) Eine Woche das Forum umgegraben aber entweder wurde ein anderes Problem besprochen oder die links waren veraltet. 5)Pins in der Dokumentation vom Atmega8 gecheckt ob da vielleicht mit dem STK eine kollision vorherscht. Und? Ja nix! Es passiert nix! Um sich ein bild von der gradezu lächerlichen Situation zu machen: Das Programm war mal für einen 8 bit LCD ausgelegt und spuckte Daten eines GPS aus. 1) Es ist mir ein Rätsel wie ich das denn bitteschön hinbekommen habe wenn ich an einer initialisierung KLÄGLICH scheiter. 2) Und jetzt kommts: Als ich das etwas umgemodelte 8 bit programm mit falscher (!!!!) Belegung von Pin 4-7 startete passierte etwas. Nichts was nachvollziehbar war aber immerhin waren lustige Anfürungsstriche auf dem ganzen Display verteilt und der Cursor blinkte mal hier und mal da. Das aber nur am Rande. Es könnte ja jemanden amüsieren. ;-) Nach einer starken Beruhigungstablette und 2 Bier bin ich nun in der Lage dieses posting zu erstellen und bitte: (Wenn alle mit dem Lachen oder auch mit den genervt verdrehten Augen fertig sind) Schaut doch bitte mal drüber! Vielen Dank!
Attila, der vermutlich entscheidende Fehler ist die fehlende Initialisierung von PORTD. Irgendwo musst Du dem armen ATmega erklären, welche Pins Ein- und welche Ausgänge sein sollen. Auch sonst gibt's an Deinem Programm noch allerhand zu verbessern: Wenn Du jemals Interrupts verwenden willst, dann solltest Du schon jetzt die Interrupttabelle einstellen (siehe Datenblatt Seite 44). Dein Programm funktioniert momentan nur, weil darin noch keine "sei"-Anweisung vorkommt. Ciao, mare_crisium
Harald! Aua aua was für ein Fehler! Peinlich! Daran liegt es aber leider nicht. Die Mängel in diesem Programm sind mir sehr bewusst. Ich reduziere/lösche halt, wenn ich nicht weiterkomme ALLES, was ich im Moment nicht brauche und baue das "Schloss" lieber von vorne wenn das "Fundament" steht. Nachtrag: Das Display "lebt" d.h. Kontrast lässt sich verstellen. Anbei der korrigierte Code. Trotzdem tut sich nichts :-(
Attila, ja, mit dem Rückzug aufs Allernotwendigste hast Du allerdings sehr recht ;-). Ich hab' gerade nochmal meine eigene Bibliothek angeguckt. Mein Display hing an einem ATmega16 mit 16MHz. Da habe ich zwischen LCD_ENABLE:=1 und LCD_ENABLE:=0 insgesamt 11 "nop"s eingeschoben. Stimmen Deine Fuses ("Ext. Crystal/Resonator Medium Freq....") und die Jumper (Kapitel 3.7.4 des STK500-Handbuchs, Seite 3-18)? Ansonsten spiel doch mal an den "nop"s. Ciao, mare_crisium
Harald! Ich hab mal mehr nop s reingemacht. Vergiss aber bitte nicht: Das Ding lief mal! Mit 3 nops und die Anschlüsse 4-7 zu 7-4 vertauscht! Also da kam nur Kraut und Rüben aber es hat sich wie ein Display benommen! Meine Fuses sind glaube ich ganz ok: Ext. Clock, Startup time:6 CK+64ms. Hat bislang bei allen möglichen Applikationen funktioniert. Vielleicht werden ja jetzt die Beruhigungspillen verständlicher ;-)
Attila, wem sagst Du das!!! Diese Art von Krisen mit der lieben Hardware kennt jeder MC-Liebhaber :-D. Aber da muss man durch. Wenn das mit den vertauschten Leitungen was gebracht hat, dann versuch' doch mal das Display an PORTC zu hängen. Vielleicht hängt es ja mit den ominösen "alternative functions" zusammen. Mir ist schon vorgekommen, dass manche Pins nicht reagierten, wenn der ATmega im ST500 steckte. Stecke ich ihn - ohne ihn umzuprogrammieren - in mein selbstgebautes Board, dann sind sie mit einem Mal wieder aktiv. Deshalb probier's mal. Ciao, mare_crisium Edit: Ich sehe gerade: PORTC hat nicht genug Pins - also versuch' mal PORTB. Edit: Geht auch nicht, weil da ja der Quarz dran hängt :-(. Kein guter Rat.
Harald! Also: Genau auf diesem STK500 mit genau diesem ATmega8 und genau diesem LCDisplay und genau dem PORTD und gleichen fuses hat das Display wie ein Display funktioniert wenn: (Festhalten bitte!) 1)Die Anschlüsse die an 4-7 dransollen falsch rum , also 7-4 angeschlossen waren. und 2) Der Code murks war d.h. teilweise noch für 8 bit ausgelegt und nicht korrigiert war. Also: Zufallstreffer die ich aber absolut nicht mehr nachvollziehen kann. Ich kann es noch genauer beschreiben: Als die Pins 4-7 noch vertauscht waren kam nach der init nix. Schrieb man dann noch ein "A" rein (8 bit modus, Reste des ursprünglichen Programms!) blinkte der Cursor im UNTEREN (!!!!!!!!) Displayteil links. Bei "Ö" in der Mitte und bei "B" unten Rechts im Display. Nur der Cursor wohlgemerkt! Alles klar? ;-) ;-) ;-) Ich hol mir nochn Bier! Sonst halt ich das nicht aus! Unfassbar! :-)
Attila, neuer Versuch: Weil das mit den vertauschten Leitungen was gebracht hat - kann es sein, dass das Display die Datenbits im unteren Nibble erwartet? Also statt "ldi temp, 0b00110000" mal "ldi temp, 0b00000011" schreiben. Die dreimal Enable am Anfang musst Du wieder aktivieren - sonst geht gar nix. Ciao, mare_crisium Edit: Und sach' ma' den Displaytyp. Ich würde gern mal ins Datenblatt gucken ;-).
Harald! Um den vertauschten Leitungen gerecht zu werden müsste ich ja statt 00110000, 11000000 schreiben ne? ;-) Aber ich werde deinen Vorschlag auf jeden Fall ausprobieren. Man erlbt immer die lustigsten Sachen! Die 3 mal 00110000 sind ja nur für den Fall das man den Zustand des Displays nicht kennt! Bei einem frisch eingeschalteten und somit im 8bit Mode arbeitenden braucht man die 3 mal nicht! Es ist ein EA DIP162 DN3LW http://www.lcd-module.de/pdf/doma/blueline-w.pdf Schau mal da die initialisierungsbespiele an. Da ist nichts mit 3 mal was abschicken. Es ist mir aber auch egal wenn man es reintut. Hauptsache es läuft! ;-) Ich werde mich jetzt dem Bier frönen ;-) Ich hoffe wir können morgen weitermachen! :-) cheers
Attila, werd' mir das Datenblatt zu Gemüte führen. Prost! Ciao, mare_crisium
Hat noch jemand eine Idee? Ich bin mit meinem Latein am Ende.
Gesammte Werkstatt auseinandergebaut und wieder zusammengesteckt. Alle Störgrößen wie Lautsprecher,Kabel etc. aus dem Weg geräumt. Alle Anschlüsse und Spannungen überprüft. Altes 2*8 Display angeschlossen. Altes Programm was dieses Display im 8 bit mode angesteuert hat (und funktionierte) hoch gefahren. ISP Mode gecheckt Alle Fuses gecheckt. Geht nicht! Nur der schon oft besagte Balken. Ob ne Therapie wohl hilft? Oder ein anderes Hobby?
Attila, im Anhang ist das Datenblatt für den KS0070B-Controller von Samsung. Ich nehme stark an, dass der (oder ein Vergleichstyp) auch in Deinem Display werkelt. Die Befehle sind hier ausführlicher beschrieben als im Datenblatt des Displays (ab Seite 17). Vllt liefert das einen Anhaltspunkt? Ciao, mare_crisium
Attila, ausserdem wolltest Du hier "... sbi PORTD,2 ;R/W=0 ..." sicher schreiben "... cbi PORTD,2 ;R/W=0 ..." Ciao, mare_crisium
Harald! Vielen Dank, es ist tatsächlich sehr schön geschrieben gab mir allerdings auch keinen Anhaltspunkt. Auch was das R/W betrifft hast Du natürlich recht. Ich habe es geändert aber es hat sich , erwartungsgemäss, nichts geändert. Ich kann mit der Symptomatik nichts anfangen: Meine 8 bit applikation mit 2*8 Display vom gleichen Hersteller funktioniert ja plötzlich auch nicht. Hätte übrigens bei durchsicht des vor einem halben Jahr erstellten Codes garnicht funktionieren dürfen! Ich glaube das ist der Knackpunkt hier: Ich bin froh das ich mir nicht ein Oszilloskop, Netzteil und Tischmultimeter gekauft habe. Ich erkenne nämlich das ich offensichtlich keine Ahnung habe und bisher wohl nur Zufallstreffer gelandet habe. Anders lässt sich die Situation hier nicht erklären!
Hab nochmal das Programm hochgefahren was mir vor 2 Tagen brav GPS Koordinaten auf dem 2*8 Display ausgegeben hat. Natürlich funktioniert es nicht. Man sieht nur acht Balken (abhängig vom Kontrast) Könnte das Display gegrillt sein? Also somit alle meine 3 Displays? Und warum? Wie grillt man ein Display? Würde es denn dann überhaupt noch was zeigen?
Attila, nee, nu mal' mal nicht gleich so rabenschwarz! Meiner Erfahrung nach liegt die Ursache für 80-90% der Fehler, wie Du gerade einen vor der Brust hast, in der Software. Hardware zu grillen ist bei den modernen Bauteilen heutzutage gar nicht so einfach. Dass der Fehler mit der "sbi"-Anweisung nicht ausschlaggebend sein kann, hatte ich schon geahnt. Du verwendest ja Bits 1-3 für die Steuerleitungen. Also werden RS und R/W jedesmal auf Null gesetzt, wenn Du das Kommandobyte "0b00100000" in den Port schreibst. Was machst Du übrigens mit PORTD.0? Ciao, mare_crisium
Harald! Das 2*8 Display runtergerissen. Das EA DIP162 wieder drangemacht und siehe da: Ich sehe einen blinkenden Cursor. Normalerweise müsste ich jetzt Freudentänze veranstalten. Es gelingt mir aber nicht wiel ich ABSOLUT KEINE AHNUNG habe wieso das jetzt plötzlich geht??????? Anbei der aktuelle Code. Richtig! Die Leitungen 1-3 werden bei jedem Befehl auf 0 gesetzt, daher muss ich auch bei der Ausgaberoutine aufpassen dass ich nicht RS auf 0 lasse, sondern nach der Ausgabe an den Port RS und E auf H setze. PORTD,0 soll irgendwann (seufz) mal mit RS232 gefüttert werden. Damit Du weisst was ich vorhabe: Das ganze soll dann auf einem ATmega 32 laufen: 1) Ein GPS auslesen (Hab ich schon als Routine fertig) 2) Ein Modellbau-Servo steuern(Hab ich auch schon fertig) 3) Die Position auf einem Display zeigen (Ich dachte ich hätte das fertig ;-))) Am Ende wird es ein Boot was auf einem See ein viereck abfährt. Es ist so eine Art Wette ;-) Schonmal vielen Dank für deinen support! Spitze! tschö
Attila, prima, dass Du jetzt wieder eine funktionierende Kombination hast. Schade, dass wir den Fehler nicht gefunden haben. - Interessante Anwendung, die Du da vorhast. Wenn Du Interesse hast, können wir uns mal über die Kursregelung unterhalten ;-). Das Viereck muss ziemlich gross sein - GPS ist nur auf ca. 10m genau. Damfino (http://members.aon.at/wstocke6/page_1_1.html) benutzt GPS deshalb nur eingeschränkt für die Navigation seines Rasenmähers ;-). Hat Spass gemacht, mare_crisium
Harald! Ja! Hat richtig Bock gemacht und wir können und sollten uns gerne austauschen. Wie am besten?
Ach so: Was die Genauigkeit von GPS betrifft: ich stimme Dir nicht zu. Seitdem der Bill die "selective availability" ausgeschaltet hat geht es unglaublich gut. Hab sehr viel mit GPS zu tun und staune täglich Bauklötzchen wie genau das eigentlich ist. Ausserdem 10 meter auf einem See? Wen juckt es? Es soll ja nur ein Viereck gefahren werden!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.