Gast
#340657
Hallo,
ich habe mir in den vergangenen Tagen schonmal Hilfe im GCC-Forum
geholt. Leider konnte mir eine Frage nicht beantwortet werden, sodass
ich mich mit dem Problem nochmal an Euch wende.
In der angefügten Datei habe ich den Quelltext für Sklave- und
Mastercontroller angehängt. Folgende Sache klappt bisher:
- Master löst via Timer-ISR eine SPI-DÜ mit Inhalt 0xAA raus
+ Timer-Reload
+ /SS=0
+ SPDR mit 0xAA laden
- Master SPI complete ISR
+ /SS=1
- Sklave nur Datenempfang (DDRB=0x00)
- Sklave SPI complete ISR
+ Ausgabe des Datenframe von Master (PORTC = SPDR)
Jetzt wollte ich gerne einen Datenframe von Sklave an den Master
zurückschicken und habe folgende Änderungen/Zusätze (wie im Anhang)
gemacht:
- Sklave:
+ in der SPI complete ISR vorm Auslesen den zu sendenden Frame
setzten:
<c>
//SPI transfer complete
ISR(SPI_STC_vect)
{
SPDR = 0x04; //return 0x04 to master
PORTC = SPDR; //reading SPI-data
}
</c>
- Master:
+ in der SPI complete ISR Sklave auslesen
<c>
//SPI transfer complete
ISR(SPI_STC_vect)
{
PORTB |= 0x01; // /SS=1
PORTD = SPDR; //data from sklave at PORTC
}
</c>
Weiterhin habe ich die Portrichtung des PORTB des Sklave auf DDRB=0x40
(MISO Output) gesetzt. Durch diese Änderung klappt die DÜ
Master->Sklave nicht mehr.
Hat jemand eine Idee?
Mfg
Thomas