hi SlyD,
ok, verstanden...Es sind zwei völlig voneinander unabhängige Mikrocontroller. Die haben erstmal gar nix miteinander zu tun, sind nur lose über den I2C Bus miteinander verbunden.
(so wie eine Netzwerk Verbindung bei einem PC - zwei vernetzte PCs sind auch erstmal unabhängig voneinander, kannst aber natürlich per Remote Desktop oder SSH oder... den einen durch den anderen fernsteuern).
Die Beispielprogramme sind aber drauf ausgelegt das die I2CSlave.hex in die Base geflasht wurde sonst ist eben niemand da der auf die gesendeten Befehle reagiert.
ich habe jetzt die beiden (BASE & CONTROL) programmspeicher gelöscht, dann in die BASE das beispiel "RP6Base_LEDs.hex" und in CONTROL "RP6Control_LCD.hex" geflasht, beide programme liefen parallel ab. Ich hatte aber auch schon mal fälle, nur das in CONTROL geladene programm lief, das in BASE nicht. Hier fehlt mir noch die "regel", nach der das abläuft. Welches programm nun durch den druck auf den taster (neben dem flash-stecker) gestartet wird...
Aber egal, wenn ich mich auf das CONTROL modul konzentrieren will, sollte ich in der BASE wohl maximal das I2C slaveprogramm geladen haben, oder den programmspeicher löschen...
es sollte nur ein beispiel sein für eine funktion, die von der BASE quasi stellvertretend für CONTROL ausgeführt werden soll..Warum Du nun genau diese Befehle rausgekramt hast ist mir nicht so ganz klar. Da wird das ACS eingestellt und der Watchdog Timer aktiviert.
Für move wird CMD_MOVE und die entsprechenden parameter (Geschwindigkeit, Strecke, Richtung) über den Bus übertragen - das ist aber nur EINE I2C Transaktion.
hierzu werde ich sicher noch fragen haben...Zentral ist dabei
I2CTWI_transmitBytes(I2C_RP6_BASE_ADR, transmit_buffer, 6 );
(alle vorher in das Array geschriebene 6 Bytes über den Bus übertragen)
danke erstmal...
Lesezeichen