Hallo Leute,
ich hab ein kleines Problem. Und zwar übertrage ich Daten zwischen zwei
ATmegas via SPI.
Die Übertragung vom Master zum Slave funktioniert einwandfrei. Die
Übertragung vom Slave zurück allerdings bereitet mit
Verständnisprobleme.
SPDR ist ja gleichzeitig das Register für ankommende und abgehende
Daten.
Wann genau darf ich das denn schreiben?
Ich wollte nun zum Anfang erstmal jedes Byte an den Master
zurückschicken mittels folgender Routine:
1 | ISR( SPI_STC_vect ){
|
2 | uint8_t temp = SPDR;
|
3 | SPDR = temp;
|
4 |
|
5 | if (temp == 0x32) {
|
6 |
|
7 | LedOn();
|
8 |
|
9 | }
|
10 |
|
11 |
|
12 | }
|
Muss ich nicht irgendwas machen, bevor ich SPDR nach dem Auslesen
einfach beschreiben kann? Beim Master kommt nämlich nur 0xff (auf Grund
der pullups an), wenn ich ein dummy byte hinterher schicke.
Die Kommunikation an sich funktioniert einwandfrei, ich kann nämlich den
Slave auf diesem Weg via ISP programmieren und den flashinhalt auslesen,
wenn Reset an ist und ich in den programming mode gehe.
Grüße!