-
        

Ergebnis 1 bis 6 von 6

Thema: I2C Geschwindigkeit in Laufzeit variieren

  1. #1

    I2C Geschwindigkeit in Laufzeit variieren

    Anzeige

    Hallo zusammen,

    stehe momentan vor dem Problem, dass ich an meinem ATMEGA16 drei I2C chips mit unterschiedlichen Geschindigkeiten habe. Der EEPROM arbeitet mit 400 kHz, der 16-bit-port-expander mit 800 kHz und die neue Echtzeit-Funkuhr mit 100 kHz... bisher habe ich den Hardware-TWI-Bus einfach auf 400000 laufen lassen und hingenommen, dass eben der Portexpander etwas langweiliger läuft... mit der Uhr müsste ich aber dann auf 100 khZ runter, was mir für den EEPROM dann schon etwas zu langsam wird... Daher die Frage:

    kann ich den Befehl
    Code:
    Config Twi = 800000
    auch einfach vor jeder Übertragung ausführen und somit jedes mal eine andere Taktrate bestimmen oder wie umgehe ich das problem mit der Echtzeituhr?

    danke schonmal

    msfuture

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Ausprobieren, ob Bascom das zulässt. Von der Hardware her ist es eigentlich kein Problem, wenn sichergestellt ist, dass dabei Ruhe auf dem Bus herrscht.

  3. #3
    Also Bascom lässt das zu, ich werds mal versuchen sobald die Uhr da ist ob die dann antwortet (also ob Bascom das letztendlich auch wirklich übersetzt oder einfach ignoriert)...
    Ruhe sollte auf jeden Fall herrschen, der ATMEGA ist der einzige Master auf dem Bus.

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,
    in der Bascomhilfe steht bei Config TWI: "Reuseable: Yes", also spricht nix dagegen.

    Evtl. etwas Pause einplanen nach dem Geschwindigkeitswechsel, damit die langsamen Slaves eine Ruhephase haben vor dem nächsten Start. Musst Du aber ausprobieren.

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Könnt mich zwar jetzt täuschen, aber gibts da nicht eh was wie "clock stretching", bei dem die langsameren Slaves den Bus einfach auf ihre Geschwindigkeit bremsen?
    #ifndef MfG
    #define MfG

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Das clock stretching, bezieht sich aber nur auf die Zeit zwischen den einzelnen Bytes. Wenn ein Slave allg. zu langsam ist, bekommt der die Startsequenz schon garnicht mit !

Berechtigungen

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