-
-
Erfahrener Benutzer
Roboter-Spezialist
Hallo Dirk, ich schau gleich rein, hab jetzt wieder Zeit. Ja so in etwa dachte ich mir das. Mal genauer hinsehen wo es da klemmt...
Aber vorweg...
Initialisiert werden hier beide Seiten im Programm mit I2CTWI_initSlave(wert_egal); zumindest in der Version die du jetzt noch hast. Die Werte für Speed und Adresse müssten aus dem jeweiligen twi_target.h kommen, je 100khz und base dez.10, m32 dez.12. für die EIGENE Adresse, den jeweils anderen 10->12 und 12->10 muss man im Programm als Ziel in den Funktionen mitgeben. Das reicht eigentlich. Ach ja.. in beiden twi_targets muss natürlich TWISLAVE aktiv sein weil beide Seiten Registersets bereit stellen sollen. Und die beiden Tandems dürfen sich natürlich nicht gegenseitig in die Register schreiben oder sonst wie ins Gehege kommen.. also z.B. einen Master/Slave Verbund auf der Base in die Register 0(1) bis 3(4) packen wie bisher, den anderen neuen Master/Slave Verbund mit Slave auf der M32 in die Register z.b. ab 8(9)... (die Klammern jedes mal für den Master weil der ja erst ab reg, 1 liest.)
Eigentlich kann man auf beiden Seiten die regs 0-3 nutzen aber damit man sich nicht verhaspelt würd ich das erst mal logisch in 2 Bereiche trennen, später wenns klappt und verstanden ist müsste man es auch runter setzen können. <- Die Aussage is glaube ich Quark, es is recht eindeutig was wo hin geht.. sorry..
In folgenden Versionen wird es kein differenziertes Master/Slave Init mehr geben, und ist nur aus Kompatibilität (wie gepostet) noch vorhanden, wird aber von meinem .h File auf eine gemeinsame Init Funktion per Macro umgebogen.
Damit sollten erst mal die Unklarheiten beseitigt sein, warum das Programm klemmt, da schau ich nun und Poste es wohl als Edit.
EDIT:
Ja zum Init sagte ich schon, in beiden:
// die Funktion holt sich die Addresse aus twi_target.h
I2CTWI_initSlave(42); // parameter egal
Aber da klemmt noch mehr... erst mal gucken ob die Einzeln gehen... also in der Base
// task_Master();
und im M32
// task_Slave();
das ist ja die alte laufende Konstellation...
Der extIntOFF(); Befehl ist auch noch in der Base.. wir sprachen drüber wie ungeschickt es wäre den, E_INT1 als Ausgang zu steuern
Hatte ich extra noch gesagt das der raus muss
Aber auch das ist noch nicht der Fehler...
LG Rolf
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen