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
habe den code jetzt noch mal vereinfacht! es funktioniert trotzdem nicht. vielleicht findet ja wer einen fehler bei diesen codes.
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.
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.
>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.
>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??
>>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.
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.