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.
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.
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
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!
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
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!
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?
Wenn du einen externen Pullup von z.B 4.7k dran hast dann solltet du dort normalerweise was sehen. Olaf
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
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.
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
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
"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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.