Guten Tag zusammen, wie der Betreff schon sagt möchte ich I2C Adressen der Slaves dynamisch zuweißen. Geplant ist, das eine neue Komponente eine Standard Adresse hat und im System dann vom Master die tatsächlich benötigte erhält. Als IDE wird Bascom mit Basic verwendet. Prinzipiell klingt der Zusammenhang recht einfach. I2C Master schickt an I2C Slave mit default Adresse die benötigte I2C Adresse. Der Slave klingt sich aus und konfiguriert den Bus neu. Dim I2c_adresse As Byte I2c_adresse = 10 Config Twislave = I2c_adresse , Btr = 2 , Bitrate = 20000 zur Laufzeit könnte die I2C_adresse dann abgeändert und der Twislave neu konfiguriert werden. Beim Übersetzen zeigt Bascom keinen Fehler an. Der Master kann den Slave jedoch nicht erreichen. Config Twislave = 10 , Btr = 2 , Bitrate = 20000 Mit dieser Anweißung kann eine Kommunikation stattfinden. Es liegt also nahe das Bascom eine Konstante benötigt. Daher meine Frage, kann man diesen Zusammenhang elegant um gehen oder sieht Bascom dies nicht vor? lg CS
Machst ein MultiMaster - Master. Dann lässt du die Slaves beim Einschalten kurz einen Master sein welcher den anderen Master anruft, einen Code für Adresszuweisung ausgibt, einen Code für seine Funktion ausgibt. Anschließen ein Repeated Start, Master, empfangen. Der Master schaut in seine Tabelle und übergiebt die nächste freie Adresse an den Slave und schreibt in der Tabelle die funktion hinter die Adresse. Zur Abmeldung weiß ich nicht wie man das machen sollte .. das gleiche gilt für das einschalten mehrerer Slaves.
Ok... Hab gerad eine einfache Methode raus gefunden. Da sich Bascom mit Hand und Fuß gegen die Änderung wehrt, greif ich direkt auf das Register zu. Twar = New_i2c_adresse Damit erhält der Slave die aktuell gewünschte Adresse. Problematisch ist jedoch der Einschaltmoment. Man muss die I2C Adresse in EEPROM schreiben und bei jedem Start neu laden. Dann sollte es funktionieren. Oder habe ich was übersehen? mfg
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.