[8051] SPI in C - Problem bei Variablenübergabe ?

Gast #1653088
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
Angehängte Dateien:
Gast #1653140
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.
Gast #1653446
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

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