Hallo Zusammen Ich habe ein Problem mit der Datenerfassung über die SPI Schnittstelle. Fünf PIC32MX795F512L bilden eine Erfassung von Lok-Adressen (Modellbahn) wobei vier davon im Slave-Mode arbeiten und einer als Master. Jeder der vier Slave ermitteln vier Lok-Adressen (je 16 Bit) und die vier Slave sind in Reihe mit dem Master geschalten und liefern die Daten an den Master. Der Start erfolgt durch einen INT0 bei jedem Slave wodurch die ersten vier Adressen in das Sende-Register geladen werden. Der Master schreibt dann viermal den Wert 0x5555 in sein Sende-Register und schiebt damit die Daten in seinen Puffer und liest diese aus. Gleichzeitig wird der SPI RX INT bei den Slave ausgelöst und die nächsten Adressen werden in den Sende-Puffer geschrieben und durch den Master wieder eingelesen. Dieser Vorgang wird dreimal mal wiederholt bis alle 16 Adressen vom Master eingelesen wurden. Nun das Problem, leider funktioniert die Einlesung nicht immer und es kommt immer in den ersten beiden Schleifen zum Fehlern. Bei der ersten Schleife werden von allen Slave die 1. Adressen und bei der 2. Schleife die zweiten Adressen eingelesen und bei diesen kommt es manchmal zum Fehler. Ich verwende vorerst nur vorgegebene Zahl um die Richtigkeit einfach überprüfen zu können und somit Slave 0: 1. Adr.: 5001, 2.Adr.: 5002, 5003, 5004 Slave 1: 1. Adr.: 6001, 2.Adr.: 6002, 6003, 6004 Slave 2: 1. Adr.: 7001, 2.Adr.: 7002, 7003, 7004 Slave 3: 1. Adr.: 8001, 2.Adr.: 8002, 8003, 8004 Wenn richtig eingelesen wird: 8001 7001 6001 5001 8002 7002 6002 5002 usw. Falsch einlesen 8001 7001 21445=0x5555 21445=0x5555 8002 7002 6002 5002 usw. Es sieht so aus als würde der Slave0 und 1 den Aufruf zur Aussendung der Adressen nicht mitbekommen (es ist auch manchmal nur einer) und daher habe ich eine Verzögerung beim Master eingebaut, hat aber nix geholfen. 1.Frage: Es gibt den Frame-Mode würde der mir weiterhelfen und ist der auch für mehr als einem Slave geeignet? 2.Frage: Hat jemand Erfahrung mit solchen Kommunikationen oder hat jemand eine Idee wie ich das Problem in den Griff bekomme. Bitte. Danke. Lg. Johann K.
Hallo Zusammen Habe vergessen Master: SPI4CON = 0x00018662; Slave: SPI1CON = 0x00018442;
Hallo Klatec, wie groß ist denn die Entfernung der Slaves und Master ? Bei > 20 cm geschätzt könnte es Probleme mit Echo auf der Clock Leitung geben. Dann >> Terminierung. Gruß Dirk
Hallo Dirk Nein die Länge ist bei weiten keine 20 cm. Ich habe aber seit heute eine Lösung für mein Problem, ich habe festgestellt das dieser Fehler nur bei der ersten Schleife auftritt und habe statt den vier Schleifen nun fünf Schleifen ausgeführt, wobei ich die erste Schleife am Master nur einlese und die 4 x 0x5555 erkennen muss und die Slave keine Daten in das Senderegister schreiben. Jetzt funktioniert es wunder bar. Danke für deine Anregung. Schönen Tag. Johann K.
Klatec schrieb: > Hallo Zusammen > > Ich habe ein Problem mit der Datenerfassung über die SPI Schnittstelle. > > Fünf PIC32MX795F512L bilden eine Erfassung von Lok-Adressen (Modellbahn) Warum hast Du so viele Prozessoren? Normalerweise vermeidet man tunlichst Multiprozessorsysteme, weil der Entwicklungs- und Testaufwand sehr viel höher ist. Ausnahmen sind räumlich verteilte Systeme. Mir scheint das Implementierungskonzept optimierungsfähig. fchk
hei, so wie ich es vestehe, nutzt du ein µC je Block, um die bis zu vier befindene Decoder(Lok) Adressen zu erkennen. Kann man auch mit einem µC und bis zu 16 Block machen. schönen Abend
>>>Warum hast Du so viele Prozessoren? Normalerweise vermeidet man tunlichst Multiprozessorsysteme, weil der Entwicklungs- und Testaufwand sehr viel höher ist. Also bei meinem Testsystem steuert ein PIC32 15 Stück PIC18 über SPI an. An jedem PIC18 hängen 24 Relais. Ich denke, die Zeiten vom 8255 sind vorbei. Kleine MCUs sind doch so billig....
Dirk F schrieb: >>>>Warum hast Du so viele Prozessoren? Normalerweise vermeidet man > tunlichst Multiprozessorsysteme, weil der Entwicklungs- und Testaufwand > sehr viel höher ist. > > Also bei meinem Testsystem steuert ein PIC32 15 Stück PIC18 über SPI > an. An jedem PIC18 hängen 24 Relais. > Ich denke, die Zeiten vom 8255 sind vorbei. > Kleine MCUs sind doch so billig.... schon mal über MCP23S17 nachgedacht? Da spart man sich die Weichware. In einem kommerziellen Produkt sind das auch Kosten - für die Programmierung während der Fertigung, Updates, QM,... fchk
Hallo Zusammen ich benötige zusätzlich 4 serielle Schnittstellen mit 250000 bps um die Lokadresse aus dem Digitalsystem (Lenz) auszulesen und daher verwende ich 4 Controller. Die Software ist kein Problem weil diese für alle vier die gleiche ist. Lg. Johann K.
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.