8 Bit Adresse, 32 Bit Daten

Gast #3976338
Lesenswert?

Hallo zusammen,

ich würde gerne via SPI zuerst eine 8 Bit Adresse gefolgt von 24 Bit 
Daten mit Hilder der SPI_WRITE(unsigned char dat) Funktion senden. Wie 
macht man das am besten? So?:
1
unsigned char SPI_Write(unsigned char dat);
2

3
void WriteCycle(unsigned char address, unsigned int data)
4
{
5
        CS_0;
6
        // 8 Bit Adresse
7
  SPI_Write(address);
8
        SPI_Write(data);
9
        SPI_Write(data >> 8);
10
        SPI_Write(data >> 16);
11

12
        AD_CS_1;
13
}

Würde das so funktionieren?
#3976400
Lesenswert?

Jetzt Nicht schrieb:
> Wenn das auf der anderen Seite passt, ja.
>
> Allenfalls muss man noch das niedristwertige byte ausschneiden,
> vielleicht macht das der Compiler von selbst

Macht er.
Wie sonst soll er einen unsigned char als Argument für
1
unsigned char SPI_Write(unsigned char dat);
zustande kriegen. Er könnte maximal eine Warnung generieren, da ja 
zwangsläufig Bits verloren gehen. In dem Fall kann man ihm mit einem 
Cast klar machen, dass das in Ordnung geht.
#3976478
Lesenswert?

Mike schrieb:
> Auf welchem Controller soll denn das laufen bzw. mit welchem Compiler
> wird gearbeitet? Ist unsigned int 16 bit oder 32 bit?

Stimmt. WWenn man die 8-Bit Scheuklappen wegnimmt dann könnte
INT 32 Bit breit sein. Aber solche "Nebensächlichkeiten" wie
Prozessorhardware muss man ja dem Fragenden regelmässig
aus der Nase ziehen .....

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