www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I²C Software Master auf dem mit Interrupts?


Autor: Levin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

kennt jemand von euch eine I²C-Implementation für den ATMega8 die nicht
den TWI-Interrupt benutzt (der ist hier schon durch einen I²C-Slave
belegt)

Peter Fleurys Code [1] ist mir bekannt, aber eigentlich würde ich gerne
auf die Wartezyklen verzichten (also zum Beispiel stattdessen einen
Timer/Counter-Interrupt verwenden)

Dankeschön und viele Grüße,
Levin

[1]
<http://homepage.sunrise.ch/mysunrise/peterfleury/a...

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Öhm, und warum baust Du nicht den Master-Code mit in den Slave-Code ein?
Das ist durchaus möglich.

Autor: Levin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
weil ich Master und Slave gleichzeitig verwenden will (die Platine
vermittelt zwischen zwei verschiedenen, elektrisch getrennten
I2C-Bussen)

Autor: josef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Würde den 2.I2C softwaremäßig dazuprogrammieren und alles über einen
Int-fähigen Pin ablaufen lassen.

Josef

Autor: Levin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich auch :)  aber ich hätte gerne ein bisschen Beispielcode damit ich
nicht alles selber schreiben muss.

Leider ist die Platine schon fertig und die Ports nicht interruptfähig.
 Ich glaube aber nicht das das problematisch ist.  Ich wollte den Master
mit einem Timer/Counter steuern (es sei denn ihr habe einen bessere
Idee)

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenns nur um einen Master geht, kann man auch ohne Interruptfähige Ports
auskommen, es wird nur schwieriger, evtl. Wait-States abzufragen.
Einen fertigen Code kann ich nicht liefern, nur eine Code-Idee (so
etwas habe ich mal mit einer RS-232 gemacht).
Zunächst brauchst Du einen Interrupt, der mit der 4-fachen
Geschwindigleit der Bus-Geschwindigkeit ausgelöst wird. Damit rufst Du
eine State-Machine auf, die den Bus bedient.
Das ist eine recht komplizierte Geschichte, aber die einzige
Möglichkeit, das Ganze Interrupt-basiert laufen zu lassen.
Hast Du schonmal in der Code-Sammlung nachgeschaut? Evtl. gibts da
schon etwas fertiges.

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.