TWI- Master im Interrupt ausführen?

Gast #1460751
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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.