Hallo,
ich habe das SPI am Atmega32 wie nach Datenblatt beschrieben in Betrieb
genommen. Leider antwortet der Slave nicht und der Controller steckt in
der while Schleife fest, die Schaltung dürfte aber stimmen. Jetzt bin
ich dazu übergegangen mir die Signale mit dem Oszi anzuschauen.
Leider sieht man außer dem korrekten Verhalten con Chip Select nichts.
Der Code für das Spi ist aus dem Datenblatt des Atmega:
1 | uint8_t SPI_transmit(uint8_t data)
|
2 | {
|
3 | |
4 | PORTB &= ~(1<<PB2); //Select CS5643
|
5 | |
6 | // Start transmission
|
7 | SPDR = data;
|
8 | |
9 | // Wait for transmission complete
|
10 | while(!(SPSR & (1<<SPIF)));
|
11 | |
12 | data = SPDR;
|
13 | |
14 | PORTB |= (1<<PB2);
|
15 | |
16 | return(data);
|
17 | |
18 | }
|
Meine Frage daher, wenn ich das Datum in SPDR schreibe, müsste ich dann
nich zumindest den SCKL auf der Leitung sehen? Ich meine völlig
unabhängig davon ob der Slave antworten wird oder nicht? Es macht mich
stutzig das garnichts passiert.