Ich versuche über SPI aus einem MAX1168 2 Byte auszulesen und weiß jetzt nicht wie ich das machen soll, da das SPDR ja nur 1 Byte groß ist. Kann mir da zufällig jemand weiterhelfen?
2 mal hintereinander auslesen und die beiden einzelnen Bytes wieder zum 16 Bit Wert zusammensetzen.
Ih hab es bis jetz so: void SPI_MasterTransmit() { // Start Übertragung SPDR = CH1; // Warte bis letztes Bit übertragen wurde while(!(SPSR & (1<<SPIF))); CH1_low = SPDR; // Low-Byte return 0; } Ich weiß jetzt nur nicht wie es nochmal auslesen kann um an das Highbyte zu kommen.
Das ist jetzt nicht dein Ernst, oder? Schlechtester Trollversuch seit Bestehen des Internets.
kein Kommentar...
1 | void SPI_MasterTransmit() |
2 | { |
3 | SPDR = CH1; |
4 | while(!(SPSR & (1<<SPIF))); |
5 | CH1_low = SPDR; |
6 | |
7 | SPDR = 0xFF; |
8 | while(!(SPSR & (1<<SPIF))); |
9 | CH1_high = SPDR; |
10 | |
11 | return 0; |
12 | } |
Dimi schrieb: > kein Kommentar... > void SPI_MasterTransmit() > { > SPDR = CH1; > while(!(SPSR & (1<<SPIF))); > CH1_low = SPDR; > > SPDR = 0xFF; > while(!(SPSR & (1<<SPIF))); > CH1_high = SPDR; > > return 0; > } Danke. Hab nochmal das Datenblatt vom Max1168 durchforstet und gesehen, dass man ihn drei mal auslesen muss da das Erste Byte nur 0x00 zurück gibt. Wenn ich ihm dann beim zweiten Byte 0xff sende, dann ändere ich doch die Konfiguration des Max1168 oder nicht? Sorry hab von SPI noch nicht wirklich den Durchblick.
DDD85 schrieb: > Danke. Hab nochmal das Datenblatt vom Max1168 durchforstet dann hast du nicht genau genug gelesen. Das wird mit dem /CS Signal gesteuert. D.h. für die nachfolgenden Bytes ist es völlig egal was du ihm schickst. Du musst nur irgendwas schicken, damit der AVR die Clockpulse generiert, die den MAX dazu bringen die weiteren Bytes rauszutakten. Erst wenn /CS wieder auf High geht, ist das für den MAX das Signal, dass da nix mehr kommt. Mit dem nächsten /CS auf Low ziehen, kommt dann das nächste Befehlsbyte. Figure 10 im Datenblatt auf Seite 17 und natürlich der ganze Text der dort dabeisteht.
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.