STM32L072KZT6: kurioser Effekt mit HAL_I2C_Master_Transmit_IT

OP #6569920
Lesenswert?
• ▲
▼
Hallo,

ich habe einen kuriosen Effekt mit einem STM32F7 beim Senden von 
I2C-Daten per HAL_I2C_Master_Transmit_IT. Wenn das Senden in main.c 
aufgerufen wird, werden korrekte Daten gesendet.

Erfolgt das Senden jedoch in einer Funktion, dann kommen falsche Daten 
raus. Wenn man dann aber in der Funktion nach dem Senden noch 1 ms 
wartet, werden korrekte Daten gesendet. Ich habe absolut keine Erklärung 
dafür. Was könnte der Grund dafür sein? 1 ms warten ist ja nicht im 
Sinne des interruptgesteuerten Sendens...

Gruß
Martin
Angehängte Dateien:
Gast #6569928
Lesenswert?
• ▲
▼
Der Sendebuffer in der Funktion liegt in der Funktion auf dem Stack, bis 
das  senden ausgeführt wird, ist die Funktion schon verlassen und der 
Stack aufgeräumt, also es werden zufällige Daten gesendet.
Gast #6569934
Lesenswert?
• ▲
▼
Naja, die Frage ist, wo sind deine Daten?

Der Sinn der Interrupt-Funktion sollte doch sein (wenn ich mich da jetzt 
nicht irre), dass du einen Pointer auf deine Daten, sowie eine Anzahl an 
zu übertragenden Daten übergibst.

D.h. du solltest sicherstellen, dass diese Daten auch jederzeit in 
diesem Speicherbereich liegen. Den Speicherbereich in einer Function zu 
definieren, zu füllen, den Pointer dahin zu übergeben und dann diese 
Function zu beenden dürfte problematisch sein.

Versuche das selbe mal mit global definierten Variablen in denen du 
deine zu übermittelnden Daten speicherst und vergleiche das Ergebnis ;-)

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.