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