Forum: Mikrocontroller und Digitale Elektronik 8 Bit Adresse, 32 Bit Daten


von SPI_NEWBIE (Gast)


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?

von Pandur S. (jetztnicht)


Lesenswert?

Wenn das auf der anderen Seite passt, ja.

Allenfalls muss man noch das niedristwertige byte ausschneiden, 
vielleicht macht das der Compiler von selbst

von Karl H. (kbuchegg)


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.

von Loocee L. (loocee)


Lesenswert?

Die Funktion WriteCycle sieht ja maximal 16 Bit als Datum, wie
soll sie dann Bit 23...16 shiften können?

von Mike (Gast)


Lesenswert?

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

von Loocee L. (loocee)


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 .....

von SPI_NEWBIE (Gast)


Lesenswert?

Es ist ein PIC 32 mit XC32 Compiler und unsigned int sind 32 Bit!

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
Noch kein Account? Hier anmelden.