Hallo Ich wolte fragen ob mir vieleicht jemand beispielcode oder ähnliches für den TWI bus schiken kann. Ich möchte über TWI einen PCF 8574 und später vieleicht noch ein eeprom ansteuern. Aus dem Datenblatt des Mega8 werd ich nicht besonders schlau. Hier im Forum hab ich zwar schon einiges über den TWI (I2C) bus gefunden, aber leider keien assemblerrotinen. Ein Link (http://www.avr-forum.com/avrsource.html) zu einer seite hat auch nicht fungtioniert.Ich hoffe es ist nicht zu aufwendig mir das zu erklären. mfg Max
Ich habs mit den Datenblättern eigentlich gut hinbekommen. Allerdings habe ich die Routinen Interrupt-basiert geschrieben, da ich sonst zeitmäßig in meiner Hauptroutine nicht mehr hingekommen wäre - ist für den Anfang vielleicht etwas starker Tobak. Die Beispielcodes aus den Datenblättern kann man fast 1:1 übernehmen. Wo genau hängts denn?
Hallo thkais mir ist noch nicht genau was ein interrupt mit der übertragung per TWI zutun hat. kannst du mir dein programm mal schiken? mfg Max
@Max hier ein Thread mit 2 Assembler Dateien in verschiedenen Anhängen Weiß aber nicht ob die Funktionieren. http://www.mikrocontroller.net/forum/read-1-42680.html#42680 Ich benutze Software I2C mit dem 90AT2313 nach der Appnote 300 Gruß Jörg
Hallo Jörg Ich hab mir die beiden programme mal angesehen. Werd sie mal genauer untersuchen. Danke. Das Appnote 300 hab ich auf der Atmel Seite nicht gefunden. mfg Max
@Max Stimmt die Appnote 300 I2C-Master hat Atmel wohl runtergenommen. Auf der Seite http://www.avrfreaks.com/Tools/appnotes.php kannst Du die noch runterladen. Dort ist auch ein Software I2C-Slave Appnote 302. Ein Fehlerquelle bei mir war am Anfang die Adresse der Bausteine. Gruß Jörg
Die Appnotes beziehen sich (wenn ich mich richtig erinnere) auf eine Software Lösung. Dadurch kann man die Vorteile der Hardware nicht nutzen, aber es funktioniert auch. Die TWI-Schnittstelle kann entweder linear (z.B. als Subroutine) verwendet werden, oder Interrupt-basiert. Als Subroutine hast Du immer wieder Wartezyklen, die nicht weh tun, wenn Du Zeit hast. Nach jedem Vorgang mußt Du auf die Ausführungsbestätigung der TWI-Schnittstelle warten. In der Softwarelösung mußt Du das gezwungenermaßen auch. Interrupt-basiert heißt: Man löst einen TWI-Vorgang aus, kann sofort ins Hauptprogramm zurück und die Schnittstelle löst einen Interrupt aus, wenn sie fertig ist. Dann kann man entsprechend reagieren und verliert sehr wenig Zeit in irgendwelchen Warteschleifen. Ich muß mal schauen, inwiefern ich die TWI-Routinen aus meiner Anwendung herausschälen kann. Wenn Du die TWI linear benutzt, ist sie nicht schwerer zu programmieren, als die Softwarelösung. Wichtig ist auch, daß Du das I²C-Protokoll kennst und weißt, welche Informationen wann gesendet werden müssen. Ein PCF8574 ist relativ einfach anzusteuern, bei einem EEProm wirds schon interessanter (repeated start condition bei Lesezugriff). Welchen Controller benutzt Du?
Hallo @Jörg Danke, habs gefunden. @thkais ich glaub, die Software lösung werd ich nehmen. dann kann ich die ganze Geschichte auch mal auf eien anderen Controller portieren. Werde mich jetzt mal in die Appnote vertiefen. mfg Max
@Max zu den Appnotes gibt es den Code auch als Datei. Falls Du den noch brauchst kann ich Dir den (zumindest der AN300) schicken. Gruß Jörg
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.