SPI schnittstelle

OP #1453282
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
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #1455610
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.
OP #1455639
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.
Gast #1455986
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.
Gast #1456005
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.

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