Hallo Gemeinde bin so ziemlich ratlos. Habe ein Display TG12864B mit dem KS0108. Möchte ies an einem AT1284p in Betrieb nehmen. Habe so ca. (gefühlte) 300 Beiträge oder Datein dazu gefunden. Bekomme bei allen sehr viele Fehlermeldungen. Keines läuft richtig. Leider ist mir nicht klar, welche richtig läuft oder was ich brauche. Kann mir jemand weiterhelfen? achim
:
Verschoben durch Admin
Hallo, ich fand gerade diesen Link: -- http://www.mikrocontroller.net/articles/KS0108_Library Vielleicht kann man damit starten und testen ?
Hallo Karl habe mir den Teil angesehen und das Lib geladen. Bekomme noch 2 Fehlermeldungen. Die anderen habe ich schon beseitigt. Leider komme ich mit diesen nicht klar. Vielleicht könnte mir jemand dabei helfen. achim
Hallo, du brauchst noch wenigstens eine Datei die die Grafikdaten für die Schriftart die du der Funktion übergibst enthält. Findest du evl. auch zum runterladen, oder du hast sie schon aber nicht in dein Projekt eingebunden. Es gibt auch Fontconverter mit dem man am PC aus einer vorhandenen Schrift die entsprechenden Grafikdaten erzeugen kann. Sascha Edit: lt. dem Forumsbeitrag oben sollten die Schriftarten im zip mit drin sein, also wirds wohl am Include liegen.
:
Bearbeitet durch User
Hallo Sascha es sind einige Datein dabei, in dem zip. arial_bols_14.h corsiva_12.h Diese habe ich eingebunden und die .h Datein werden aufgerufen. Auch einen Front Creator habe ich dazu. Nach dem readmy soll ich einfach auf Start klicken. Es erscheint sehr kurz ein schwarzer Bildschirm und geht sofort wieder weg. Sorry, bin ziemlich ratlos dabei achim
Dieter Frohnapfel schrieb: > Hallo Achim, > > JTAG ausgeschaltet? Ach! Mit ausgeschaltetem JTAG ist "corsiva_12" declared?
Blaurock schrieb: > Ach! Mit ausgeschaltetem JTAG ist "corsiva_12" declared? Nö, das hat er ja vorher schon gelöst ... Achim Seeger schrieb: > es sind einige Datein dabei, in dem zip. > > arial_bols_14.h > corsiva_12.h > > Diese habe ich eingebunden und die .h Datein werden aufgerufen. Lesen hilft manchmal :-)
Hallo eigentlich bin ich der Meinung das es ausgeschaltet ist. Nach dem lesen einiger Artikel aber nicht mehr so richtig. Schau mal aufs Bild, so sieht es aus. achim
Sorry, noch eine Frage dazu. Komme doch garnicht soweit. Die Fehler kommen doch schon beim compilieren. Es werden zusätzlich noch ca 3500 Warnungen angezeigt ????
Achim Seeger schrieb: > eigentlich bin ich der Meinung das es ausgeschaltet ist Nach der Hardcopy ist die JTAG-Fuse ausgeschaltet (initial ist die immer aktiviert). Zeigst Du bitte mal DEIN KOMPLETTES Programm incl. Built-Protokoll?
Hallo, in deinem Bild ist JTAG aus das passt. Wenn die Fonts eingebunden sind, sollten darin auch die entsprechenden Variablen decl. sein und kein Fehler auftreten! Die Fonts auch zuerst eingebunden? Sascha
Hallo Dieter diesmal liss sich das Programm ohne Fehlermeldung compilieren. Dann wollte ic es, wie gewohnt auf den AT1284 schieben, jetzt zeigt das eine Fehlermeldung und der mk2, rote LED blinkt schnell versuch rauszufinden was da los ist achim
ohne angeschlossenes GLCD konnte ich den 1284 das Programm draufbringen, anschliessend wieder das Display angeschlossen, keine Anzeige. Werde die Belegung kontrollieren
Habe die Ports anders eingestellt. Bei mir liegen sie auf B - Daten und D - E+RE usw. Auch keine änderung. Habe mal ein Foto von der Fehlermeldung gemacht
Noch ein Foto von den Ports / Pins An welchen Port / Pin liegt welche Date? Verstehe die Belegung nicht so richtig
Achim Seeger schrieb: > Verstehe die Belegung nicht so > richtig Hallo Achim, die Belegung hast Du ja selbst festgelegt. Nur halt falsch. Wenn Du die Ports anders definierst, dann bitte auch richtig. Wenn Du, wie geschrieben, die Daten auf B legen willst, dann musst Du auch LCD_DATA_... auf Port B definieren - und LCD-CMD_... auf Port D. Das hat aber nichts damit zu tun, dass Du den AVR nicht flashen kannst. Wird der AVR mit Strom versorgt? Falls nicht solltest Du das erstmal beheben. Wenn die LED rot blinkt und die Stromversorgung O.K. ist hilft es bei mir in so einem Fall, wenn ich den USB-Stecker vom MK III kurz abziehe und wieder dran stecke. Dann erneut auswählen im Atmel Studio und neu flashen. Ich gehe davon aus, dass Du ein neues Built erzeugt hast und die richtigen Dateien aus dem DEBUG-Ordner ausgewählt hast. Falls nicht, solltest Du das unbedingt tun. Gruß Dieter
Hallo Dieter habe die Datein von dir genommen und damit alles neu erzeugt. Spannung liegt an. Habe extra LED zur Kontrolle dran. Mit dem mk2 mache ich es genauso, abziehen, kurz warten und neu starten. Habe die Port Belegung getauscht. Ergebnis genauso, was ich noch viel weniger verstehe ist, wenn ich das GLCD (harware) abziehe, kann ich den 1284 flaschen, sonst bekomme ich diese Fehlermeldung. Hatte eigentlich angenommen, das es einen Standart Treiber dazu gibt. So ziemlich alles bezieht sich auf dies alten Datein von 2004. Könntest du mir noch verraten, was du geändert hast. Nur zum Verständnis. achim
Achim Seeger schrieb: > wenn ich das GLCD (harware) abziehe, kann ich den 1284 flaschen, sonst > bekomme ich diese Fehlermeldung Hallo Achim, das liegt wohl daran, dass auf dem von Dir gewählten Port B auch die ISP-Schnittstelle hängt. Die mag kein angeschlossenes LCD. Wenn es unbedingt sein muss, musst Du da mit Widerständen arbeiten (googlen) oder das LCD zum Flashen halt wegnehmen. Achim Seeger schrieb: > Könntest du mir noch verraten, was du geändert hast. Nur zum > Verständnis Nicht viel, habe aus den "static uint8_t Corsiva..." und "static uint8_t Arial..." lediglich "static const char Corsiva..." und "static const char Arial..." gemacht. Das war die Konsequenz aus den Fehlermeldungen. Gruß Dieter
>oder das LCD zum Flashen halt wegnehmen.
Nö, ein Pulldown an E sollte reichen.
>> Nö, ein Pulldown an E sollte reichen. > >Welches "E" meinst Du denn? Die Enable Leitung vom Display.
Achim Seeger schrieb: > Bei mir liegen sie auf B - Daten und > D - E+RE usw. holger schrieb: > Die Enable Leitung vom Display. Die liegt auf Port D. Da ist kein ISP.
>> Die Enable Leitung vom Display. > >Die liegt auf Port D. Da ist kein ISP. Sehr schön, dann wird das mit dem Pulldown dort auch funktionieren;)
holger schrieb: > Sehr schön, dann wird das mit dem Pulldown dort auch funktionieren;) Da bin ich gespannt, da enable i.d.R. nur bei Ausgabe/Kommandos an das LCD gesetzt/gelöscht wird. Das Testprogramm schreibt einmal etwas und ist dann in einer Warteschleife ... Ich weiß auch nicht, was enable mit den Pegeln am Daten-Port (B) zu tun haben soll, auf dem der ISP beheimatet ist, ... aber Du wirst das schon wissen.
@ Dieter Frohnapfel (jim_quakenbush) >> Die Enable Leitung vom Display. >Die liegt auf Port D. Da ist kein ISP. Trotzdem braucht sie einen Pull-Down Widerstand, damit das Signal E während des Programmierens sicher auf LOW liegt. Denn die IOs sind dann hochohmig!
Dieter Frohnapfel schrieb: > Ich weiß auch nicht, was enable mit den Pegeln am Daten-Port (B) zu tun > haben soll, auf dem der ISP beheimatet ist, ... aber Du wirst das schon > wissen. beim Flashen sind alle Anschlüsse des μC hochohmig (ISP-Pins ausgenommen) dadurch ist eben u.A. der EN Anschluss am Display in undefiniertem Zustand und das kann mit den Pegeln der anderen Leitungen dazu führen das das Display am Datenport auf Ausgang geht und das Programmieren behindert. Sascha
Wenn ich das noch mal zusammenfasse Datenleitung Display AT1284p ---------------------- 7 - DB0 Port A0 8 - DB1 Port A1 9 - DB2 Port A2 10 - DB3 Port A3 11 - DB4 Port A4 12 - DB5 Port A5 13 - DB6 Port A6 14 - DB7 Port A7 4 - D/I Port D6 5 - RW Port D5 6 - E Port D2 15 - CS1 Port D0 16 - CS2 Port D1 so habe ich jetzt die Belegung. Damit habe ich E auf D2. Zieh zum programmieren das Display ab. Lasse ich es dran, bekomme ich eine Fehlermeldung (siehe Foto). Egal ob mit oder ohne, nach einschalten ist auf dem display ein grosses dunkles viereck, mehr nicht, zu sehen. Meinst du das mit den widerständen, wenn an jedem Port Ausgnag zu den DB0 bis DB7 noch ein R von so ca 100 Ohm drin ist? achim
Falk Brunner schrieb: > Trotzdem braucht sie einen Pull-Down Widerstand, damit das Signal E > während des Programmierens sicher auf LOW liegt. Denn die IOs sind dann > hochohmig! Sascha Weber schrieb: > beim Flashen sind alle Anschlüsse des μC hochohmig (ISP-Pins > ausgenommen) dadurch ist eben u.A. der EN Anschluss am Display in > undefiniertem Zustand und das kann mit den Pegeln der anderen Leitungen > dazu führen das das Display am Datenport auf Ausgang geht und das > Programmieren behindert. Wofür das Ausrufezeichen? Die Erklärung von Sascha (ohne Ausrufezeichen) ist sogar für mich nachvollziehbar, vielen Dank :-)
Achim Seeger schrieb: > Display AT1284p > ---------------------- > 7 - DB0 Port A0 Hallo Achim, hattest Du nicht gerade geschrieben, Du verwendest Port B für die Daten? Ich denke, Falk und Sascha werden Dir besser weiterhelfen können. Mir fehlen doch noch zu viele Grundlagen. Gruß Dieter
Der PIN 6 vom Display muss mit einm R von (?) nach GND gelegt werden? Sorry, die Stelle habe ich nirgends gefunden oder übersehen. Einen PIN habe ich vergessen. Genau so sagen einige, das der PIN 17 (Reset) über einen R von 1kOhm nach +5V soll, andere sagen nichts dazu. Jedes Display ist anders, kann mich nur so schlecht dran gewöhnen,immer was anderes achim
Nein Dieter, das ist die Bezeichnung am Display. Habe auf die falsche Seite geschaut, mist, mein blöder Fehler. Die Daten kommen von Port B, nicht von A. Verwende die Ports B und D vom 1284
Habe eine Schaltung gefunden. Dort sind vom Ausgang des Prz zum Eingnag des GLCD an den Leitungen DB0 bis DB7 jeweils ein Widerstand von 150 Ohm geschaltet.
>Egal ob mit oder ohne, nach einschalten ist >auf dem display ein grosses dunkles viereck, mehr nicht, zu sehen. Schon mal am Kontrast gedreht?
Der Kontrast lässt sich regeln. Egal, Schrift oder so kommt nicht. Das quadrat wir nur kräftiger
Hallo Achim, kannst Du bitte mal die aktuelle Be-Schaltung (Schaltplan, kein Standard sondern DEINE Schaltung) UND das aktuelle Projekt (Atmel-Studio, genau so wie ge-flashed) hier einstellen? Und dann auch erstmal nichts mehr Ändern. Gruß Dieter (Das gilt natürlich nur, solange Falk keine Einwände hat :-) )
Sorry Dieter, habe es gerade erst gesehen. Kommt sofort, allerdings habe ich keine Schaltung dazu. Nur die Platine, ist eigentlich nichts drauf, nur die Verbindung zum AT1284p. Die Unterlagen zum Prz Board stehen unter "modulares Board" im Wiki
@ Achim Seeger (achims) >Sorry Dieter, habe es gerade erst gesehen. Kommt sofort, allerdings habe >ich keine Schaltung dazu. Nur die Platine, ist eigentlich nichts drauf, Hast du die Platine ohne Schaltplan entworfen? >nur die Verbindung zum AT1284p. Die Unterlagen zum Prz Board stehen >unter "modulares Board" im Wiki Da DU was vom Forum willst, wäre es angebracht, einfach mal einen Link hier reinzuschreiben.
Achim Seeger schrieb: > allerdings habe ich keine Schaltung dazu Hallo Achim, Du bist ja gut drauf - Du hast keine Schaltung zu dem von Dir entwickelten Board? Mit irgendeinem Foto einer Platine kann man nicht so arg viel anfangen, wie Dir sicher bekannt ist. Also nochmal - bitte: Dieter Frohnapfel schrieb: > kannst Du bitte mal die aktuelle Be-Schaltung (Schaltplan, kein Standard > sondern DEINE Schaltung) UND das aktuelle Projekt (Atmel-Studio, genau > so wie ge-flashed) hier einstellen? > > Und dann auch erstmal nichts mehr Ändern. Gruß Dieter
Achim Seeger schrieb: > Nur die Platine, ist eigentlich nichts drauf, > nur die Verbindung zum AT1284p. Die Unterlagen zum Prz Board stehen > unter "modulares Board" im Wiki Hallo Achim, Du glaubst sicher nicht wirklich, dass sich jemand DEINE Schaltung zusammenreimt - oder? Würdest Du auch nicht machen, da bin ich mir sicher. Gruß Dieter
Hallo Dieter das ganze Projekt besteht hierbei um 2 Platinen. Die eine Platine (Bild oben besteht nur aus dem Adapter um eine GLCD anzuschliessen. Dem 20 polg. Buchsenleiste auf 2 x 2x5 Buchsenleiste, zuzüglich einem R und einem Tr zur Ansteuerung der LED. Belegung entspricht dabei dem RN Standart. Dabei ist Pin1 - DB 0 und weiter Pin 8 - DB 7. Auf dem zweiten Anschluss liegen dann die Steuranschlüsse GLCD Buchse Platine 4-D/I - Pin 7 5-RW - PIn 6 6-E - Pin 3 15-CS1 - Pin 1 16-CS2 - Pin 2 Dies gehen dann wiertr zum Board 1 und an die Ports B und D Am Port B liegen die Datenleitungen und am Port D liegen die Steurleitungen, Hänge das Projekt mit allen Datein und Bilder ran so weit möglich Die Platine 35 ist sowas von einfach. Die Verbindung I2C bitte nicht beachten, hat andere Aufgaben. Auf der Schaltung zum Board 1 ist auf der linken Seite die beiden Ports. Die Versorgung mit den 5V erfolgt auf D. Sieh es dir an achim
Ich behaupte jetzt mal die RST Leitung vom Display hängt in der Luft. Im Programm wird sie nicht angesteuert. Sie scheint aber auch nicht mit Pullup an 5V zu hängen.
holger schrieb: > Er meint das hier: Das Achim etwas meint ist mir klar - nur wie er es GENAU ausgeführt hat, das kann ich daraus nicht nachvollziehen. Ich kann auch ein Bild von einem Tonkrug einstellen - das was ich hin bekomme sieht dann aber möglicherweise leicht anders aus :-) Also so lange nicht der EXAKTE, REALE Schaltplan incl. der Atmel-Studio Projekt-Datei vorliegt halte ich mich zurück. Gruß Dieter
Eine Datei habe ich noch gesehen, kommt sofort. Denn Schaltplan muss erst anfertigen. Dauert ein bischen
Achim Seeger schrieb: > Eine Datei habe ich noch gesehen, kommt sofort. Denn Schaltplan muss > erst anfertigen. Dauert ein bischen Hallo Achim, Du musst schon das komplette Projekt-Verzeichnis zusammenpacken, sonst kann man nichts damit anfangen - es fehlen alle Dateien ... außer der Projekt-Datei. Gruß Dieter
Hallo Dieter habe alles zusammengepackt. Hoffe nichts vergesssen, auch die Zeichnung ist dabei
Die RST liegt nicht auf +. Hate leider nur ein paar Hinweise dazu gefunden, auf anderen zeichnungen fehlt sie total. Woher weiss ich wann ich was mache?
Achim Seeger schrieb: > Woher weiss ich wann ich was mache? Hallo Achim, dass weiß ich leider auch nicht. Die Schaltung ist leider nicht lesbar (was ist denn "oberer Port" und was "unterer Port" - gibt es dazu auch klare Aussagen? Wenn ich mir das Coding anschaue - dann stimmt da auch einiges nicht. // Command Port Bits #define D_I 6 //0x00 // D/I Bit Number #define R_W 5 //0x01 // R/W Bit Number #define EN 2 //0x02 // EN Bit Number #define CSEL1 0 //0x03 // CS1 Bit Number #define CSEL2 1 //0x04 // CS2 Bit Number // Chips #define CHIP1 0x00 #define CHIP2 0x01 Irgendwie passen da Belegungen und Kommentare nicht zueinander. Wie soll es denn nun sein, wie ist es richtig? Es wäre schön, wenn Du mit Dir erstmal einig wirst :-) - später schauen wir alle mal drüber ... Gruß Dieter
Hallo Dieter der obere Anschluss geht auf den Port B, der unter auf den Port D des AT1284p Im ori liegen diese beiden Stecker/Buchsen unmittelbar neben einander. so das sie mit 3 cm langen stücken verbunden werden. Verwechslung dadurch nicht möglich. Dadurch habe ich keine Bezeichnung drauf. Die Belegung und Anordnung ist bei beiden Platinen gleich Dieter Frohnapfel schrieb: > // Command Port Bits > #define D_I 6 //0x00 // D/I Bit Number > #define R_W 5 //0x01 // R/W Bit Number > #define EN 2 //0x02 // EN Bit Number > #define CSEL1 0 //0x03 // CS1 Bit Number > #define CSEL2 1 //0x04 // CS2 Bit Number Das sind die eingestellten Pins am Port D des AT1284. Habe die alten Bezeichnungen drin gelassen. CSEL ist vermutlich die CS1/2. Habe jetzt den RST (Reset?) jetzt auf +5V gelegt. Mal sehen was das bringt. achim
Achim Seeger schrieb: >> #define D_I 6 //0x00 // D/I Bit Number Hallo Achim, siehst Du eigentlich nicht, dass z.B. 6 und 0x00 nicht zusammen passen? Das kann doch keine Socke nachvollziehen ... Gruß Dieter
Dieter Frohnapfel schrieb: > #define D_I 6 //0x00 // D/I Bit Number > #define R_W 5 //0x01 // R/W Bit Number > #define EN 2 //0x02 // EN Bit Number > #define CSEL1 0 //0x03 // CS1 Bit Number > #define CSEL2 1 //0x04 // CS2 Bit Number > > // Chips > #define CHIP1 0x00 > #define CHIP2 0x01 Außerdem sind D_I / R_w ( oder CSEL1 und CSEL2, je nach Interpretation) und CHIP1 und CHIP2 doppelt belegt - was ist denn richtig?
Die Angabe 0x01 ist das ori. Dabei entspricht doch das 1 nur anders geschrieben. D/I liegt bei mir auf Pin 7 von der Buchse und Port D Pin6 am AT1284. Die anderen pins genauso Die Angabe Chips ist im ori drin, habe ich nicht verändert. Verwendung und Bezeichnung sind mir nicht klar
Achim Seeger schrieb: > D/I liegt bei mir auf Pin 7 von der Buchse und Port D Pin6 Oh Achim, was denn nun - Pin 7 oder Pin 6? Und warum kommentierst Du das dann nicht korrekt (mit z.B. //0x07) ? Achim Seeger schrieb: > Die anderen pins genauso Muss ich dazu etwas schreiben? Achim Seeger schrieb: > Die Angabe Chips ist im ori drin, habe ich nicht verändert. Verwendung > und Bezeichnung sind mir nicht klar Im Original sah das so aus - also unterschiedlich: #define CSEL1 0x03 // CS1 Bit Number #define CSEL2 0x04 // CS2 Bit Number // Chips #define CHIP1 0x00 #define CHIP2 0x01 Daher gehe ich von durchaus unterschiedlicher Beschaltung / Verwendung aus. Das solltest aber Du klären ... Gruß Dieter
CS1 liegt auf D1 und damit am Pin 0 CS2 liegt auf D2 und damit am Pin 1 daher die änderung Was dann Chip 1 und 2 ist, weiss ich nicht
1 | void ks0108WriteCommand(uint8_t cmd, uint8_t chip) { |
2 | if(chip == CHIP1) { |
3 | LCD_CMD_PORT &= ~(0x01 << CSEL2); // deselect chip 2 |
4 | LCD_CMD_PORT |= 0x01 << CSEL1; // select chip 1 |
5 | } else if(chip == CHIP2) { |
6 | LCD_CMD_PORT &= ~(0x01 << CSEL1); // deselect chip 1 |
7 | LCD_CMD_PORT |= 0x01 << CSEL2; // select chip 2 |
8 | }
|
in diesem Teil wird es verwendet Da werde ich wohl weiter suchen müssen. Irgendwie muss es doch funktionieren achim
Hallo Dieter Habe weiter gelesen und getestet. Wie fast üblich, fast verzweifelt. Aber nicht gleich hauen. Wollte das Teil heute in die Schublade legen und was anderes machen. Hatte noch ein zweites Teil mit gleicher Bauart und Belegung. Habe das mal getestet und hatte sofort eine Anzeige. Hurra, eine fast korrekte Anzeige. Habe dann die erste Platine untersucht und getestet. Alle Ausgänge gehen separat für sich und schalten die angeschlossenen LEDs. Zusammen scheinen sie nicht zu gehen. Der Prozessor muss einen kleinen Schaden haben. Vielleicht kommt daher auch das Problem mit der Programmierung (oben beschrieben). Man, bin ich froh. Es geht. An alle die geschrieben haben, Danke für eure Hilfe und eure Geduld. Das Programm, wie in der Datei, geht.
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.