PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVR und TWI --> erklärungen



WhiteTiger
15.03.2005, 19:11
Guten Abend

Habe da ein kleines Problem. Habe mir ein Codebeispiel für einen ATmega Bootloader über TWI/i2c besorgt. Diesen Code wollte ich jetzt analysieren und für meine Zwecke umschreiben.
Tja in meinem AVR-Buch wird zwar die Funktion von i2c behandelt aber das TWI-Interface des AVR fällt unter den Tisch.
So in dem Code wird jetzt z.B. in das Register TWSR der Wert $AA geschrieben --> damit kann ich nix anfangen! Ich weiß zwar wie i2c funktioniert, aber was die einzelnen Register (TWDR,TWCR,TWSR,TWAR,TWBR) bewirken bzw. die Bits in den Registern weiß ich nicht, somit kann ich auch nicht`s mit "lade TWSR mit $AA" anfangen.

Meine Frage wäre jetzt ob jemand ne Quelle kennt wo man sich schlau machen kann?? Ah die Datenblätter von Atmel würden das alles erklären --> schon klar --> die sind aber auf english --> mein english ist absolut schei.e!!
Ein deutsches AVR Buch (wenn`s geht mit Assempler) wäre nett schlecht --> ne Internetseite wäre noch besser da ich nicht warten muß auf Buch. Habe etwas Zeitdruck mit diesem Projekt.

Danke an alle User

Florian
15.03.2005, 19:20
Hi WhiteTiger!
Für ASM sind Internetseiten leider rar!
Hast Du Dich schoneinmal mit dem TWI-Bus beschäftigt?
TWSR ist das Statusregister
TWDR ist das Datenregister
TWCR ist das Controlregister
TWAR ist das Slaveadressregister
TWBR ist das Bitratenregister

Ich denke, dass auch solche Sachen im Datenblatt verständlich für einen nichtenglischsprechenden Menschen sind!

FoCus
16.03.2005, 07:35
Schau dir mal das Datenblat vom ATMega16 ab Seite 177 an.
Dadrin ist eigentlich alles erklärt was man zum leben braucht ;-)

Gruss
Michael

WhiteTiger
16.03.2005, 12:28
Habe mir mal das Batenblatt des ATmega 16 angesehen. Das bringt schon etwas Licht ins dunkle. Habe auch einiges unter Google gefunden.
Komme aber mit einer Kleinigkeit nicht klar.
So der Takt auf SCL (Masterbetrieb) wird durch das TWBR- und TWSR-Register festgelegt. Im TWSR-Register sind da die Bit`s 0+1 (Prescaler Bits)!

Könnte mir mal jemand das Zusammenspiel dieser beiden Register erklären???

Thanks

Florian
16.03.2005, 13:46
Du suchst im Datenblatt einfach die Formel und stellst sie um.
Danach setzt Du bestimmte werte ein und erhälst andere.
Das ist Umstellung einer Gleichung und das dürftest Du auch können.
Ansonsten kann man das ganze auch noch per Zufall näherungsweise einsetzen und sich an die Werte rantasten.

Jan_Weber
16.03.2005, 14:01
Wenn du den I2C-Bus mit 50 kHz betreiben musst, weil die Slaves so langsam sind, der µC allerdings mit z. B. 16 MHz läuft, kann es dazu kommen, dass der Wertebereich des TWBR-Registers unzureichend ist. Daher kannst du mit dem Prescaler den Takt vor dem TWBR-Register reduzieren.

Jan