2 Byte über SPI empfangen

Gast #2484910
Lesenswert?

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.
Gast #2485491
Lesenswert?

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.
#2487012
Lesenswert?

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.

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