Forum: Mikrocontroller und Digitale Elektronik [8051] SPI in C - Problem bei Variablenübergabe ?


von Sebastian Weiß (Gast)


Angehängte Dateien:

Lesenswert?

Hallo ihr Microcontroller,

im Anhang befindet sich mein Code. Er stammt aus einer Appnote von Maxim 
(http://www.maxim-ic.com/app-notes/index.mvp/id/3524).
Problem ist die Variablenübergabe spiReadWrite zu rreg. In der Variable 
spiTmp liegt der richtige Wert, dieser wird per "return spiTmp;" von 
spiReadWrite nach rreg transportiert, dort kommt aber nur 0 an.

Wo ist das Problem?
Ich könnte spiTmp, da global, einfach nach dem Aufruf von spiReadWrite 
auswerten(das funktioniert auch), aber ich hätte es schon gern als 
Funktion gehabt und ich möchte verstehen warum es so NICHT funktioniert.

Mit freundlichen Grüßen,

Sebastian Weiß

P.S.: Ich komme aus der Assembler-Ecke und ich bin erst neu in C.
Compiler: Keil C51

von Matthias K. (matthiask)


Lesenswert?

>BYTE spiReadWrite(BYTE Data)

data ist bei Keil ein reserviertes Schlüsselwort und sollte nicht als 
Variablenname verwendet werden.

von Sebastian Weiß (Gast)


Lesenswert?

Matthias K. schrieb:
> data ist bei Keil ein reserviertes Schlüsselwort und sollte nicht als
> Variablenname verwendet werden.

Deswegen verwende ich auch Data (case-sensitivität ausgenutzt), Data 
geändert in SPIData verändert nix. Schreiben geht mit dieser Funktion, 
nur nicht lesen.

von Ralf (Gast)


Lesenswert?

Deklariere mal SPITEMP als 'volatile', vielleicht optimiert der 
Compiler/Linker da was weg.

Um das Lesen an sich zu prüfen, könntest du auch deinen Slave abhängen, 
und MOSI/MISO kurzschließen, dann müsste sich der Master selber hören...

Ralf

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.