I2C-BUS (Tip und Rat?)

Gast #262704
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.
Gast #262705
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.
Gast #262708
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
Gast #262713
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
Gast #262715
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
Gast #262717
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren