Forum: Mikrocontroller und Digitale Elektronik Software-I2C


von Der T. (Gast)


Lesenswert?

Hallo!

Ich habe einen ATMega128, bei dem alle Interrupts benötigt werden
(dadurch ist Hardware-TWI nicht mehr verwendbar). Leider sind die
leiterplatten ebenfalls schon fertig, weshalb das ext. I2C-EEPROM an
Port G, Pin 0 und 1 hängt.

Peter Fleury's i2cmaster.S kann leider den Port G nicht mehr
ansprechen und ich kenne mich mit AVR-ASM so gut wie garnicht aus, um
den source zu ändern.

Hat zufällig jemand eine I2C-Master-Code in C?
Ist I2C eigentlich zeitkritisch?

Danke für Tipps!

von Der T. (Gast)


Angehängte Dateien:

Lesenswert?

Nachdem ich soviel Rückmeldung erhalten habe (ironisch gemeint) und
anscheinend keine derartige Lib existiert, habe ich mir selber eine
geschrieben.

Sie ist in C; zugeschnitten für den 24C256. Gebe keine Garantie auf
100%ige Funktionssicherheit.
Momentan kann Sie nur Byteweise lesen und schreiben (da mir dies im
moment reicht).

Im Anhang bedindet sich die Lib.

Aufruf per

if ( i2c_eep_write ( 0x0005, 0xaa ) & 0xff00 ) {
uart_puts_P("ERROR!"); } else { uart_puts_P("OK!"); }

bzw.

sprintf(text, "%#04x\n\r", i2c_eep_read ( 0x0005 ));
uart_puts_P("Fertig!\n\rGelesenes Datum: ");
uart_puts(text);

Bin für Verbesserungstipps dankbar!

Gruß,
Techniker

von Der T. (Gast)


Angehängte Dateien:

Lesenswert?

Hi!

Im Anhang die Revision 0.3!

Es wurden mehrere Bugs entfernt, sowie das Page-weise lesen und
schreiben hinzugefügt!

Bisher erfolgreich getestet mit AT24C256.

(In Arbeit: 24C16 und 24LC02)

Über Verbesserungsvorschläge bin ich dankbar!

Gruß,
Techniker

von ACDC (Gast)


Lesenswert?

Hallo Techniker !
Ich habe mir gerade selbst die Specs zu I2C zusammengesucht, und daraus
geht ganz klar hervor, dass I2C im Standard mit 100 kHz läuft, im
Hi-Speed mit bis zu 400 kHz, aber das langsamere Abläufe kein Problem
sind, da die Sache über die Definition der SCL-SDA-Flanken-Wechsel
genau definiert ist - ich denke, man könnte da auch ein Byte pro
Sekunde übertragen :-)
Gruß, Andreas

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.