Optrex 5008 4-bit Ansteuerung (GCC)

Gast #323740
Lesenswert?

Ich habe die Lib von Knut Baardsen gefunden.

Da ich das Display im 4-bit Modus ansteuern will habe ich die folgenden
Änderungen gemacht:

void lcd_write_data(unsigned char data)
{
/* originaler Code */
  LCDDATAPORT = data;
  LCDCTLPORT &= ~(A0);
  LCDCTLPORT &= ~(WR);
  LCDCTLPORT |= WR;  */

  // ab hier neue 4-bit routinen

  /* output high nibble first */
  LCDDATAPORT = (LCDDATAPORT & (~(0x0F << LCD_DATA_OFFSET))) | ((data &
0xF0) >> (4-LCD_DATA_OFFSET));
  LCDCTLPORT &= ~(A0); // wie gehabt, siehe oben
  LCDCTLPORT &= ~(WR);
  LCDCTLPORT |= WR;

  delay_ms(2); // sicher ist sicher ?

  /* output low nibble */
  LCDDATAPORT = (LCDDATAPORT & (~(0x0F << LCD_DATA_OFFSET))) | ((data &
0x0F) << LCD_DATA_OFFSET);
  LCDCTLPORT &= ~(A0);
  LCDCTLPORT &= ~(WR);
  LCDCTLPORT |= WR;

}

Gleiches Schema für die lcd_write_command Funktion.

Hier noch die defines:

#define LCD_DATA_OFFSET  0  // PB0 = 0; PB3 = 3 etc.
// Data port
#define LCDDATAPIN      PINA
#define LCDDATADDR     DDRA
#define LCDDATAPORT    PORTA
// Control port
#define LCDCTLPIN      PINB
#define LCDCTLDDR     DDRB
#define LCDCTLPORT     PORTB
// Control pins
#define RST         0x01
#define RD             0x02
#define WR             0x03
#define A0             0x04
// LCD display data
#define LCD_X_SIZE     128
#define LCD_Y_SIZE     128
#define LCD_XTAL       10000000

Das Display wird scheinbar initialisiert (gelöscht), allerdings kann
ich weder Text noch Grafik schreiben.

Ist die Umsetzung auf 4 Bit oben korrekt ?

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