Hallo!
Ich würde mehrere Bausteine mit gleichen Adressen an nur einem I2C Bus zwischen un- und erlaubten Adressen bzw. per Enable (falls vorhanden) per µC HW-mässig umschalten.
Hi,
sehe ich es richtig, dass es nicht möglich ist, in Bascom den Hardware TWI (I2C) und die BASCOM-eigene Implementierung des Software-TWI parallel zu benutzen? Ich benötige einen zweiten I2C Bus, weil ich drei gleiche I2C Bauteile verwenden will, bei denen hardwaremäßig nur zwei verschiedene Adressen einstellbar sind. Danke für alle Hinweise!
Gruß
Malte
Geändert von malthy (06.05.2016 um 09:03 Uhr)
Hallo!
Ich würde mehrere Bausteine mit gleichen Adressen an nur einem I2C Bus zwischen un- und erlaubten Adressen bzw. per Enable (falls vorhanden) per µC HW-mässig umschalten.
MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!
CS oder Enable sind an dem Baustein (wie meist bei I2C) nicht vorhanden, sonst würde ich diese Möglichkeit natürlich nutzen.
Wenn sie nur bei bestimmter Adresse aktiv sind, dann werde ich versuchen sie per andere Adressen "abschalten". Sonst vielleicht könnte man die Ausgänge an I2C Bus per HW multiplexen.
MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!
Hallo,
Vielleicht hilft dir so etwas weiter:
http://cache.nxp.com/documents/data_...6A.pdf?pspll=1
http://cache.nxp.com/documents/data_...08.pdf?pspll=1
Hier kannst du selber suchen:
http://www.nxp.com/products/interfac...0&tab=Products
MfG Peter(TOO)
Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?
Hallo,
um die Eingangsfrage zu beantworten:
Nutze nur Soft-TWI. Im Code kannst Du mit config TWI die PortPins wechseln.
Wenn das Herz involviert ist, steht die Logik außen vor! \/
Hallo,
Die Soft-TWI ist zwar sehr flexibel, was die Pins angeht aber eine Simulation der vorhanden Hardware. belastet halt die CPU, da sie sich selbst um jedes Bit kümmern muss.
Die CPU muss das aktuelle Datenbit extrahieren und an SDA senden und dann SCL toggeln und dabei noch das Timing beachten. Wenn Clockstretching unterstützt wird, muss noch SCL abgefragt werden.
Etwas komplizierter wird es dann, wenn man einen Slave implementieren will. Hier muss dann der Bus eigentlich dauernd überwacht werden, weil man nie weiss man der Master was will. Praktisch wird man dies aber nur mit Interrupts erreich, was dann die Freiheit bei der Pinwahl wieder einschränkt.
Bei der Hardware Variante muss sich die CPU nur um jedes Byte kümmern, hat also wesentlich weniger zu tun, den Rest übernimmt die Hardware.
Allerdings sind die Pins fest vorgegeben.
Die Belastung der CPU hängt natürlich auch vom Datenvolumen auf dem I2C-Bus ab.
MfG Peter(TOO)
Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?
Hallo,
I2C-Multiplexer/Hubs sind mir bekannt. Das wäre die Variante der Wahl wenn es mit vertretbarem Aufwand nicht anders geht.Vielleicht hilft dir so etwas weiter [...]
Wenn ich es richtig sehe funktioniert es eben gerade nicht zur Laufzeit die Pin-Zuordnung zu ändern. Das habe ich so irgendwo gelesen und auch erfolglos probiert.Nutze nur Soft-TWI. Im Code kannst Du mit config TWI die PortPins wechseln.
Dass I2C per Software auf die CPU geht ist klar, das wäre in diesem Falle vertretbar (es handelt sich um einen I2C Master, der Controller hat ansonsten auch nicht übermäßig viel zu tun). Ich wunderte mich nur dass Bascom ja eine eigene Implementierung von I2C in Software bietet, man diese aber augenscheinlich nicht gleichzeitig mit dem Hardware TWI benutzen kann. Finde ich nicht so ganz einleuchtend - wobei mir schon klar ist, dass das mit der Bascom High-Level Syntax für die I2C Funktionalitäten kollidieren würde ...
Vielen Dank trotzdem für Eure Hinweise!
Gruß
Malte
Hallo Malte,
hast Du eine Lösung gefunden ...
Bei I2C Bausteinen mit externem Adress-Eingang könnte man diesen auch zu Selektion nehmen ...
Alle Bausteine auf die gleich Adresse und den Baustein den man ansprechen möchte selektiert man über eine Leitung auf die andere freie Adresse ...
Lesezeichen