www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI schnittstelle


Autor: Fritz Franz (beni123)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hallo kann mir bitte jemand helfen. ich versuche einfach zwei lpc935 
über die SPI schnittstelle zu verbinden. doch mein programm funktioniert 
nicht. da ich nun schon kurz vor der verzweiflung bin, hoffe ich ihr 
könnt  mir helfen.

bitte
danke

mfg

Autor: sprites (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie sieht die verbindung aus? betreffend MISO MOSI? gekreuzt?

Autor: Fritz Franz (beni123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein!

MOSI Master out Slave in
MISO Master in Slave out

also nicht gekreuzt!

Autor: Fritz Franz (beni123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann mir keiner helfen??

Autor: Fritz Franz (beni123)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
habe den code jetzt noch mal vereinfacht! es funktioniert trotzdem 
nicht. vielleicht findet ja wer einen fehler bei diesen codes.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erster Schritt:
verbinde am Master direkt MISO und MOSI, dann müsstest du deine eigenen 
Daten wieder zurückbekommen.

Das hier sieht seltsam aus:
    _SS = 0; // SPI-Slave selektieren
    SPDAT = 0x45; // Wert schreiben
    while(_SS == 0); // Warten bis Schreibvorgang zu Ende
Stimmt das so? Es ist ein unüblicher Weg, beim Master den SS-Pin 
abzufragen, ob die Übertragung fertig ist. Funktioniert das überhaupt, 
im einen Interrupt (2) zu warten, bis der andere (9) aufgerufen wurde?


> bei diesen codes.
Meine C-Files heissen mit Nachname *.c
Dann klappt es auch mit dem Syntax-Highlighting.

Autor: Fritz Franz (beni123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit MOSI MISO zusammenhängen ist eine gute Idee. Nur wenn ich 
angenommen 0x45 sende wird doch einfach nur 0x45 bei MOSI hinaus 
geschrieben und bei MISO wieder hinein. Falls die Übertragung nicht 
funktioniert bleibt aber höchstwarscheinlich 0x45 in SPDAT stehen und 
ich erkenne keinen Unterschied.

Denn code habe ich aus einem Auszug aus Buch Keil C51 (Philips LPC900 
Ergänzung zu Kapitel 10 (SPI-Bus)).

Nur den Interrupt 2 habe ich dazugefügt um irgend wie die µC Zeitlich 
abzustimmen. Zuerst löse ich den Interrupt beim slave aus um Werte in 
SPDAT
 zu schreiben. Dann beginne ich mit dem Senden vom Master aus gesteuert.

Mit den Interupts bin ich mir jetzt auch nicht mehr sicher. Wenn ich 
Prioritäten gesetzt habe müsste es funktionieren. Aber so bin ich mir 
auch nicht mehr sicher.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Nur den Interrupt 2 habe ich dazugefügt um irgend wie die µC Zeitlich
>abzustimmen. Zuerst löse ich den Interrupt beim slave aus um Werte in
>SPDAT

Wie machst du das? An welcher Stelle im Programm?

> zu schreiben. Dann beginne ich mit dem Senden vom Master aus gesteuert.

Wie kommt dein Master eigentlich in den SPI Interrupt?
Genau, gar nicht! Versuch es erstmal komplett ohne Interrupt,
und auch ohne Slave. Einfach mit dem Master Bytes verschicken.
Dann Osci dran und schauen ob SCLK taktet. Dann nachschauen
ob aus MOSI was rauskommt. Wenn du das soweit hast, dann
kümmerst du dich um den Slave.

Autor: Fritz Franz (beni123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wie machst du das? An welcher Stelle im Programm?

Die Interrupt löse ich mit einem Taster aus (per Hand).

>Wie kommt dein Master eigentlich in den SPI Interrupt?
>Genau, gar nicht!

Warum nicht? Wegen der Schleife in Interrupt 2??

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>Wie machst du das? An welcher Stelle im Programm?
>Die Interrupt löse ich mit einem Taster aus (per Hand).

Achso. Ich kenn die Interruptnummern vom LPC nicht.

>>Wie kommt dein Master eigentlich in den SPI Interrupt?
>>Genau, gar nicht!

>Warum nicht? Wegen der Schleife in Interrupt 2??

Vergiss diesen Teil der Frage. Siehe oben.

Den Rest von meinem obigen Post solltest du mal
beherzigen. Sende in einer Endlosschleife einfach
mal Daten mit dem Master. Slave sollte da erstmal
egal sein. Dann schau nach ob der Master auch sendet,
also ob auf SCLK und MOSI was raus kommt.

Autor: Fritz Franz (beni123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK werde ich machen. Danke.

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.