Forum: Mikrocontroller und Digitale Elektronik Mit I2C alle Slaves ansprechen (AVR, Arduino Nano)


von Jonas R. (Gast)


Lesenswert?

Hallo liebe Mikrocontrollerfreunde,

ich arbeite gerade an einem Projekt bei dem mehrere µC (Arduino Nano) 
über die I2C Schnittstelle miteinander kommunizieren sollen. Meine Frage 
bezieht sich auf den speziellen Fall das man alle Slaves mit der Adresse 
0 ansprechen will. Im diesem Wiki AVR TWI von mikrocontroller.net 
wird erwähnt das die Adresse 0 dafür reserviert ist alle Slaves 
anzusprechen.

Nun habe ich ein Programm geschrieben um das zu testen. Ich benutze die 
Bibliothek twi.h von einem "Nicholas Zambetti". Diese wird auch von der 
Wire.h verwendet die bei der Arduino IDE beiliegt. Das Programm 
funktioniert soweit das die Kommunikation mit der richtigen Slaveadresse 
läuft. Nur das senden an die Adresse 0 funktioniert nicht. Da bekomme 
ich von der Funktion twi_writeTo() immer den Fehler 2 =  "address send, 
NACK received" zurück.

Nun meine Fragen:

Ist es überhaupt möglich alle Slaves mit der Adresse 0 anzusprechen wenn 
es sich bei den Teilnehmern auch um µCs handelt?

Und wenn ja: Hat jemand einen kleinen Tipp für mich wo der Fehler liegen 
kann oder, noch besser, man ein Beispiel dafür herbekommt.


Link zu der twi.h die ich verwende:
https://android.googlesource.com/platform/external/arduino/+/d5790d78880d4bd60be277ee20e53a851aa8c116/libraries/Wire/utility

von Limi (Gast)


Lesenswert?

Ist die Adresse 0 bei den Slaves implementiert? Neben der eigenen 
Adresse muss der Slave auch auf die Adresse 0 abfragen.

von Peter D. (peda)


Lesenswert?

Ein Slave reagiert auf Adresse 0 in 3 Fällen:
1. Seine Adresse ist 0.
2. Er hat ein Adressenmaskierungsregister.
3. Er hat den general Call enabled.

von Jonas R. (Gast)


Lesenswert?

Erst mal vielen Dank für die zwei Antworten,

der Tipp mit dem "general Call enabled" hat mich gerade sehr weiter 
gebracht. Habe mal im Tutorial danach gesucht und auch was gefunden.

Das erste Bit (LSB) im Register TWAR (TWI Adress Register), hat den 
Namen TWGCE (TWI General Call Recognition Enable). Damit kann man diese 
Funktion wohl aktivieren. Ich hätte den Text wohl besser ganz durchlesen 
sollen anstatt ihn nur zu überfliegen. Werde es nachher mal testen wenn 
ich Zuhause bin.

Vielen Dank für den schnellen Tipp :)

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
Noch kein Account? Hier anmelden.