Forum: Mikrocontroller und Digitale Elektronik Parallelen Bus durch 74HC595 ersetzen


von Sascha K. (kuschelganxta)


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

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.