Embedded systemen en firmware
Een bepaalde besturingsberekening moet elke 1 ms worden uitgevoerd. Welke implementatie op een microcontroller zonder besturingssysteem is het meest geschikt?
- AElke 1 ms in een timerinterrupt een vlag zetten en de berekening laten uitvoeren door de hoofdlus die de vlag ziet
- BIn de hoofdlus een lege lus plaatsen die ongeveer 1 ms duurt om het interval te maken
- CNa elke afgeronde berekening de microcontroller herstarten
Antwoord en toelichting tonen
Antwoord: A. Elke 1 ms in een timerinterrupt een vlag zetten en de berekening laten uitvoeren door de hoofdlus die de vlag ziet
Bij een interval gemaakt met een lege lus verandert het interval door de tijd van andere verwerking en door compileroptimalisatie, zodat het niet nauwkeurig is. Een hardwaretimer telt onafhankelijk van de verwerking nauwkeurig, dus als de interrupt elke 1 ms als basis dient, blijft het interval constant. Is de berekening kort, dan kan die rechtstreeks in de interrupt worden uitgevoerd; is ze lang, dan wordt via een vlag gemeld dat de hoofdlus haar uitvoert, zodat andere interrupts niet worden gehinderd.