STM32F103, interrupt på hög nivå?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Klas-Kenny
Inlägg: 11842
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

STM32F103, interrupt på hög nivå?

Inlägg av Klas-Kenny »

Sitter och kollar på ett gammalt projekt igen, och har hittat anledningen till en bugg med den.

Jag har en touch-kontroller som ger ut en interrupt-signal så fort den har data att skicka. Jag har kört igång extern interrupt på processorn vilket fungerar som det ska, förutom en sak.

Jag gör som så att vid interrupt så läser processorn av kontrollern vilket gör att interrupt-signalen går låg, men i vissa lägen gör den lite annat som kan ta en liten stund. När den då tar en liten stund på sig innan den går ur interrupt-vektorn så kan det hända att touch-kontrollern redan har höjt interrupt-signalen igen, vilket gör att processorn aldrig gör en ny interrupt för den nya datan!

Anledningen till det är att processorn gör bara interrupt på "höjande" signal, alltså just när den går hög. Ifall då signalen går hög medan interrupt-flaggan redan är satt och sen fortsätter vara hög så genereras ingen ny interrupt.
Så, vad jag skulle vilja ha är interrupt så fort signalen är hög, även om processorn inte märker av just när den höjs. Går det?

Har letat en del i datablad, manualer, exempel etc. utan att hitta någonting om det, så jag misstänker att det inte går men tänkte att det är bäst att fråga här istället för att anta att det inte gå och lägga ner en arbete på någon annan lösning.
Mer detaljerat så är processorn en STM32F103RBT6, och touch-kontrollen en AR1021 som körs via SPI.
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: STM32F103, interrupt på hög nivå?

Inlägg av Micke_s »

Du skulle kunna köra interrupt rutinen med lägre prioritet än avläsningstråden. interruptrutinen enda syfte är skapa en software interrupt (då med högre prioritet) som startar avläsning. Om det då händer ett nytt interrupt så kommer den med lägre köras igen när den högre är klar och starta den högre igen.
Användarvisningsbild
Klas-Kenny
Inlägg: 11842
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: STM32F103, interrupt på hög nivå?

Inlägg av Klas-Kenny »

Mjukvaruinterrupt låter intressant, hur implementerar man sådant på enklaste och bästa vis?

(Nej, jag har inte använt interrupts så mycket över huvud taget tidigare)
Skriv svar