@PLC: Wenn ich das richtig überblicke sind aktuell folgende 2 Probleme bei Dir offen.
Problem 1: Selfbus-Updater wird durch Betätigung eines Lichtschalters ins Nirvana geschickt.
Analyse: Es gibt eine Auffälligkeit im Busmonitor: es wird plötzlich jede zweite Nachricht mit LL_NACK zurückgewiesen. Wir wissen nicht, wer das LL_NACK schickt.
Problem 2: Mehrere Geräte im Programmiermodus sobald das neue Rauchmeldermodul mit aktueller Firmware am Bus hängt.
Analyse: Hier finde ich Deine Infos von
gestern 17:49 höchst interessant und hilfreich. Bild 4: Wenn das Modul mit aktueller Firmware
nicht am Bus hängt, dann wird der PhysAddrRead-Broadcast nur 1x gesendet und zuverlässig kommt nur 1 Antwort. Bild 2: Wenn das Modul mit aktueller Firmware mit am Bus hängt, dann wiederholt der IP-Router den PhysAddrRead-Broadcast obwohl da (angeblich..., s.u.) ein LL_ACK zurückkommt. Originalnachricht und 3 Wiederholungen werden vom LPC922-Rauchmeldermodul jeweils beantwortet, so entstehen vier Geräte im Programmiermodus. Hab es in der alten Lib nachgesehen: dort findet keine Prüfung des Repeated-Flags statt und es können bis zu 8 Nachrichten zum Versand "vorgemerkt" werden. Das ist sicher ein Problem, das hier aber eben nur auftritt weil der IP-Router plötzlich den Broadcast wiederholt. Die Frage ist: warum?
Das klingt für mich nach einem Timingproblem. Vielleicht senden wir nach dem LL_ACK in der Pausenzeit nochmal was auf den Bus und machen das LL_ACK damit ungültig?! Das Timing der Wiederholungen ist jedenfalls auch interessant, der IP-Router wiederholt nach 19-20ms, also so 180-190 Bitzeiten. Laut KNX Spec würde man dieses Verhalten eher bei einem LL_BUSY erwarten als bei einem LL_ACK oder LL_NACK, daher hatte ich oben "angeblich..." geschrieben.
Hast Du ein Oszi?
@Darthyson: Andere Ideen wie wir Timingprobleme näher untersuchen könnten?