-         
Ergebnis 1 bis 3 von 3

Thema: i2c Bus Timing mit dem MCP23017

  1. #1
    Benutzer Stammmitglied Avatar von modtronic
    Registriert seit
    14.05.2011
    Ort
    Hagen
    Alter
    41
    Beiträge
    42

    i2c Bus Timing mit dem MCP23017

    Anzeige

    Hallo

    Ich habe eine Frage zum I2C Bus und gleichzeitig zum MCP23017.
    ich betreibe diesen als Ausgabetreiber. An den 16 Ports hängen ganz einfach ULN2804A Treiber für die Steuerung von Relais.

    CPU ist ein ATMega 32 welcher mit externe Quarz auf 8Mhz läuft.
    soweit so gut..das geht auch

    Für den MCP habe ich mir eine kleine Routine geschrieben wo ich die einzelnen Ports ganz simpel einzeln als Bits ansprechen kann. das Funktioniert auch an anderen MC welche im 1Mhz internen Betrieb laufen.

    Bei dem MC mit externen Quarz verhält sich der MCP23017 etwas eigenartig.
    Ich hatte jetzt das Problem das ich am MCP23017 entweder nur den PORTA oder den PORTB schreiben konnte. Habe ich ub GPA0 und GPB0 als Ausgang "1" gesetzt wurde immer nur GPBA High..erst wenn ich GBPA Low schreibe kommt der Pin am Port B.

    Ich selber Programmiere mit Codevision uns benutzte den Codewizard zum einstellen des Controllers. hier lässt sich für den I2C Bus nur der Port einstellen.

    Ein interner Timer läuft als Overflow mit 1000,000 khz. Erst als ich diesen auf 125,000 khz änderte lief der MCP stabiler.
    100% aber erst, als ich das CKSEL 0 Fusebits auch das Häckchen entfernt lief der MCP wie erwartet.
    Jetzt sind alle Häckchen der Fusebits abgewählt. Ich nutze dazu meist immer die Seiten aus dem Internet zum einstellen.

    Hier ist jetzt meine Frage ob es für den I2C Bus ein Unterschied ist ob interner oder externer Quarz und ob die 100% richtige Einstellung der Fusebits hier eine Auswirkung darauf haben.
    oder muss ich im Programm dem MCP noch sagen wie schnell der Bus läuft und dies einstellen?? Frage wäre woher weiss ich das ? im Programm muss ich ja selber nichts mehr einstellen dazu

    Vielen Dank schon im Voraus

    Gruss
    P. Kaiser

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.08.2006
    Ort
    Würzburg, Germany
    Beiträge
    681
    Hallo P.Kaiser,

    selbstverständlich musst du die FUSE-Bits so setzen, dass auch der extrerne Quarzt benutzt wird. Ansonsten läuft der Controller auf einer anderen Frequenz und das Timing kann nicht stimmen. Wie genau die FUSE-Bits gehören erfährst du am im Datenblatt des Controllers. Das ist teilweise auch von der Quarz-Frequenz abhängig!

    Viele Grüße,
    Andreas

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.03.2011
    Beiträge
    1.483
    Zitat Zitat von modtronic Beitrag anzeigen
    Hier ist jetzt meine Frage ob es für den I2C Bus ein Unterschied ist ob interner oder externer Quarz
    Die I2C Bustakt spielt keine wirkliche Rolle. Der Master liefert ja auf SCLK den Takt mit, auf den sich die Slaves synchronisieren. Die Slaves werden da nur in Klassen eingeteilt: kann bis 100kHz, kann bis 400kHz und manche schnellere. Und wenn ein Slave mal ein wenig mehr Zeit braucht, kann er den Master verzögern, in dem er den Takt verlängert.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

Ähnliche Themen

  1. Input beim MCP23017
    Von modtronic im Forum C - Programmierung (GCC u.a.)
    Antworten: 14
    Letzter Beitrag: 23.03.2017, 10:08
  2. Mcp23017
    Von modtronic im Forum C - Programmierung (GCC u.a.)
    Antworten: 17
    Letzter Beitrag: 19.02.2017, 23:15
  3. PCF8591 und MCP23017 bei fast i2c (400kHz) ?
    Von HaWe im Forum Sensoren / Sensorik
    Antworten: 28
    Letzter Beitrag: 28.08.2016, 08:44
  4. MCP23017 mit Python steuern
    Von opc im Forum Raspberry Pi
    Antworten: 4
    Letzter Beitrag: 23.01.2015, 09:43
  5. [ERLEDIGT] MCP23017 - I2C ansprechen ohne Erfolg
    Von JoeM1978 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 07.01.2014, 07:15

Berechtigungen

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