SPI auslesen

Gast #3262787
Lesenswert?

Hi ich kenne bisher nur Softwareseitiges SPI und habe mich leider noch 
nicht mit dem Hardware technischen auseinander gesetzt. Weil ich auch 
nicht ganz verstehe wie ich da damit die entsprechenden Register eines 
Chips auslese. Habe bisher nur einen Display mal damit angesteuert, und 
da habe ich das nicht zwingend gebraucht.

Beim senden packe ich ja die Info in den SPDR und warte, bis das SPIF 
nicht mehr gesetzt ist dann wurde mein Byte über den SPI Bus gesendet.

Wenn ich jetzt aber was empfangen will kommt die entsprechende 
Information dann auch in den selben Register und wie stelle ich das 
fest, das ich jetzt die Info auslesen kann?

Ist wahrscheinlich nur ein kleines Verständnisproblem aber wäre super 
wenn ihr mir da weiter helfen könnt. Ich kenne die Beispiele für den 
Master und Slave aus den Atmel Datenblättern von diversen Controllern 
aber da gehts nur ums schreiben als Master nicht ums Empfangen. Ein 
Beispiel in C wäre echt super

Lieben Gruß
#3262808
Lesenswert?

charly schrieb:
> Beim senden packe ich ja die Info in den SPDR und warte, bis das SPIF
> nicht mehr gesetzt ist dann wurde mein Byte über den SPI Bus gesendet.
>
> Wenn ich jetzt aber was empfangen will kommt die entsprechende
> Information dann auch in den selben Register und wie stelle ich das
> fest, das ich jetzt die Info auslesen kann?
Zum Empfangen von einem Slave sendet der Master ein Byte. Entweder etwas 
Vernünftiges oder ein Dummy-Byte. Damit bekommt der Slave 8 Takte und 
schickt sein Byte raus. Wenn der Master fertig ist, ist auch das 
empfangene Byte im SPDR. Das sind physikalisch natürlich 2 Register, 
eins zum Senden, eins zum Empfangen. Lesend/Schreibend zugreifen kann 
man aber nur auf das jeweils sinnvolle.
1
SPDR = sdata;
2
while(!(SPSR & (1 << SPIF)));
3
SPSR |= (1 << SPIF);
4
rdata = SPDR;

Interrupt lohnt sich meistens nicht.

mfg.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren