ich würde gerne eine I2C Kommunikation an meinem Pontech SV203 Controller realisieren. Mir stehen I/O Ports und auch ein A/D Wandler zur Verfügung. Ich habe nicht sehr viel Ahnung von Elektronik und dachte mir, ich könnte ja die I/O Ports für SDA bzw. SCL verwenden und den Status (High/Low) mittels der A/D Ports messen. Nun tauchen bei mir einige Denkfehler (Fragen) auf (s. auch Abb.):
1. So (wie in Abb.) kann ja kein Bus-Teilnehmer SDA bzw. SCL setzen?!
2. Irgendwie fehlt mir ja jetzt Spannung, hab jedenfalls nicht mehr 5V wenn ich messe (irgendwie auch logisch wegen den Widerständen?!).
Naja viel mehr die Frage, wie macht man es richtig, bzw. ist es mit diesen Ports überhaupt möglich?
PullDown ist auch nicht angesagt. Was du brauchst sind PullUps nach Vcc für SDA und SCL.
A/D-Wandler ist nicht gut, da sowohl I2C-Master als auch Slave SDA und SCL verändern können müssen. Optimal sind digitale I/O-Ports, die du zwischen LOW und High-Z schalten kannst. Kompletter Ausgangstreiber mit High-Treiber ist nicht gut, weil auf dem I2C-Bus ein 'Wired OR' benutzt wird, somit brauchst du Treiber mit Open Collector oder Open Drain.
Deine I/O-Lines kannst du umschalten zwischen IN (High-Z) und OUT, das sollte es tun.
Könnte so aussehen wie im Bild. OUT ist softwaremässig zu invertieren, weil der NPN invertiert.
Bedenke aber, daß deine Konstruktion recht langsam wird.
Wenn ichs recht verstanden habe, wird das Dings ja über PC und COM gesteuert, und der ADC braucht Zeit, um den Input zu liefern.
Wenn es ein I2C-Slave werden soll, musst du aber halbwegs echtzeitfähig sein: Wenn der Master SCL runter zieht wirst du SCL weiter nach unten ziehen, bis du das entsprechende Bit verarbeitet hast. Fraglich ab du das schnell genug schaffst, so daß der Master auch auf dich wartet.
Lesezeichen