Ausgabe eines Hex Wertes am Port "D0-D7"

Gast #654603
Lesenswert?

Hallo,

ich bastel gerad an einer Ausgabe für ein LCd Display mit einem AT91 und 
bin nun an dem Punkt gelandet wo ich eure Hilfe brauche.
Vielleicht sehe ich den Wald vor lauter bäumen nicht mehr, aber 
irgendwie sehe ich keine Fehler:

Folgende Function:

void ks0108_write_cmd (uint8_t data, uint8_t chip) {
  AT91F_PIO_ClearOutput (pPIO, LCD_DATA | LCD_RW | LCD_CS1 | LCD_CS2);

  if (chip == left)  {
    AT91F_PIO_ClearOutput (pPIO, LCD_CS2);
    AT91F_PIO_SetOutput (pPIO, LCD_CS1);
      pPIO->PIO_SODR = (LCD_DATA | data);
  }
  if (chip == right)  {
    AT91F_PIO_ClearOutput (pPIO, LCD_CS1);
    AT91F_PIO_SetOutput (pPIO, LCD_CS2);
      pPIO->PIO_SODR = LCD_DATA & data;
  }
  ks0108_en();
  AT91F_PIO_ClearOutput (pPIO, LCD_DATA | LCD_RW | LCD_CS1 | LCD_CS2);
}
//---------------------------------------------------------------------- 
-------------

LCD_DATA = D0-D7

Folgende Fehlermeldung:

Sobald ich LCD_DATA mit etwas verunde bekomme ich an allen Ports (D0-D7) 
ein High, ansonsten nichts.

pPIO->PIO_SODR ist der AT91 Befehl um eine 1 am Portausgang zu setzen.


Sieht einer mein groben Fehler?

Vielen Dank

Gruß

Andreas

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