PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : i2c-slave adresse vergeben



patti16
31.10.2005, 16:13
hallo

wie kann ich einem Atmega 8 eine adresse zu teilen die ich dann als Slave benutzten kann??

gruß
patrick

tristate
31.10.2005, 16:16
einfach die adresse ins twar schreiben !?

patti16
31.10.2005, 16:20
hhmmm..........wie geht das?

hrei
31.10.2005, 16:32
einfach die adresse ins twar schreiben !?

Im Prinzip ja, sprach Radio Eriwan, aber wie das mit Radio Eriwan so ist... :-).

Um die AVRs unter Bascom als Slave nutzen zu können, braucht man zunächst die Add-On Library, die sowohl Soft- als auch Hardware Slavebetrieb unterstützt.

Für Hardware TWI sieht die initialisierung dann z.B. so aus:

Config Twislave = &H70 , Btr = 1 , Bitrate = 400000

Beispiele finden sich auf der MCS Seite, in der Hilfe und auch auf meinen Seiten.

Grüße
Henrik

patti16
31.10.2005, 16:34
glaube ich habe mich verlesen, was ist den genau eine library

gruß
patrick

hrei
31.10.2005, 22:18
glaube ich habe mich verlesen, was ist den genau eine library


Das ist eine Bibliothek, ein Modul, schlagmichtot... welches entweder bei Bedarf vom Compiler automatisch eingebunden wird (wie die I2C-Slave Library), oder händisch am Anfang des Codes mit $lib "name.lib" eingefügt wird. In beiden Fällen muss diese Datei im LIB Verzeichnis von Bascom stehen.

Die hier erwähnt Bibliothek muss zusätzlich bei MCS käuflich erworben werden.

Wie ich dieser Frage meine entnehmen zu können, hast Du noch kaum Erfahrung mit dem Programmieren. Da ist das Slavehandling unter Bascom evtl. nicht gerade die beste Idee um Erfahrungen zu sammeln. Es erfordert einiges an Vertrautheit mit dem I2C-Protokoll. Also erst mal TWI/I2C auswendig rauf und runter büffeln.

In Assembler geht das auch anders, einfacher wird die Sache aber nicht, ganz im Gegenteil.

Grüße
Henrik

patti16
01.11.2005, 17:41
ich werde mich dann wahrscheinlich dann auf spi spezalieseren habe auch gemerkt das twi sehr langsam ist.

danke für die antworten

gruß
patrick

tristate
03.11.2005, 00:27
na ich weiss ja nicht was du an daten senden/emfangen willst aber 400khz is ja wohl nicht gerade langsam...
mfg

patti16
03.11.2005, 08:29
ist aber langsamer als spi habe ich erfahren und wenn man will kann man ja auch mal bestimmt beides nutzen wie ich das vorhabe wegen dem ds1621


gruß
patrick

SprinterSB
03.11.2005, 10:26
Kommt drauf an, was man haben will...

Die 400kHz beim IIC ist die Frequenz von SCL. Um ein Byte zu senden ist man dann bei maximal 50kHz. Für 1 Byte vom Slave abzufragen kann man 4 Bytes Transfer rechnen.
SlaveAdresse - DatenAdresse - SlaveAdresse - Datum
Wobei das günstiger wird, wenn man mehrere Bytes abfragt. Damit ist man bei rund 12 kb/s bzw 80µs pro Transfer.

Mit SPI kommt SCK mit 8MHz rüber bei 16MHz MCU-Takt. AVR als SPI-Sklave verkraftet aber leider nicht so viel, da wären es nur 4MHz. Das wär gegenüber IIC schon mal Faktor 10.

Wobei die Software im SPI-Sklaven fix genug sein muss, sonst verpasst man was. Beim IIC mit TWI kann das nicht passieren, weil der Sklave den Bus bremsen darf via SCL-Stretch.

patti16
03.11.2005, 12:15
joar dann brauch man aber auch wieder rum die i2c-slave libary.
wollte die eigentlich nicht kaufen.


gruß
patrick