Parallelen Bus durch 74HC595 ersetzen

OP #2225744
Lesenswert?

Hallo,

ich versuche gerade meinem Pollin-Touch-Display mit LC7981-Chipsatz den 
parellelen Bus ab zu gewöhnen und dadurch ein paar Pins am AVR frei zu 
bekommen.

Der Einfachheit halber probiere ich das ganze als Arduino-Projekt.

Es geht nur um die Datenleitungen (DB0-DB7), die anstatt jeden Pin 
einzeln am AVR zu verbinden nun durch ein 595 Shift Register angesteuert 
werden sollen.

Bisher (also im parallel-Betrieb) funktioniert dieser Code wunderbar:
1
// Legt die Daten an das Display an
2
void DG16080::data(unsigned int data) {
3
  digitalWrite(_DB0, bitRead(data, 0));
4
  digitalWrite(_DB1, bitRead(data, 1));
5
  digitalWrite(_DB2, bitRead(data, 2));
6
  digitalWrite(_DB3, bitRead(data, 3));
7
  digitalWrite(_DB4, bitRead(data, 4));
8
  digitalWrite(_DB5, bitRead(data, 5));
9
  digitalWrite(_DB6, bitRead(data, 6));
10
  digitalWrite(_DB7, bitRead(data, 7));
11
}

Ersetze ich diesen mit
1
// Legt die Daten an das Display an
2
void DG16080::data(unsigned int data) {
3
  digitalWrite(_LATCH, LOW);
4
  shiftOut(_DATA, _CLOCK, LSBFIRST, data);   
5
  digitalWrite(_LATCH, HIGH);
6
}
und lasse den restlichen Code unverändert, tut sich nichts.

Nach stundenlangem Einlesen in den 595 möchte ich euch nun um Rat 
fragen, ob das so wie o.g. funktionieren kann. Versuche ich das MSB 
zuerst zu übertragen geht es ebensowenig. Muss ich hier eine Umwandlung 
zwischen 'unsigned int' und 'byte' machen? Tests mit verschiedenen 
Int-Werten haben gezeigt, dass hier wohl keine Umwandlung nötig ist.

Bitte helft mir - ich würde so gerne ein paar Pins frei machen, damit 
ich das Modul noch mit an den CAN kriege ;-)

Danke und Gruß
Sascha

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