Gast
#4221334
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.
