-
        

Ergebnis 1 bis 4 von 4

Thema: I2C Bus Geschwindigkeit verringern

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    28.09.2013
    Beiträge
    49

    I2C Bus Geschwindigkeit verringern

    Anzeige

    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ß
    Geändert von jok3r (01.04.2014 um 17:40 Uhr)

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    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.

    Code:
    ...
    // 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/Wi...e#.UzoDOD62GvR
    Geändert von Valen (01.04.2014 um 02:30 Uhr)

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    28.09.2013
    Beiträge
    49
    Das sollte natürlich 16.000 bedeuten und nicht 1.600 Anscheinend passt dann doch alles. Hab leider kein Oszi zur hand . Gruß

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    Zitat Zitat von jok3r Beitrag anzeigen
    Das sollte natürlich 16.000 bedeuten und nicht 1.600 Anscheinend passt dann doch alles. Hab leider kein Oszi zur hand . Gruß
    Stimmt, ich hatte 16000 scheiben mussen. Es war spät.
    Geändert von Valen (01.04.2014 um 18:47 Uhr)

Ähnliche Themen

  1. I2C (TWI) - Bus Geschwindigkeit drosseln in Bascom
    Von TiRe im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 18.11.2008, 09:37
  2. Hilfe bei 1 Wire Bus bzw. I2C bus
    Von Fabi007 im Forum C - Programmierung (GCC u.a.)
    Antworten: 10
    Letzter Beitrag: 23.07.2007, 17:06
  3. Antworten: 8
    Letzter Beitrag: 19.06.2006, 10:41
  4. Problem: Zwei MEGA8 via I2C-Bus koppeln (mit I2C-slave-Lib)
    Von Ulfens im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 11.01.2006, 16:25
  5. Geschwindigkeit I2C-EEPROM
    Von Ruppi im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 05.10.2005, 19:56

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •