Forum: Mikrocontroller und Digitale Elektronik I2C-BUS (Tip und Rat?)


von Sandra Piepiers (Gast)


Lesenswert?

Guten Morgen Freunde!
Ich habe ein Projekt vor mir und möchte einen I2C-Bus zwischen einem
ATmega16(Master) und mehreren ATtinys2313(Slaves) realisieren.
Ich wollte den Erfahrenden-Experten unter euch mal fargen, wie jetzt
mit dem Projekt am schlausten beginne. Hab Ihr Tips für mich?
Ich programmiere in C! Ist es sinvoll mit der Routine von diesem Pester
zu arbeiten? Habe schon einiges gelsen und habe auch schon eine kleine
theoretische Ahnung wie der BUS fuktioniert.jedoch habe ich noch keinen
genauen Ansatz wie ich anfange zu programieren....!
Bin für jeden Tip und Rat dankbar.!

Achja noch eins hat jemand Ahnung, ob es LCD-Display gibt, die I2C-Bus
kompatibel sind?

Liebe Grüsse

Eure Sandra P.

von cazy horse (Gast)


Lesenswert?

Prinzipiell gehts, und wenn du bei deinem Ansatz bleibst (1 master,
mehrere slaves) sogar rel. einfach, Multimaster ist etwas aufwändiger.
Die USI des Tiny2313 ist gewöhnungsbedürftig, so richtig hinbekommen
hat es hier bis jetzt soweit ich weiss noch keiner. Der
start-condition-detector funktioniert aber prima, den Rest kann man
dann leicht in Software machen.
Das wäre doch mal was, wenn du das schön dokumentiert hinbekommst.

Display: gibts, die Auswahl ist aber berenzt und meist recht teuer.
Auch hier wäre dann wahrscheinlich ein Tiny2313 + paralleles Display
der bessere Weg.

von Ppp M. (sanic)


Lesenswert?

Hallo,
als Anfang sind die Application Notes von Atmel sehr praktisch.
Mit denen habe ich meine erste I2C Implementierung auf den Atmels
gemacht.

Grüße

von Sandra Piepiers (Gast)


Lesenswert?

Nein der Multimaster  kommt für mich nicht in Frage!
So habe jetzt mal die routine von diesem Peter runtergeladen und jedoch
finde ich diese Routine nicht sehr durchsichtig!
muss mal gerade mich einwenig einarbeiten!

von Peter (Gast)


Lesenswert?

Ich habe so etwas mit einem ATMega 128 als Master, programmiert mit der
CodeVision I2C Library. Das sind nur ein paar Befehle.
Als Slave have ich ATTiny 26, da einfach in C programmiert weil die
keinen I2C unterstützen.
Ein weiterer Slave ein ATMega 32, aber da mit Benutzung des TWI
Interfaces interruptgesteuert.

Läuft soweit ohne Probleme.

Peter

von Sandra Piepiers (Gast)


Lesenswert?

ich bin dabei das test Programm von Peter F. ins AVR-Studio
einzubinden....irgendwas mache ich noch falsch!
bin in C-Prog neu ....habe vorher asm gemacht!

von Sandra Piepiers (Gast)


Lesenswert?

So habe nun das Programm von Peter F. compiliert bekommen und habe es
auf den ATmega geladen.!
Jetzt müßte ich dorch zumindest am SCL einen Takt messen oder?

von Olaf (Gast)


Lesenswert?

Wenn du einen externen Pullup von z.B 4.7k dran hast dann solltet
du dort normalerweise was sehen.

Olaf

von Sandra Piepiers (Gast)


Lesenswert?

Warum messe ich dort leider nix? Menno!

von der andre (Gast)


Lesenswert?

Tag Sandra..

Die i2c libary von Peter Fleury ist eine SOFTWARE i2c libary.

Der ATmega16 hat allerdigns auch ein Hardware i2c.
An welchem SCL port mist du denn ?

An dem Hardwareseitgen vom ATmega ? An dem sollte nichts passieren.

In Fleurys Routine wird am Anfang ein Port als SDL deklariert..
dort solltest du dann auch das takt Signal finden.(vorrausgesetz du
hast Fleurys libary initialisiert.. und einen Pull up Widerstadn dran /
notfalls langt zum testen auch erst der intere des mega16)

Empfehlen würde ich dir auf jeden Fall Hardware i2c zumindest auf den
Bausteinen wo es vorhanden ist.

Selbiges ist im Datenblatt auch sehr gut Erklärt mit Beispielcode in c
und ASM wenn ich mich recht entsinne

von Sandra Piepiers (Gast)


Lesenswert?

habe die frequenz und die Ports eingestellt.
Möchte gerne den Hardware i2c-bus nutzen.!
und demnach müsste SCL an PC0 und SDL an PC1 sitzen.
Habe naturlich an an die Pull up Wiederstände gedacht.

von TheMason (Gast)


Lesenswert?

Hallo Sandra,

zum Thema I2C Display :

Es gibt solche displays zwar, aber ich würde den kostengünstigeren Weg
nehmen und einen PCF8574 (I2C-port Expander) nehmen und den an ein
Text-Display anflanschen (4-Bit Modus). Selbst ein Grafik Display ist
möglich (dann braucht man allerdings 2 PCF8574).
Den 4-Bit Modus beim Text-Display zu nutzen ist sinnvoll da man dann
nur 6 Port-Pins benötigt. Somit hat man noch 2 Pins übrig
(Taster/LEDs).
Habe gestern mein Display ans laufen gebracht. Kann ich nur empfehlen

Gruß
Rene

von Peter (Gast)


Lesenswert?

mit einem PCF8574 ist die Ansteuerung eines character Displays zwar
möglich, man kann die Arbeit aber auch einfacher machen:

I2C LCD Adapter für Character LCD
http://www.channaa.com/html/i2c_lcd_adapter.html

I2C GLCD Adapter für Graphik LCD (KS0108 & T6963C)
http://www.channaa.com/html/i2c_glcd_adapter.html

von A.K. (Gast)


Lesenswert?

"Die USI des Tiny2313 ist gewöhnungsbedürftig, so richtig hinbekommen
hat es hier bis jetzt soweit ich weiss noch keiner."

So wild fand ich es eigentlich nicht. Netterweise gibt es dazu ja einen
AppNote von Atmel - nicht ganz ohne Fehler freilich - und bei avrfeaks
war etwas zu finden. Darauf aufbauend hat dann eigentlich alles
funktioniert wie es sein soll, inklusive clock stretching und
power-down.

Arg viel Code braucht's dafür auch nicht (540 Bytes C), nicht mehr als
für Interrupt-gesteuertes Hardware-I2C.

von marc989 (Gast)


Lesenswert?

HI

hat jemand von euch schonmal mit größeren Kabellängen bei i2c
gearbeitet. Ich bräuchte bei einer Hausverkabelung ein Bus von ca
100-300 metern. Denke es geht bei langsamer datenrate. Aber hätte es
gern nochmal bestätigt, da ich sonst auf ein anderen Bus (CAN, LIN,..)
umsteigen müsste.

Gruß MARC

von Rahul (Gast)


Lesenswert?

nimm doch gleich CAN. Erfordert vielleicht ein paar Bauteile mehr, ist
aber störsicherer...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.