Gibt es denn keinen, der vielleicht einen kleinen ASM-Code hat, mit dem zwei Atmegas miteinander über I2C kommunizieren können ?
Hallo,
ich komme jetzt an so einen Punkt, wo ich auch einmal zwei µC gleichzeitig verwenden möchte, die miteinander kommunizieren können. Dies geht ja bekannterweise über I2C. Ich habe mich schon über I2C erkundigt und auch gelesen wie einfach das doch mit Bascom anzusteuern ist - ähnlich leicht wie UART. Ich programmier jedoch einiges lieber in Assembler, jedoch habe ich niergends eine hilfreiche Anleitung gefunden, wie man in Assembler über I2C zwischen zwei Atmegas kommuniziert. Auch das Datenblatt konnte mir ohne Vorwissen nicht viel weiterhelfen.
Ich hoffe daher, dass mir hier vllt. jemand ein Beispielprogramm oder eine Internetseite mit Erklärungen oder Ähnlichem geben kann.
********************
Danke im voraus, MFG
ProgDom
Gibt es denn keinen, der vielleicht einen kleinen ASM-Code hat, mit dem zwei Atmegas miteinander über I2C kommunizieren können ?
atmel nennt das ganze einfach TWI (Two-wire Serial
Interface). unter dem stichwort findet man was im datenblatt...
prinzipiell scheint es ähnlich zu laufen wie mit dem uart: es gibt ne paar register zum konfigurieren, und ein datenregister wo man die daten reinschreibt, die dann automatisch gesendet werden...
Wenn Du mit meiner Seite vorlieb nehmen willst:
http://www.voidpointer.de/servoswitch
Dabei geht es zwar speziell um das Projekt eines Servocontrollers, aber Master- und Slave-Code für Hardware-TWI sind vorhanden. Ansonsten wollte ich mal meine AVR-Bastelkiste um I2C-Beispiele erweitern, bin aber noch nicht dazu gekommen...
Achim.
Das Datenblatt ist schon recht ausführlich, wie uwegw schreibt.
Es gibt Codeschnippsel in asm und (Pseude)-C und auch Erklärung, aus welchen Schritten ein I2C-Transfer besteht. Ist zwar kein fertiger Code, aber das erwartet auch niemend.
Am Anfang ist man von den Atmel-Dokus erst mal erschlagen, aber besser so als mies dokumentiert
Für den Anfang würd ich mir nen kleinen, billigen I2C-Sklaven besorgen, zB 24C64 oder so (serielles I2C EEprom). So kannst du erst mal den Master entwickeln und stabil zum Laufen bekommen, Lese- und Schreibzugriffe machen. Sonst wird die Fehlersuche übel, ob's dein Master oder dein Slave ist, der (hoffentlich nicht) rumzickt.
Alternativ zu I2C aka TWI geht natürlich UART (scheidet bei dir wohl aus) oder SPI (Serial Peripheral Interface). Auch dazu gibt's Code-Schnippsel in der Doku. SPI schaltet zwei 8 Bit, eins aus jedem Controller, zu einem 16-bit-Schieberegister zusammen.
Danke, jetzt hab ich doch schon einige mehr Anlaufstellen und mehr habe ich auch nicht gesucht.
Thx
Lesezeichen