Archiv verlassen und diese Seite im Standarddesign anzeigen : I2C Bus Geschwindigkeit verringern
Ich würde gerne den I2C Bus ein bisschen runter schrauben.
Kann mir wer erklären wie ich das mache ?
Ich habs mal versucht.... aber anscheinend ist das nicht alles .
Wire.begin();
Wire.begin();
TWBR =((16000/1000L)-16)/2;
oder mit
#ifndef TWI_FREQ
#define TWI_FREQ 1000L
#endif
Irgendwie wird er dadurch nicht langsamer .
Gruß
Dein TWBR Formel stimmt auch nicht denke ich. Dein Arduino CPU Takt ist doch nicht 1600 Hz oder?
Wie langsam möchtest du ihn haben denn?
Das folgende habe ich in dem datei Arduino\libraries\Wire\utility\twi.c gefunden unter den Funktion void twi_init(void)
(Zeile 79) Das ist jedenfalls die Standard-einstellung.
...
// initialize twi prescaler and bit rate
cbi(TWSR, TWPS0);
cbi(TWSR, TWPS1);
TWBR = ((F_CPU / TWI_FREQ) - 16) / 2;
/* twi bit rate formula from atmega128 manual pg 204
SCL Frequency = CPU Clock Frequency / (16 + (2 * TWBR))
note: TWBR should be 10 or higher for master mode
It is 72 for a 16mhz Wiring board with 100kHz TWI */
...
[EDIT] Naturlich nicht vergessen das Datenblatt fur dein Arduino CPU ein zu lesen in Sache der I2C/TWI.
[EDIT 2] Hier ist ein Arduino link mit tiefere Information wie es den TWI/I2C stelle betreibt.
http://playground.arduino.cc/Main/WireLibraryDetailedReference#.UzoDOD62GvR
Das sollte natürlich 16.000 bedeuten und nicht 1.600:cool: Anscheinend passt dann doch alles. Hab leider kein Oszi zur hand . Gruß
Das sollte natürlich 16.000 bedeuten und nicht 1.600:cool: Anscheinend passt dann doch alles. Hab leider kein Oszi zur hand . GrußStimmt, ich hatte 16000 scheiben mussen. Es war spät.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.