mikrocontroller.net

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


Autor: Sebastian Weiß (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias K. (matthiask)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>BYTE spiReadWrite(BYTE Data)

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

Autor: Sebastian Weiß (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.