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