mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Software-I2C


Autor: Der Techniker (_techniker_)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Der Techniker (_techniker_)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Der Techniker (_techniker_)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: ACDC (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.