www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Software I2C mit Timer-Interrupt


Autor: Mathias Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
hat jemand einen brauchbaren C-Beispielcode der einen I2C-Master
mittels Timer-Interrupt und nicht mit irgendwelchen delays realisiert?
µC-Typ ist egal, es geht mir nur ums Prinzip.

Gruß Mathias

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"µC-Typ ist egal"


Das ist es ganz und gar nicht !

Ein  ATTiny12 bei 1,2MHz braucht für einen leeren Interrupt schon mal
10  Zyklen, also 8,5µs und da ist noch nicht mal das SREG gesichert.

Du siehst also, mit einem simplen Delay von 1,3µs (400kBaud) bist Du um
Klassen schneller.

Und deshalb findest Du wohl auch keinen, der so verrückt ist, I2C mit
dem Timer zu machen.


Peter

Autor: Mathias Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, ganz egal ist der µC-Typ wohl doch nicht aber ich verwende einen ARM
9 und der ist um den Faktor 150 schneller als der ATTiny.
Da würde sich der Timer-Interrupt vielleicht doch anbieten ?!

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
D.h. also, der ARM9 arbeitet mit 180MHz ?

Trotzdem ist er aber nicht 150 mal schneller, da Bitschubsen bei den
32-er Boliden nicht gerade zu den Stärken zählt.

Und Interrupts sind bei den Boliden besonders zeitaufwendig. Beim
Philips ARM7 waren minimal 60 Zyklen drin (bei 20MHz, d.h. ohne
Waitstates im Flash !), sonst gingen Interrupts verloren. Dabei habe
ich im Interrupt nur eine Variable hochgezählt, mehr nicht !


Außerdem haben zumindest die Philips ARM7 ein HW-I2C. Trotzdem hat mein
Kollege das I2C erstmal in Software und mit Delays gemacht, weil das
viel einfacher ist.
Und da er nur ab und zu mal in einem EEPROM Parameter schreibt/liest
ist die CPU-Last weit unter 0,1%.


Peter

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.