ARM CM4F STM32F373 Interrupt Problem

Gast #3208222
Lesenswert?
• ▲
▼
Hallo, seit ein paar Tage fällt mir auf, das bei meiner Programmiererei 
etwas nicht stimmt. Ich habe den Cortex M4F STM32F373 im Einsatz und 
mein Timer (Timer6) lässt per Interrupt eine LED blinken mit 10Hz.
Auf einmal waren es nur 5Hz und dann blinkte gar nichts mehr.
Schließlich konnte ich am ende meiner initialisierung folgendes 
feststellen:

es liegt an der Endlosschleife, je nach dem wie sie im Speicher leigt 
beeinträchtigt es das Interrupt verhalten !?!?!?

Nach einigem Probieren habe ich folgendes Ergebniss bekommen:

Fall 1:

loop: nop
      b loop

LED blinkt weiterhin mit 10Hz.


Fall 2:
loop: nop
      nop
      b loop

LED blinkt nicht mehr!

Fall 3:
loop: isb
      b loop

LED blinkt asymetrisch !


Was habe ich falsch konfiguriert, dass die Codeausführung meinen 
Interrupt so beeinträchtigt?
Muss ein Sprungbefehl word aligned sein?

Ich habe bis jetzt nur Erfahrung mit ARM7 und ARM9 und der Thumb2 Mode 
ist für mich etwas Neu.

Jedenfalls bin ich etwas ratlos im Moment.

Gruß Sascha
Gast #3208473
Lesenswert?
• ▲
▼
Hallo Karl,
danke für den Tip, werde ich sofort machen.

Habe meinen Fehler übrigens gefunden. Habe im Interrupt nach dem LED 
ansprechen auf den I/O Port noch einen dmb Befehl gesetzt und nach dem 
quitieren des Pending Flags des Timer6 einen dsb.

Ist mir zwar noch nicht klar was der dmb Befehl an der Stelle für 
Auswirkungen hat, aber offensichtlich ist durch das beenden des 
Interrupts der Schreibvorgang im Writebuffer verworfen worden.

Gruß Sascha
Gast #3209706
Lesenswert?
• ▲
▼
Hallo,
so kann den Fehler nun etwas besser eingrenzen, da ich nun in dem 
Interrupt auch noch andere Dinge veranlasse.

Das Problem besteht bis jetzt nur beim Schreiben auf einen I/O-Port also 
vermutlich leigt es an der AHB2 BUS Bridge. Kann man da etwas falsch 
Konfigurieren?

Zumindest kommen Schreibvorgänge nicht immer an. Vermutlich hängt es mit 
dem beenden des Interrupts zusammen?

Gruß Sascha

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.