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
>BYTE spiReadWrite(BYTE Data)
data ist bei Keil ein reserviertes Schlüsselwort und sollte nicht als
Variablenname verwendet werden.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.