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


von Levin (Gast)


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/avr-software.html>;

von thkais (Gast)


Lesenswert?

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

von Levin (Gast)


Lesenswert?

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

von josef (Gast)


Lesenswert?

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

Josef

von Levin (Gast)


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)

von thkais (Gast)


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.

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.