-
Danke dir, SlyD!
Die beiden Voids und so habe ich glaube ich schon richtig gestellt.
Nur in welche Register soll ichs dann schreiben?
Ich will ja, dass der Slave diese Aufgabe übernimmt... Die M32 hat bei mir außer Beepen, Servos und Taster nix zu tun.
Aber natürlich soll sie auch noch die eigenen Register abarbeiten, die von der M128 kommen.
-
ah mmm - Ich hatte den Anfang vom Thread nicht gelesen:
> Ich habe ein Slave-Programm für die M32, jedoch soll sie nun auch über I2C einen
> Kompass (CMPSxx) und einen US (SRF02) auslesen und in die eigenen I2C-Register schreiben.
Wenn die M128 Master ist, dann MUSS diese ALLE I2C Slaves kontrollieren.
Du kannst nicht einfach einen der Slaves verwenden um andere Slaves auszulesen das kann also nicht richtig funktionieren.
--> Dazu wäre eine Mulit-Master I2C Implementierung notwendig.
Die standard Lib unterstützt das nicht.
Du könntest allenfalls eine Software I2C Master Implementierung auf der M32 probieren und zwei frei I/O Ports für ein separates I2C Bus Segment nutzen. Also keine direkte Verbindung zum Haupt Bus. Macht aber eigentlich keinen Sinn.
MfG,
SlyD
-
Ach so.
Dann sollte ich die SRF02-Abfrage doch in die M128 schieben... Hatte ich schon mal, nur irgendwie lief das Programm dann ordentlich viel langsamer. Gibts da einen Grund für?
Und reicht die oben geschriebene Funktion "task_SRF02" eigentlich komplett für die SRF02-Abfrage aus? Ich habe dafür schon Libs gesehen, die 4 und mehr Funktionen hatten, Initialisierungsfunktionen etc.
-
> nur irgendwie lief das Programm dann ordentlich viel langsamer.
Wenns blokierend programmiert wurde natürlich.
Der I2C Bus macht ja nur 100 bis 400kbit/s das dauert schon etwas.
Wenn Du beim SRF02 noch was initialisieren willst, dann mach das halt ;)
Brauchen tut man das vermutlich nicht (ich hab die Doku nicht auswendig im Kopf - musst Du selber lesen ;) )
EDIT:
Zum "dauert etwas":
Der SRF02 Ping braucht natürlich etwas um zurückzukommen - 65ms oder so.
In der Zeit kann man natürlich andere Dinge tun.
-
Cool, vielen Dank!
Werds auf die M128 schreiben und mal sehen, wies geht ;)
-
Hmm, habe jetzt die SRF02-Lib von FabianE. hergenommen, und mir wird immer ein Wert um -3500 übertragen. Egal, ob ich auf die Fensterscheibe 4 Meter weit weg ziele, oder meine Hand 20 cm weit weg vom SRF halte. :( Und auch wenn ich die Hand hin und her bewege, ist der resultierende Wert nicht wirklich linear.
Hat jemand Erfahrung mit der Lib von FabianE. auf der M128???