ATmega16L mit 8Mhz nicht schnell genug für I²C fast-mode?

OP #2644301
Lesenswert?
• ▲
▼
Hallo,

mich quält gerade eine Rechnung, die mit laut Datenblatt scheinbar den 
fast-mode nicht zulässt. (einen ähnlichen Fall gab es hier im Forum 
2005, der aber nie aufgelöst wurde, was die Rechnung angeht)
Nach der Formel SCL = CPU/(16+2TWBR*4^TWPS) auf Seite 176 des ATmega16 
Datenblattes:

Funktionierender Fall: Meine CPU wird mit 8MHz getaktet. Der Bustakt ist 
100kHz (standard mode)
1
100 kHz = {8,0 MHz} / { 16 + 2 * TWBR * 4^TWPS }
2
100 kHz * (16 + 2 * TWBR * 4^TWPS) = 8000 kHz
3
16 + 2 * TWBR * 4^TWPS = 80
4
2 * TWBR * 4^TWPS = 64
5
4^TWPS = 64 / (2*TWBR)
6
TWBR = 32 / 4^TWPS
Nun soll laut Datenblatt TWBR >= 10 sein, wenn meine CPU Master ist.
1
10 <= 32 / 4^TWPS
2
4^TWPS <= 16/5
3
TWPS <= log_4(16/5)
4
TWPS <= 0,84
=> TWPS = 0

Nicht-funktionierender Fall: Meine CPU wird mit 8MHz getaktet. Der 
Bustakt ist 400kHz (fast mode)
1
400 kHz = {8,0 MHz} / { 16 + 2 * TWBR * 4^TWPS }
2
400 kHz * (16 + 2 * TWBR * 4^TWPS) = 8000 kHz
3
16 + 2 * TWBR * 4^TWPS = 20
4
2 * TWBR * 4^TWPS = 4
5
4^TWPS = 4 / (2*TWBR)
6
4^TWPS = 2 / TWBR
7
TWPS = log_4(2/TWBR)
8
TWPS <= log_4(2/10)   //oder Werte >10 für TWBR, das macht's aber nur schlimmer ;-)

Logarithmus einer Zahl kleiner 1 wird negativ. Negative Werte für TWPS 
gibt es nicht. Wo ist der Fehler?
Oder kann der ATmega16L das tatsächlich nicht? (Laut Datenblatt reicht 
allerdings die 16-fache Taktfrequenz des I²C-Busses als Takt für die 
CPU. Das wären 6,4Mhz, ich habe 8Mhz.)


PS: log_4(x) is Logarithmus von x zur Basis 4
OP #2644341
Lesenswert?
• ▲
▼
Direkt unter der o.g. Formel (bei mir S.176) im Abschnitt "Two-Wire 
Serial Interface". (s. angehängter Screenshot)
Hmm, meines ist 10/03, ich habe mal das 10/07 gesucht, dort fehlt die 
"Note" (nun S.178) tatsächlich, allerdings steht dort zwei Mal "Note:" 
hinterenander, nicht dass es verschluckt wurde(?)
Angehängte Dateien:
Gast #2644356
Lesenswert?
• ▲
▼
>Nun soll laut Datenblatt TWBR >= 10 sein, wenn meine CPU Master ist.

Mit TWBR = 10 und TWPS = 0 kommst du auf maximal 222222Hz bei 8MHz.

Mit TWBR = 2 und TWPS = 0 kommst du auf 400000Hz bei 8MHz.

Hör auf mit deiner Rechnerei und mach dir ne Tabelle für
Werte die TWBR und TWPS auch wirklich annehmen können.
OP #2644359
Lesenswert?
• ▲
▼
Das ist richtig, aber das ändert erstmal nichts daran, dass mein 
Datenblatt sagt: TWBR<10 ist tunlichst nicht zu verwenden. Nur weil ich 
nicht rechne, sondern sage "so müsste es sein", "darf" ich es (nach dem 
Stand des Datenblattes) trotzdem nicht.
Fragt sich nur, warum dieser Abschnitt rausgefallen ist. Ich weiß nicht, 
wie alt mein µC ist und ob da ggf. etwas in Hardware geändert wurde, 
damit das Problem in neueren Revisionen vielleicht nicht mehr auftritt 
o.ä.?
Gast #2644369
Lesenswert?
• ▲
▼
>Das ist richtig, aber das ändert erstmal nichts daran, dass mein
>Datenblatt sagt: TWBR<10 ist tunlichst nicht zu verwenden.

Mein Gott, dann probier es doch einfach aus.
Entweder es geht oder es geht nicht. Wenn es nicht geht
dann musst du mit TWBR = 10 leben.

Was du nicht kannst ist eine SCL Frequenz für TWBR = 10
vorzugeben. Das geht einfach nicht. Für TWBR = 10
gibt es nur vier Möglichkeiten für SCL:

TWPS = 0        222222Hz
TWPS = 1         83333Hz
TWPS = 2         23809Hz
TWPS = 3          6172Hz

Mehr geht nicht. Deine Logarithmen kannst du dir sonst wo hin stecken.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.