Hallo,
ich bin zur Zeit noch in der Theorie. Ich habe zwei Spektroskopmodule von Sparkfun (Spectral Sensor Breakout NIR & normal). Ich möchte sie beide
an einem ATMEGA644 betreiben. Dummerweise haben beide die gleich I2C-Adresse.
In der Praxis brauche ich die Module nicht zeitgleich, sondern nacheinander oder im Wechsel. Am Hardware-I2C-Port hängt schon eine Batterie an I2C-Geräten an (Expander, Display, Uhr, FRAM...).
Die schnellste Lösungsvariante wäre, wenn möglich, einen zweiten Software I2C-Port aufzumachen, kostet allerdings 2 Pins am Controller, die eh schon sehr knapp sind.
Zweite Überlegungsvariante wäre, 2 kleine ATTiny´s zu nehmen, jeweils ein Modul als Slave an einen der Tiny´s hängen und aus den Tiny´s wieder Slaves vom ATMega zu machen. Dadurch könnte
ich vielleicht den Adresskonflikt umgehen.
Oder dritte Variante, die Module wechselseitig als I2C ein- und aushängen. Müsste dann aber wahrscheinlich jedesmal wieder ein I2Cinit ausführen. Wäre wahrscheinllich etwas unschön, da jedesmal
die gesamte Initialisierungsroutinen der anderen I2C-Geräte durchlaufen werden müsste.
So, Frage, welche Variante könnte am Ehesten zielführend sein?
Gruß!
Benedikt
ich bin zur Zeit noch in der Theorie. Ich habe zwei Spektroskopmodule von Sparkfun (Spectral Sensor Breakout NIR & normal). Ich möchte sie beide
an einem ATMEGA644 betreiben. Dummerweise haben beide die gleich I2C-Adresse.
In der Praxis brauche ich die Module nicht zeitgleich, sondern nacheinander oder im Wechsel. Am Hardware-I2C-Port hängt schon eine Batterie an I2C-Geräten an (Expander, Display, Uhr, FRAM...).
Die schnellste Lösungsvariante wäre, wenn möglich, einen zweiten Software I2C-Port aufzumachen, kostet allerdings 2 Pins am Controller, die eh schon sehr knapp sind.
Zweite Überlegungsvariante wäre, 2 kleine ATTiny´s zu nehmen, jeweils ein Modul als Slave an einen der Tiny´s hängen und aus den Tiny´s wieder Slaves vom ATMega zu machen. Dadurch könnte
ich vielleicht den Adresskonflikt umgehen.
Oder dritte Variante, die Module wechselseitig als I2C ein- und aushängen. Müsste dann aber wahrscheinlich jedesmal wieder ein I2Cinit ausführen. Wäre wahrscheinllich etwas unschön, da jedesmal
die gesamte Initialisierungsroutinen der anderen I2C-Geräte durchlaufen werden müsste.
So, Frage, welche Variante könnte am Ehesten zielführend sein?
Gruß!
Benedikt