Problem mir TWI (Master Receiver Modus)

Gast #218089
Lesenswert?
• ▲
▼
Hallo!

ich möchte mittels twi einen DS1631 ansteuern.
Dabei gerate ich beim Master Receiver Modus auf Probleme.

Aber von vorne:
Das Datenblatt gibt mir ja die Kommunikation vor.
Um genau zu sein sollte es so aussehen.

START->ControlByte(Write)->ACK->CommandByte->ACK->
->RepeatSTART->ControlByte(Read)->ACK->MS Data->ACK(Master)->LS
Data(Master)->Stop

Ich verstehe den Ablauf genau bis zum letzten ACK das vom Sensor
stammt. Ab hier komm ich nicht wirklich weiter.

Offene Fragen:
Wie sag ich es dem µC dass er einmal mit ACK antwortet, das andere mal
NACK. Ich kann ja zwischendurch ned umstellen!? (TWEA)
Wie soll ich abfragen ob ich die fertig übertragen Daten aus twbr
auslesen kann? TWINT in einer Schleife abfragen!?
Wie weiß ich ob ein Slave ein oder 2 Datenbyte überträgt. Ich muss ja
den Master darauf vorbereiten....????

Am liebsten wär mir natürlich ein asm-code-schnipsel, der mir all dies
beantwortet.

Ich hoffe ihr könnt mir helfen...
Danke schon mal
Hias
Gast #218090
Lesenswert?
• ▲
▼
"Offene Fragen:
Wie sag ich es dem µC dass er einmal mit ACK antwortet, das andere mal
NACK. Ich kann ja zwischendurch ned umstellen!? (TWEA)"

Doch, man kann das umstellen.

"Wie soll ich abfragen ob ich die fertig übertragen Daten aus twbr
auslesen kann? TWINT in einer Schleife abfragen!?"

Genau so, oder einen Interrupt schreiben. Das TWINT-Bit wird aber nicht
nur einmal pro Übertragung ausgelöst, sondern mehrmals.

"Wie weiß ich ob ein Slave ein oder 2 Datenbyte überträgt. Ich muss
ja
den Master darauf vorbereiten....????"

Der Master muß einfach "wissen", wieviele Bytes kommen werden.
Umgekehrt (Master->Slave) ist das einfacher, da kann der Slave durch
ein "nACK" dem Master mitteilen, daß er satt ist.

Schau Dir die Diagramme im Datenblatt nochmal an, auch die
Codebeispiele des Datenblattes lassen normalerweise keine Fragen offen.
Gast #218092
Lesenswert?
• ▲
▼
Hallo nochmal!

ich habe jetzt versucht all das umzusetzten, was thkais gesagt hat.

Leider scheitert es immer noch am Empfang von Daten als Master.

Ich hab im Anhang mal den Code gegeben.
Vielleicht könnte einer von euch mal drüberschauen, speziell
receive_data_byte

Ich bekomm immer ne Error-Meldung, wenn ich in send_stop_r, TWSR
prüfe...

Danke Hias
Angehängte Dateien:

Antwort schreiben

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.

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.