PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Assembler und I2C ?



ProgDom
17.07.2005, 07:00
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

ProgDom
20.07.2005, 11:52
Gibt es denn keinen, der vielleicht einen kleinen ASM-Code hat, mit dem zwei Atmegas miteinander über I2C kommunizieren können ?

uwegw
20.07.2005, 12:46
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...

voidpointer
20.07.2005, 12:56
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.

SprinterSB
20.07.2005, 13:20
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.

ProgDom
20.07.2005, 13:46
Danke, jetzt hab ich doch schon einige mehr Anlaufstellen und mehr habe ich auch nicht gesucht.

Thx