Forum: Mikrocontroller und Digitale Elektronik STM32 Unterbrechung Priorität


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Natasha (kozanich)


Lesenswert?

Ich habe einen STM32F103, die ich verwende, um I2C-Verkehr zu 
schnüffeln, es meist funktioniert, aber verpasst ein Interrupt 
gelegentlich verursacht es die falschen Daten zu lesen. Ich habe 
gelesen, dass STM32 die Einstellung der Interrupt-Priorität unterstützt, 
aber ich kann keine Hinweise darauf finden, wie man das in PlatformIO 
mit dem Maple-Kern macht. (Ich muss den Maple-Kern verwenden, da er der 
einzige ist, der die USBComposite-Bibliothek unterstützt).

Ich habe in Erwägung gezogen, einen weiteren Mikrocontroller nur für das 
Sniffing von I2C hinzuzufügen, aber das erscheint mir übertrieben, wenn 
der STM32 in der Lage sein sollte, dies selbst zu erledigen.

von Thomas W. (dbstw)


Lesenswert?

Moin, -

hast Du Dir das Errata-Sheet angeguckt? Es sind einige I2C und 
Interrupt-relevante Eintraege. Natuerlich weiss ich nicht, ob das fuer 
Dich relevant ist.

https://www.st.com/resource/en/errata_sheet/es0340-stm32f101xcde-stm32f103xcde-device-errata-stmicroelectronics.pdf

Ist auch die Frage, welche Revision Du hast und ob Du einen stm32f103 
von ST hast (es ist besser geworden, vor zwei Jahren war das eigentlich 
nur Kopien die auf dem Markt waren).

Und beim stm32f103 funktioniert Clock-Stretching nicht so gut.

Ob das relevant fuer Dich ist: kA

: Bearbeitet durch User
von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

Natasha schrieb:
> Ich habe gelesen, dass STM32 die Einstellung der Interrupt-Priorität unterstützt
Der Teil ist von ARM vorgegeben, das sollte jeder können:
- 
https://developer.arm.com/documentation/ihi0048/b/Interrupt-Handling-and-Prioritization?lang=en
- 
https://developer.arm.com/documentation/100165/0201/Nested-Vectored-Interrupt-Controller?lang=en

In der Doku von STM gibt es da auch noch ein Dutzend Seiten dazu, 
einfach nachlesen...

von Andreas B. (abm)


Lesenswert?

Wenn Interrupts mal global gesperrt werden oder Schreib-/Löschzugriffe 
im Flash statt finden, helfen die Prioritäten nicht weiter. Ohne 
Ursachenforschung ist das also nur Stochern im Nebel ...

Wenn die Ursache klar ist, sollte man ggf. auch an Transfer per DMA 
denken.
Das KANN für etwas Entspannung sorgen (falls es um größere Datenpakete 
geht).

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
Noch kein Account? Hier anmelden.