Forum: Mikrocontroller und Digitale Elektronik ePaper von EA - Auswahl Font


von Klaus (Gast)


Angehängte Dateien:

Lesenswert?

Hallo
Ein ePaper von EA vom Typ eLabel20 kann über SPI oder I2C programmiert 
werden. Bei der Auswahl des Font wird der Befehl DC1, ESC und Z und F 
übertragen. Danach erfolgt die Auswahl von 0-15. Es sind vom Hersteller 
7 Fonts bereits vorgesehen. Nach einem Reset wird immer der Font 0 
verwendet. Leider kann ich kann keinen andeen Font auswählen, es kommt 
immer nur der Font 0.
Warum?

mfg Kla

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wie gibst Du den Parameter für DC1,ESC,Z,F an?

Als ASCII-Ziffer?

Das sähe dann so aus:

0x11 0x1b 0x5A 0x46 0x31
(für '1').

Probier' mal den Wert, d.h.

0x11 0x1b 0x5A 0x46 0x01
bis
0x11 0x1b 0x5A 0x46 0x06

für die sechs anderen Fonts als 0.

von Klaus (Gast)


Lesenswert?

Halo Rufus
Mache es so
1
int8_t bcc;
2
  bcc = 0x11 + 0x04 + 0x1b + 'Z' + 'F' + x;
3
  i2c_start(slave_adresse_1);
4
  i2c_write(0x11);    // DC1 0x11
5
  i2c_write(0x04);    // 04 len
6
  i2c_write(0x1b);    // ESC   
7
  i2c_write('Z');    // Z
8
  i2c_write('F');    // F
9
  i2c_write(x);
10
  i2c_write(bcc);
Der Aufruf erfolgt dabei durch:
1
eP_Font_Auswahl(2);    // Auswahl Schriftart Z + F 0-8
2
eP_Text_L( 35, 26, "Test L");  // Ausgabe Text links Z + L
Mit x gebe ich die Schriftart an. Habe so ziemlich jeden Befehl für das 
ePaper von EA so aufgebaut. Alles andere funktionieren, nur die Schrift 
bereitet mir Probleme. Bei anderen Display, z.B. edip128 oder edipTFT32 
geht das ohne Probleme
Kl

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ah, ich hatte mir nur Deine Kurzbeschreibung und nicht das Manual 
angesehen.

Das, was Du da machst, sieht soweit sinnvoll aus, das Grundprotokoll 
stimmt offensichtlich, da sonst nichts anderes funktionieren sollte.


Andererseits steht im Manual (S.6) etwas von einem einzulesenden ACK - 
wertest Du das aus?

von Klaus (Gast)


Lesenswert?

Hallo Rufus
ich werte es damit aus und lasse es zusätzlich auf einem zweiten Display 
anzeigen. Damit bekomme ich auch die Feheleranzeige zurück. Bei 6 alles 
ok. Bei 21 ist ein Fehler drin.
1
i2c_start(slave_adresse_2);
2
  e = i2c_readAck();
3
  i2c_stop();
4
  itoa( e, Buffer, 10 );    
5
  lcd_printlc(1,12,Buffer);
6
  _delay_us(100);

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Klaus schrieb:
> Bei 6 alles ok. Bei 21 ist ein Fehler drin.

Was meinst Du damit? Sind das die Werte, die Du als Font-Nummer 
übergibst?

von Klaus (Gast)


Lesenswert?

Das sind nicht die Fontnummern. Das Display überprüft die Werte die 
übergeben werden. Wenn die übergebene Summe mit der Summeder Werte 
stimmt, kommt eine 6 zurück. In dem Code wird es als len bzw. bcc 
geschrieben.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ah. Das sind die Codes für ACK und NAK.

Mit bcc bzw. len hat das nichts zu tun.

von Klaus (Gast)


Lesenswert?

Sorry, habe mir das Problem noch mal vorgenommen. Das Datenblatt des 
Herstellers steht am Anfang.
Noch mal der ganze Aufruf:
1
void eP_Font_Auswahl(int8_t x)  // Auswahl Font Z + F
2
  {
3
  int8_t bcc;
4
  bcc = DC1 + 0x04 + ESC + 'Z' + 'F' + x ;
5
  i2c_start(slave_adresse_1);
6
  i2c_write(DC1);    // DC1
7
  i2c_write(0x04);  // 04 
8
  i2c_write(ESC);    // ESC
9
  i2c_write('Z');    // Z
10
  i2c_write('F');    // F
11
  i2c_write(x);
12
  i2c_write(bcc);
13
  i2c_stop();
14
  
15
  _delay_us(40);
16
  
17
  i2c_start(slave_adresse_2);
18
  e = i2c_readAck();
19
  i2c_stop();
20
  itoa( e, Buffer, 10 );    
21
  lcd_printlc(1,10,Buffer);
22
  _delay_us(200);
23
  }
Dabei ist:
1
#define DC1 0x11
2
#define ESC 0x1B
Angabe der Fonts:
1
eP_Font_Auswahl(0);            // Auswahl Schriftart Z + F 0-8
2
    eP_Text_L( 35, 6, "Test L0");      // Ausgabe Text links Z + L
3
    _delay_ms(5);
4
    
5
    eP_Font_Auswahl(1);            // Auswahl Schriftart Z + F 0-8
6
    eP_Text_R( 35, 26, "Test L1");      // Ausgabe Text links Z + L
7
    _delay_ms(5);
8
    
9
    eP_Font_Auswahl(4);            // Auswahl Schriftart Z + F 0-8
10
    eP_Text_C( 35, 46, "Test L2");      // Ausgabe Text links Z + L
Hat jemand eine Idee dazu?
LG Kl

von Joachim S. (oyo)


Lesenswert?

Keine Ahnung, ob es damit zusammenhängt, nur so ein Gedanke:
Die Variable bcc zur Berechnung der Checksumme deklarierst Du als 
signed 8-Bit-Wert; im Beispiel-Code im Datenblatt hingegen wird diese 
Variable als unsigned deklariert.

von Klaus (Gast)


Lesenswert?

Sehe ich mir sofort an, bei allen anderen Befehlen geht das mit int.

von Klaus (Gast)


Lesenswert?

Habe es eingegeben und denn Font mehrfach geändert. Hat scheinbar kein 
Einfluss auf die Ausgabe

von Klaus (Gast)


Lesenswert?

Hat jemand eine Idee dazu?

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
Noch kein Account? Hier anmelden.