mikrocontroller.net

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


Autor: Sandra Piepiers (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: cazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ppp Mmm (sanic)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sandra Piepiers (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sandra Piepiers (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Sandra Piepiers (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Olaf (Gast)
Datum:

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

Olaf

Autor: Sandra Piepiers (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum messe ich dort leider nix? Menno!

Autor: der andre (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sandra Piepiers (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: marc989 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rahul (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.