[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

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.