I2C geht an sich ohne INT.
Das wird nur manchmal verwendet, damit ein Slave den Master aufmerksam machen kann, daß Daten zu holen wären.
lei, lei *g*
Hi,
Ich will mal generrell wissen, wie ich das mache, wenn ich mehr als 1 Gerät am I²C Bus anschließ. Es geht nicht um den schaltplan (ich denke alles wird parallel angschlossen), sondern um das Ansprechen der geräte. So viel ich mitbekommen habe, hat jedes gerät eine adresse und dann kann ich es dadurch ansprechen, bits schicken und empfangen.
Brauch ich da jetzt noch zwingend die INT leitungen, oder würde das ganze auch vollständig ohne ihnen funktionieren?
generrell sind (geplant) alle Geräte AVRs, welche in C programmiert werden.
Danke im Voraus,
Thomas
I2C geht an sich ohne INT.
Das wird nur manchmal verwendet, damit ein Slave den Master aufmerksam machen kann, daß Daten zu holen wären.
lei, lei *g*
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
www.sprut.de ist eine sehr gute erklärung. - und natürlich auch hier im RN-Wissen!
Im wesentlichen gibt es 2 Leitungen - SDA & SCL und einen Master.
Alle Geräte haben außerdem eine unterschiedliche Adresse. Diese Adresse ist zur hälfte vorgegeben (Geräteabhängig) und die andere Hälfte ist Userdef.
Master->Slave communication:
Master macht eine "Startbedingung" (siege Links)
Master klopft die 8 Bit der Adresse rein
Master wartet auf ACC
Master klopft wieder 8 Bit rein...
...
..
...
Dazwischen kann auch der Slave antworten auch ohne das der Master eine Stopbedingung setzen muss. hängt halt von den befehlen ab, die er bekommt.
Hi Gärtner,
generrell soll dass ja ja zu meinem Wettbewerbsroboter nächstes jahr dazugehören. Und da hab ich etwas angst, dass die Signale zu lange brauchen um von Board zu Board zu wandern. Somit werde ich INT in meiner weiße verwenden.
Dieses Board bekommt normalerweiße immer nur Daten geschickt. Aber andere werden dann oft auch nur daten senden müssen.
Wie hoch darf die I²C Übertragungsrate max sein, wenn mein uC auf 8 MHz liegt? oder auch auf 16MHz? [edit]hab ich grad rausgefunden[/edit]
Hi,
wie sieht das eigendlich mit der Zuweisung von Master und Slave beim I2C-Bus aus. Zum Beispiel zwei AVR's über I2C verbinden.
Kann man auch mehrere Master an einen I2C-Bus betreiben?
Gruß Sigi
Ja, I2C ist multimaster-fähig, und das wird vom TWI der AVRs auch unterstützt. Arbitration und alles was mach braucht, ist in der TWI-Hardware drin.
Wenn ein µC also was zu sagen hat (z.B. neue Messwerte, Ereignis, Weltuntergang, ...) wird er zum Master und unterrichtet einen anderen Busteilnehmer davon oder sogar alle durch einen Rundruf (global Call).
Mehrere Master kommen sich nicht in die Quere, das wird durchI2C-Protokoll geregelt.
Ne Multimaster-Kommunikation ist natürlich etwas mehr Arbeit zu proggen, aber es ist ne feine Sache und die AVR-Manuals beschreiben prima wie es geht und auch I2C selbst ist vorbildlich erklärt.
Disclaimer: none. Sue me.
es gibt unterschiedliche Frequenzen, 400khz ist max. aber das hängt auch von den geräten ab!!
AVR als TWI-Master wird für SCL ein maximaler Takt von
F_CPU / 96 angegeben, bei F_CPU=16MHz sind das ca. 166kHz. Bei neurern AVRs geht's vielleicht höher. Schau dazu doch mal ins Datenblatt.
Disclaimer: none. Sue me.
Schau doch mal hier, vielleicht kannst Du Dir ein paar Anregungen holen:
http://www.mikrocontroller.net/forum/read-4-246060.html
generrell sind (geplant) alle Geräte AVRs, welche in C programmiert werden. ...
der keil-c-compiler ist hervorragend für wettbewerbe.
win-avr-c ist in nicht klar durchschaubar wenn man die ganzen compilereistellungen für die optimierung nicht beherrschen tut.
hat schon manchen wettbewerbskandidaten vom pferd geschnmissen.
den keil-compiler gibt es schon ab 400 euro.
Lesezeichen