Hallo, ich habe folgende Fragen: Wenn ein AVR Controller als Master definiert wird kann er dennoch Daten empfangen - ist das richtig? In welchem Register wird das empfangene byte gespeichert? Ich vermute SPDR (mega8) - aber da ist doch das gesendete byte? Wie sehe ich das, dass der empfang abgeschossen ist? Danke für die Hilfe...
Der Master definiert den Clock, den muss nicht kontinuierlich sein. Das SPDR register ist ein doppelregister, lesen sieht das angekommene Byte, schreiben tut's in den ausgehenden Buffer. Es gibt ein Complete Flag.
Philip schrieb: > Wenn ein AVR Controller als Master definiert wird kann er dennoch Daten > empfangen - ist das richtig? Ja. > In welchem Register wird das empfangene byte gespeichert? Ich vermute > SPDR (mega8) - aber da ist doch das gesendete byte? Nein, das hast du ja gerade durch die Slaves durchgeschoben. Aus dem SPDR liest du das Byte, welches wärend des Sendens empfangen wurde. > Wie sehe ich das, dass der empfang abgeschossen ist? Dazu gibt es Interrupts und Interrupt-Merker, die ausführlich im Datenblatt beschrieben sind, u.A. SPIF.
danke erst mal für die Antworten... helfen mir schon weiter... Sehe ich es richtig, dass diese Funktion sowohl ein byte schreibt als auch liest? char ReadByteSPI(char cData) { SPDR = cData; //Load byte to Data register while(!(SPSR & (1<<SPIF))); // Wait for transmission complete cData = SPDR; return cData; }
Jeder_ SPI-Transfer liest _und schreibt ein Byte, das hat SPI so an sich. Es bleibt lediglich dir überlassen, ob du das gerade gelesene oder empfangene Byte auch verwertest. Es ist mit dem SPI unmöglich, nur_ ein Byte zu _senden; du musst in diesem Fall ein Dummybyte senden.
Hallo, Sven P. schrieb: > Es ist mit dem SPI unmöglich, nur_ ein Byte zu _senden; du musst in > diesem Fall ein Dummybyte senden. Du meinst nur ein Byte zu _empfangen Gruß aus Berlin Michael
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.