-
genau das meinte ich, mit dem code zerschiesst man sich den I2C!
wandle es ein wenig ab
Code:
PORTC &= ~(1<<PC9); // port auf GND bei output und bei input pullup vopm board
DDRC |= (1<<PC9); // pull down über pin (LOW)
DDRC &= ~(1<<PC9); // pull up vom board (HIGH)
wenn ich das von SlyD richtig verstanden habe !
-
Ich möchte an den Port einen Transistor anhängen und damit die Beleuchtung, welche ich auf eine Erweiterungsplatine löten möchte, ansteuern bzw. einschalten.
Außerdem ist meine Idee später (wenn das mit der normalen Beleuchtung funktioniert) noch Blinker auf die Platine zu löten und ebenfalls anzusteuern ... und diese dann automatisch bei jedem Programm zu verwenden.
Kann man die obige Ansteuerung eigentlich für jeden Port verwenden?
-
das was ich geschrieben habe muss ich verneinen, das baut darauf auf, dass am board ein sog. pullup widerstand verbaut ist, hier im speziellen fall gehts um die I2C schnittstelle
-
Heißt das, dass mit dem SCL Pin kein Transistor (vor Transistor ein Vorwiderstand) ansteuerbar ist??
-
Du kannst den SCL Anschluss als normalen Ausgangspin definieren, du kannst dann aber kein I2C mehr verwenden, außer du schließt den Transistor dann ab. Für Erweiterungen würde ich den I2C immer freilassen.
Du kannst am SCL Anschluss einen Transistor anschließen, nur musst du dann den Anschluss nicht mit SCL sondern PC0.
-
Wie kommt man auf die PC0, im Code zuvor war es PC9.
Jetzt wirds verwirrend ...
-
Versuche mal selbst zu ergründen was PC0 bzw. PC9 bedeutet und was das mit SCL zu tun hat.
-
... wie ich in einem anderen Thread schon gesagt hatte:
Die beste Lösung ist anstatt die I2C Pins direkt zu benutzen, einfach einen Portexpander an den I2C Bus anzuschließen.
Man kann da rein theoretisch 127 Stück mit jeweils 8 Ports anschließen ;)
Es gibt dafür auch AD Wandler, Realtime Clocks, Temperatursensoren, Ultraschallsensoren usw. usf. ...
-
Kann man solche Portexpander eigentlich fertig kaufen?
-
Da gibts so einige
PCF8574
PCF8591
PCA9554
PCA9555
(google benutzen)