Gast
#5587806
Hallo zusammen, ich möchte mit zwei Controllern untereinander über SPI kommunizieren. Dabei sollen jeweils 16 Bit übertragen werden. SPI läuft soweit. Aktuell erst einmal mit 8 Bit getestet. Der Master sendet dann 16 Bit und der Slave soll entsprechend Antworten. Der Controller hat ein 8 Bit Senderegister. Ich überlege nun, wie ich die Übertragung am Besten aufbaue. Eine grobe Idee. Ich habe einen 16 Bit Wert, den ich erst einmal in zweimal 8 Bit aufteile und in einem Array speichere wert[0] / wert[1]. Die Kommunikation läuft über Interrupts. Receive Interrrupt, wenn der Receive Buffer voll ist und Transmit Interrupt, wenn der Transmit Buffer leer ist. Ich schiebe nun den ersten Wert in den Transmit Buffer. Wenn der Master die Kommunikation startet, sendet der Slave die ersten 8 Bit. Wenn der Transmit Buffer Empty Interrupt kommt, werden die zweiten 8 Bit in den Buffer geschoben. Es gibt nur einen Interrupt Vector. In diesem werden dann auch bei entsprechend gesetztem Bit die vom Master empfangenen Daten ausgelesen. Bei der Detailumsetzung frage ich mich, ob die Wahl, ob das erste oder zweite Element des Array gesendet wird, in der ISR vorgenommen wird oder im allgemeinen Programmablauf? Nach dem Senden der 16 Bit, würde ich den Transmit Interrupt deaktivieren, weil sonst immer wieder dort rein gesprungen würde, obwohl nichts gesendet werden soll!? Wäre das der grobe Weg oder sollte man es anders umsetzen? Gruß Stephan