ATmega32u4 400kHz Two-Wire/I²C

Gast #4144452
Lesenswert?
• ▲
▼
Versuche grade den ATmega32u4 auf eine SCL Frequenz von 400kHz 
zubekommen, laut Datenblatt sei das möglich.

Die Formel zum berechnen:
1
                 CPU Clock frequency
2
SCL frequency =  -------------------
3
                  16+2(TWBR)*4^TWPS

Meine Initialisierung:
1
void TWIInit(void)
2
{
3
  //set SCL to 400kHz
4
  TWSR = 0x00;
5
  TWBR = 0x06;
6
  //enable TWI
7
  TWCR = (1<<TWEN);
8
}

TWPS bekommt man nicht auf 0, somit erhalte ich für einen TWBR-Wert von 
3 eine Frequenz von 400kHz, zumindest rechnerisch.

Leider sieht die Praxis anders aus, mit einem Logic-Analyzer messe ich 
eine Frequenz des SCL Taktes von 177-222kHz, stark schwankend.

Deswegen springt mir besonders diese Randnotiz im Datenblatt ins Auge:
"TWBR should be 10 or higher if the TWI operates in Master mode. If TWBR 
is lower than 10, the
Master may produce an incorrect output on SDA and SCL for the reminder 
of the byte. "

Was kann ich tun um die im Datenblatt beschriebenen 400kHz zu erhalten?

Mein ATmega32u4 ist auf einem Arduino Pro Micro (Nachbau?) verbaut, aber 
der Arduino Bootloader ist nicht drauf. Programme werden Über AtmelFlip 
hochgeladen. Externe Quarz hat 16MHz.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.