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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Klaus (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Ah. Das sind die Codes für ACK und NAK.

Mit bcc bzw. len hat das nichts zu tun.

von Klaus (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Sehe ich mir sofort an, bei allen anderen Befehlen geht das mit int.

von Klaus (Gast)


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

von Klaus (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hat jemand eine Idee dazu?

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]
  • [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.