Hallo ich wollte bei meinem nächsten Projekt was mit I2C machen. Auf der Atmel Homepage steht "TWI compatible to i2c" hat das schon mal jemand getestet. Ich wollte den Atmega8 zusammen mit ein paar Philips PCF 8574 benutzen. Wäre super wenn mir jemand mal ein paar Zeilen code zuschieben könnte aus dem ersichtlich ist wie man das TWI benutzt vorzugsweise in Assembler. Gruss Cabal
http://www.atmel.com/atmel/products/prod201.htm Hier müsste es eine AppNote dazu geben. TWI kann man so konfigurieren, das es als I2C arbeitet. Gruß Markus
Apllication Node AVR300 hilft mir wirklich weiter. Aber was mich wundert Atmel schreibt in dem PDF zur AppNote300 "The AVR microcontroller family does not have dedicated hardware for TWI operation." Nur seltsam das unter http://www.atmel.com/atmel/products/prod199.htm fast alle Megas bei TWI eine 1 stehen haben. Was stimmt denn nun ?? Gruss Cabal
AVR300 ist älteren Datums und bezieht sich auf einen Softwareemulierten I2C Master Port für die alten AVR. Die haben noch kein TWI. Hm, bei den AppNotes scheint es tatsächlich nichts zu geben. Aber schau mal in die Datenblätter, insbesondere in das zum Mega128. Da stehen jetzt immer Codebeispiele drin. Müsste auch was für I2C dabei sein. Gruß Markus
Hatte das gleiche Problem. Aber in den Datasheet zum Atmega8 Seite 172 solltest du genau das finden was du brauchst. Bei mir gings nur nicht, weil ich mir die beiden Ports durch meine fehlerhaftes Layout wohl zerschossen hatte. (Ja 12V direkt auf dem Port, das war wohl zuviel des guten). Aber nun klappts auch.
Dirk du progst doch in C oder ? Meinst du du könntest mal was posten. Ich bin nicht gerade Fit in C will mich aber auch gerade mit TWI (MEGA8) beschäftigen. Ein konkretes Beispiel wär da sehr nützlich. Gruss Bernhard
Hallo Bernhard, als Anhang eine kleine Beispiel. TWI als Master. Aufruf Send_Data_Master_Mode_TWI( Slave_Addresse an die gesendet werden soll, anzahl der daten, char* daten). Is mit sicherheit nicht der schönste Code, da ich auch der fiteste bin. Die asm("nop") habe icht drinnen, da zwischen dem initialisieren und dem setzen des TWINT etwas Zeit gebraucht wird. PS: Sind vielleicht ein paar zuviel drinnen.
Die TWI-Hardware ist nur nötig, wenn man solche Schweinereien, wie Multimasterarbitrierung oder Slaves machen muß. Um als Single-Master den PCF 8574 und andere anzusteuern, ist es viel einfacher, es direkt in Software zu machen. Das ergibt auch weniger Code und läuft an jedem Pin und jedem µC, auch wenn der kein TWI hat. Hier mein Beispiel: http://www.specs.de/~danni/appl/soft/c51/eeprom/index.htm Der einzige Unterschied, beim AVR muß man das Port-Bit ständig auf 0 setzten und statt dessen das Direction-Bit setzten (=0) bzw. löschen (=1) und Einlesen vom Pin-Bit. Und mehr NOPs oder Delay-Loops. Peter
Hallo Dirk vielen Dank für dein Beispiel. Werd mich da gleich am Wochenende dransetzen. @ Peter auch dir vielen Dank. Als C - Anfänger kann man ja gar nicht genügend Beispiele bekommen. Ich glaube aber wenn man das mit der TWI mal in den Griff bekommet ist das sicher ganz fein. Wenn ich mich erinnere wie nervig das mit nem Software Usart ist im vergleich zum HW. Gruß Bernhard
Hallo Schon mal an eine Realisierung mit BASCOM-AVR gedacht ? BASCOM hat sehr 'mächtige' Sprachelemente für die Einbindung einer TWI (I²C)-Lösung Gruß Günter
> Wenn ich mich erinnere wie nervig das mit nem Software Usart ist im vergleich zum HW. Moment. Beim UART mußt du auch das Timing ganz genau einhalten. Ein ungünstiger Interrupt dazwischen, oder eine Routine dazwischen ausführen, die etwas länger dauert - das is hier leider nicht möglich. Das ist das nervige daran. Beim Software-I2C gibst du ja den Takt vor! Du mußt nicht irgendwelche Flag des AVRs ablesen und auswerten und kannst außerdem jeden Portpin dafür verwenden (das du allerdings mit einer geringfügig größerem Codeumfang erkaufst). Die TWI-Lösung kann allerdings auch in Multi-Master-Umgebungen eingesetzt werden (im Gegensatz zu einem einfachen SoftI2C). Schmittchen.
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.