Embedded systemen en firmware

Een bepaalde besturingsberekening moet elke 1 ms worden uitgevoerd. Welke implementatie op een microcontroller zonder besturingssysteem is het meest geschikt?

  1. AElke 1 ms in een timerinterrupt een vlag zetten en de berekening laten uitvoeren door de hoofdlus die de vlag ziet
  2. BIn de hoofdlus een lege lus plaatsen die ongeveer 1 ms duurt om het interval te maken
  3. 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.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Embedded systemen en firmware

  1. Wat is de juiste rol van brown-outdetectie (BOD, brown-outreset) van een microcontroller?
  2. Bij een microcontroller waarbij interrupts een prioriteit kunnen krijgen, treedt een interrupt met hoge prioriteit op tijdens de uitvoering van de handler van een interrupt met lage prioriteit. Wat gebeurt er gewoonlijk (uitgaande van een instelling die nesten van interrupts toestaat)?
  3. Welke schrijfwijze in C zet alleen bit 3 van register reg op 1 en laat de overige bits ongewijzigd?
  4. Welke schrijfwijze in C zet alleen bit 3 van register reg op 0 en laat de overige bits ongewijzigd?
  5. Een bit van een uitgangspoort waarop een LED is aangesloten, moet bij elke uitvoering tussen aan en uit wisselen. Welke schrijfwijze in C is juist?

Vergelijkingen bij dit onderwerp