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ß
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.