Forum: Mikrocontroller und Digitale Elektronik TWI- Master im Interrupt ausführen?


von Alex M. (Gast)


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 !!

von Uhu U. (uhu)


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.

von Alex M. (Gast)


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 :- )

von GG (Gast)


Lesenswert?

Hallo,

diese Lib ist super, i2c mit Interrupt.

http://hubbard.engr.scu.edu/embedded/avr/avrlib/docs/html/index.html

Gruß GG

von Alex M. (Gast)


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.

von gtf (Gast)


Lesenswert?

Wow soviele Vorschläge :-)

Hallo kann mir den keiner weiterhelfen?

Oder sind hier nur C- Kinder die auf ihren Funktionen rumtrampeln? :- ) 
(spaß)

von gtf (Gast)


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

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.