-
        
+ Antworten
Ergebnis 1 bis 4 von 4

Thema: Mega32 als Master am I2C

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    19.05.2004
    Beiträge
    5

    Mega32 als Master am I2C

    Hallo,

    ich möchte den I2C-Bus mit einem Mega32 als Master ansteuern. In Bascom gibt es den Befehl "config I2Cdelay 'wert'". Leider ist nicht genau ersichtlich, welches Register damit im M32 verändert wird.

    Meine Frage ist, wie gross muss "wert" gesetzt werden, damit ich bei einem CPU Clock von 7'372'800 Hz einen serial clock (SCL) von ca. 100 kHz erhalte.

    Die Analyse der unterschiedlichsten Beispiele im Netz ergibt keine verlässliche Aussage. Ich habe auch im Datenblatt geforscht und die untenstehenden Angaben gefunden. Die Formel wird aber ungenügend erläutert. Es wird auch kein Beispiel dazu gemacht.

    Hat jemand Erfahrungen damit gemacht?

    Gruss und Dank
    Wastl



    Datenblatt des M32, Kapitel "Overview of the TWI Module":

    - SCL frequency = CPU Clock frequency / 16 + 2(TWBR) * 4 hoch TWPS

    - Legende:
    TWBR = Value of the TWI Bit Rate Register
    TWPS = Value of the prescaler bits in the TWI Status Register
    Anmerkung:
    TWBR should be 10 or higher if the TWI operates in Master mode. ...

  2. #2
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.943
    Blog-Einträge
    1
    Bascom nutzt in der derzeitigen Version nicht den Hardware I2C-Port sondern hat eine eingebaute Software Implementation des I2C Übertragungsprotokolls. Durch oben genannten werde kann man die Geschwindigkeit bremsen.
    Da aber der I2C Bus keine feste Taktrate besitzt, sondern nur eine maximale, braucht man gewöhnlich nichts zu ändern.

    Gruß Frank

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.02.2004
    Ort
    Starnberg
    Alter
    39
    Beiträge
    170
    Wenn deine Gleichung stimmt (Ich nehme an, die Frequenz wird durch den ganzen Term geteilt, sonst kommt man nicht so weit runter) könntest du TWPS=0 setzen und erhältst dann mit TWBR=0x1C 102MHz und mit TWBR=0x1D 99,6 MHz

    Grüsse, Martin

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    19.05.2004
    Beiträge
    5
    Frank
    wenn das so ist, dass der I2C-Port des M32 gar nicht verwendet wird, dann muss ich mir darüber keine Gedanken mehr machen. Eigentlich ist es aber schade. Vielleicht wird der Port in einer kommenden Version verwendet werden.
    Danke für Deine Hilfe

    Martin
    ob diese Gleichung stimmt, weiss ich eben nicht. Ich interpretiere den Text im Datenblatt so, wie ich's oben geschrieben habe. Deine Rechnungen kann ich nachvollziehen, ich weiss nur nicht, welche Werte TWPS annehmen kann. Wenn ich diese Register verwenden möchte, sollte ich dann gemäss Antwort von Frank nicht mehr Bascom verwenden, sondern einen kleinen ASM-Einschub machen. Das allerdings ist mir zu aufwändig.
    Besten Dank für Deine Hilfe

+ Antworten

Berechtigungen

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