Display mit Controller KS0108 - Welche Datein?

#4061537
Lesenswert?

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
#4062009
Lesenswert?

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.
#4062031
Lesenswert?

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
Gast #4062244
Lesenswert?

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
#4062279
Lesenswert?

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
Gast #4062289
Lesenswert?

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
Gast #4062323
Lesenswert?

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.
#4062329
Lesenswert?

@ 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!
#4062333
Lesenswert?

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
#4062336
Lesenswert?

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
Gast #4062339
Lesenswert?

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 :-)
#4062350
Lesenswert?

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
Gast #4062479
Lesenswert?

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 :-) )
#4062546
Lesenswert?

@ 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.
Gast #4062547
Lesenswert?

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
Gast #4062555
Lesenswert?

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
#4062574
Lesenswert?

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
Angehängte Dateien:
Gast #4062592
Lesenswert?

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
Gast #4062609
Lesenswert?

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
Gast #4062716
Lesenswert?

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
#4062742
Lesenswert?

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
Gast #4062797
Lesenswert?

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?
#4062813
Lesenswert?

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
Gast #4062827
Lesenswert?

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
#4062844
Lesenswert?

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
#4065682
Lesenswert?

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.

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