Gast
#4071852
Hallo Forumisten, ich habe erfolgreich einen PIC16F876 als Slave programmiert. Compiler ist mikroBasic for PIC von MikroE. Siehe Anhang Slave.pbas Das funktioniert wunderbar beim Empfang und beim Senden. Getestet mit USB4ALL von Sprut als Master. Nun soll in der entgültigen Anwendung ein weiterer PIC16F876 als Master fungieren. Auch das klappt. Meistens. Sporadisch treten periodische Fluktuationen auf. Die zeigen sich wie folgt: Irgendwann während der Uebertragung werden alle Ausgänge auf 0 gesetzt. Wie Ihr im angehängten Bild erkennen könnt. Zu sehen sind 2 verschiedene Aufnahmen einer I2C Sequenz, getriggert mit dem auf 0 setzen eines Ausgangs, die aber mit jeder Sequenz alle auf 1 gesetzt werden. Eine Sequenz enthält einmal ein Byte schreiben und einmal ein Byte lesen, das wiederholt sich alle 100ms. Beides auf Adresse 0. Im Diagramm scheint alles OK zu sein. Interessant ist, dass sich das Auf-Null-setzen an verschiedenen Zeiten im Protokoll abspielen kann, und das Wieder-auf-Eins-gehen nicht erst beim nächsten Schreiben auf 1 geht, sondern ein paar ms VORHER. Als weitere Information habe ich auch das Programm des Masters angehängt, was aber lang ist, unvollständig und unübersichtlich. Wenn ich die Lese-Sequenz aus dem Master entferne, funktioniert es einwandfrei, darum habe ich vermutet, das der Fehler aus der VORHERGEHENDEN Lese-Sequenz kommt, was ich aber nicht Post-Triggern kann mit meinem alten LA. Darum suche ich nach Möglichkeiten, wie ich den Fehler eingrenzen kann. Da es mit einem anderen Master funktioniert, vermute ich einen Fehler beim Master. Aber die Routine funktioniert mit PCF8574 seit Jahren, darum habe ich sie kopiert. Andere Taktrate ändert nichts. Danke und Gruss Chregu
