Kommunikationsproblem I2C-Bus

Gast #2778116
Hi,
ich habe das gleiche Problem mit dem I2C-Bus wie in diesem 
englischsprachigen Thread:
http://www.multiwii.com/forum/viewtopic.php?f=8&t=2182

Die Kommunikation mit wire.h funktioniert, aber mit dem i2c code von 
multiwii funktioniert es nicht.

Die Komunikation wurde in beiden Fällen mit einem Oszilloskop analysiert 
und in einem bunten Bildchen veröffentlicht:
http://www.multiwii.com/forum/download/file.php?id=1339&mode=view

Kann mir bitte jemand den Unterschied zwischen Plot 3 und 4 auf diesem 
Bild erklären? Es scheint nur einen kleinen Unterschied in dem rot 
markierten Bereich zu geben.

Ich würde gerne den code aus dem multiwii-Projekt verwenden, da ich bei 
der Verwendung von wire.h ein Speicherplatzproblem habe.
Lorenzo85 schrieb:
> Kann mir bitte jemand den Unterschied zwischen Plot 3 und 4 auf diesem
> Bild erklären? Es scheint nur einen kleinen Unterschied in dem rot
> markierten Bereich zu geben.
Ohne es jetzt exakt analysiert zu haben würde ich sagen:
3 -> Nach Write Stop, danach wieder Start und dann Read
4 -> Nach Write Repeated Start und dann Read
Gast
Danke für den Hinweis mit dem repeated start. Ich habe nun direkt vor 
dem repeated Start ein Stop und eine kleine Pause eingefügt, und nun 
funktioniert es.
Hallo,

ich habe gerade so meine Probleme mit der I2C Bibliothek von Peter 
Fleury und würde diesen Beitrag gerne wieder etwas aufleben lassen.

Vielleicht mal zu dem Problem..... Ich nutze das TFT-Display 
"eDIPTFT43-A" von EA welches über I2C mit einem ATmega16 verbunden ist. 
Der ATmega ist mit C programmiert. Für die I2C Kommunikation habe ich 
die Bibliothek von Peter Fleury verwendet (twimaster.c).
Die Kommunikation habe ich zu Beginn mit einfachen Befehlen zwischen 
Controller und Display getestet und ich war der Meinung, dass diese 
funktioniert. Nachdem ich jetzt eine weitere Funktion geschrieben habe, 
die aber noch nicht aufgerufen wird steht plötzlich mein Bus (siehe 
Bild). Sobald ich die Funktion auskommentiere läuft der Bus wieder. 
Allerdings hängt dieser sich wieder nach einigen Befehlen wieder auf. 
Die Funktion die dieses "Problem" verursacht heißt 
"checkeMaschinenauswahl" und befindet sich in der Source "display.c".
Ich denke, dass ich ein Pointer-Problem habe. Leider kann ich nicht 
verstehen wo das Problem liegen soll. Habe ich vielleicht bei der 
Verwendung der Bibliothek etwas falsch gemacht?
Ich suche dieses Problem jetzt schon seit einigen Tagen und hoffe das 
mir hier jemand weiterhelfen kann.

Vielen Dank für eure Hilfe.
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 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.