Hallo liebe Gemeinde,
ich möchte gerne mein Grafik-LCD von einer I2C Ansteuerung mit dem
MCP23008 von Microchip auf eine serielle Ansteuerung mit dem MCP23S09
per SPI umstellen.
Angeschlossen sind die /CS Leitungen jeweils an PC2 und PC3 eines
ATMega644, der mit 8Mhz internem Takt bei 3,3V läuft. Das Display ist an
5V angeschlossen mit zwei MCP23S09 (an 3,3V, die GPIOs sind 5V
tolerant), jeweils einer für die Daten (DATA) und einer für die
"restlichen" Pins (CMD).
Ich habe in meinem Code die Ansteuerung in etwa so wie bei I2C versucht,
aber leider funktioniert das nicht. Ich bleibe schon in der Init-Routine
hängen (nach "Init1").
Elektrisch sind die MISO/MOSI/SCK Leitungen der MCPs und µC jeweils
zusammengeschaltet, an MISO hängt ein 10k Pullup.
Es wäre nett, wenn jemand einmal schauen könnte, ob ich hier völlig auf
dem Holzweg bin. Datenblatt und Code siehe Anhang.
Das Hauptprogramm:
1 | int main(void)
|
2 |
|
3 | _delay_ms(1000);
|
4 |
|
5 | uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU));
|
6 |
|
7 | sei();
|
8 |
|
9 | uart_puts_P("**** \nProgramm Start\n"); _delay_ms(50);
|
10 |
|
11 | T6963cInit( T6963C_MODE_XOR | T6963C_CG_INTERNALROM,
|
12 | T6963C_TEXT_GRAPHIC);
|
13 |
|
14 | uart_puts_P("Display Init ok.\n"); _delay_ms(30);
|
15 |
|
16 | T6963cPutStringXY(0,0, "Test");
|
17 |
|
18 | _delay_ms(100);
|
19 |
|
20 | return 1;
|
21 | }
|