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
Schau mal in die errata. Die ersten 407 auf dem Discovery-Board haben einrn fiesen Bug im Flash-Prefetch...
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
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.