Embedded systemen en firmware

Wat moet in een interrupthandler het meest worden vermeden?

  1. AEen vlagvariabele op 1 zetten om het hoofdprogramma te informeren
  2. BHet bit wissen dat de oorzaak van de interrupt aangeeft
  3. CTijdrovende bewerkingen, zoals een lange tekenreeks uitvoeren met printf of een lus die blijft wachten tot er iets gebeurt
Antwoord en toelichting tonen

Antwoord: C. Tijdrovende bewerkingen, zoals een lange tekenreeks uitvoeren met printf of een lus die blijft wachten tot er iets gebeurt

Als een interrupthandler lang actief is, kan hij gedurende die tijd niet op andere interrupts reageren en staat ook het hoofdprogramma stil. Printf kost tijd tot de uitvoer klaar is en gebruikt intern soms interrupts, dus is bijzonder gevaarlijk. In de handler voert men alleen minimale bewerkingen uit, zoals gegevens ontvangen en in een buffer plaatsen of een vlag zetten, en zware verwerking laat men aan het hoofdprogramma of een taak over. Vergeet ook niet het bit te wissen dat de oorzaak aangeeft.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Embedded systemen en firmware

  1. Wanneer het bovenstaande programma met optimalisatie wordt gecompileerd, wordt led_on() soms niet aangeroepen, ook al treedt de timerinterrupt op. Welke combinatie van oorzaak en tegenmaatregel is juist?
  2. Bij een 8-bits microcontroller verhoogt een timerinterrupt een 32-bits variabele ticks met 1 en berekent het hoofdprogramma de verstreken tijd door ticks te lezen. Wat is de juiste oorzaak van het soms lezen van een sterk afwijkende waarde?
  3. Welke eigenschap van seriële communicatie via UART is juist?
  4. Bij een UART van 115200 bps en het formaat met 8 databits, geen pariteit en 1 stopbit (8N1), hoeveel bytes per seconde kunnen er ongeveer worden verzonden?
  5. Bij UART kan een klein verschil in baudrate tussen zender en ontvanger tekenfouten veroorzaken. Waarom is de toelaatbare afwijking beperkt tot ongeveer enkele procenten?

Vergelijkingen bij dit onderwerp