TWI- Master im Interrupt ausführen?

Gast #1460751
Lesenswert?

Hallo Community,
für den TWI- Master Modus gibt’s Beispiele wie Sand am Meer. Doch leider 
konnte ich nichts zum Thema Master im Interrupt-Modus finden.

Hat jemand von euch schon so was umgesetzt?
Ist es überhaupt möglich, oder sind die TWI- Interrupts nur für den 
Slave Modus interessant?

;---------------------------------------------
µController Atmega 8,16,32,128

Bitte um Hilfe !!
#1460755
Lesenswert?

Alex L. schrieb:
> Hallo Community,
> für den TWI- Master Modus gibt’s Beispiele wie Sand am Meer. Doch leider
> konnte ich nichts zum Thema Master im Interrupt-Modus finden.
>
> Hat jemand von euch schon so was umgesetzt?

Ja. Ich gehe davon aus, daß du einen AVR meinst.

> Ist es überhaupt möglich, oder sind die TWI- Interrupts nur für den
> Slave Modus interessant?

Funktioniert prächtig als Master. Einen Slave habe ich noch nicht 
implementiert, das geht aber auch.
Gast #1460780
Lesenswert?

Uhu Uhuhu schrieb:
> Ja. Ich gehe davon aus, daß du einen AVR meinst.
Jep ein AVR ist damit gemeint, aber eigentlich geht’s mir nur darum das 
Prinzip zu verstehen.

> Funktioniert prächtig als Master. Einen Slave habe ich noch nicht
> implementiert, das geht aber auch.

hast du dazu Programmablaufpläne oder Beispielcodes?
Für mich ist es unklar, wie die einzelnen Aktionen ausgeführt werden
sollen?
Kein plan :- )
Gast #1460799
Lesenswert?

GG schrieb:
> Hallo,
>
> diese Lib ist super, i2c mit Interrupt.
>
> http://hubbard.engr.scu.edu/embedded/avr/avrlib/docs/html/index.html
>
> Gruß GG

Danke für den Link, leider kann ich nicht so gut C.  Soweit ich's 
verstanden habe sind da nur die Routinen(Funktionen) enthalten, aber 
kein konkretes Beispiel zur Anwendung.
>----------------------------------------------------------------------
>----------------------------------------------------------------------
Ich möchte im Master Transmitter Modus ein Byte an den Slave übertragen.
Protokoll: Start | SLA+W | 0x01 | Stop

Und im Master Receiver Modus paar Bytes empfangen.
Protokoll: Start | SLA+R | 0xXX | 0xXX |  Stop

Ist ja an sich kein Problem, solange dies nicht im Interrupt geschieht, 
da kann man schön gemütlich aufs TWINT- Flag warten.

Doch wie realisiert man das ganze im Interrupt?
Hat jemand eine Idee?
Gute Nacht und bis Morgen.
Gast #1462545
Lesenswert?

Hallo Community,
schade dass mir keiner Helfen konnte.  Inzwischen sind ca. 4 Tage flöten 
gegangen, bis ich selber eine optimale Lösung finden konnte.

Das Problem war:
Interrupt gesteuerte  TWI- (IIC) Masterfunktionen im ASM. (Beitrag:TWI- 
Master im Interrupt ausführen).

Als äußerst hilfreich erwies sich die Application Note von ATMEL:
;--------------------------------------------------------------
 AVR315: Using the TWI module as IIC Master
;--------------------------------------------------------------

Die im Dokument erwähnten Beispiele beziehen sich auf die 
Programmiersprache C.
Zu jeder Funktion gibt es ein ausführliches Flowchart, weshalb die 
Umsetzung in ASM. nicht all zu schwer war.

Trotzdem vielen dank für eure Unterstützung.
Gruß gtf

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren