Embedded systemen en firmware

Terwijl het hoofdprogramma een registerbit bewerkt met "reg |= mask;" (lezen, wijzigen, schrijven), wijzigt een interrupthandler een ander bit van hetzelfde register. Welke combinatie van mogelijk probleem en tegenmaatregel is juist?

  1. ADe wijziging door de interrupt gaat verloren door het terugschrijven van het hoofdprogramma. Schakel interrupts uit tijdens de bewerking of gebruik registers die alleen per bit kunnen worden gezet of gewist
  2. BHet register raakt beschadigd en kan nooit meer worden gebruikt. Vervang de microcontroller
  3. CEr gebeurt niets. Een tegenmaatregel is niet nodig
Antwoord en toelichting tonen

Antwoord: A. De wijziging door de interrupt gaat verloren door het terugschrijven van het hoofdprogramma. Schakel interrupts uit tijdens de bewerking of gebruik registers die alleen per bit kunnen worden gezet of gewist

"reg |= mask" bestaat uit drie bewerkingen: het register lezen, OR uitvoeren en terugschrijven. Als direct na het lezen een interrupt optreedt en de handler een ander bit wijzigt, schrijft het hoofdprogramma terug op basis van de oude waarde van vóór de interrupt, zodat de wijziging van de handler verloren gaat. Door interrupts alleen tijdens de bewerking uit te schakelen, of door registers voor zetten en wissen te gebruiken waarbij alleen bits waarin een 1 is geschreven veranderen, volstaat één schrijfbewerking en treedt dit probleem niet op.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Embedded systemen en firmware

  1. Aan een ingangspin van een microcontroller is alleen een schakelaar aangesloten, zonder pull-up- of pull-downweerstand. Wat kan er gebeuren als de schakelaar open is?
  2. Wat moet als eerste worden ingesteld wanneer een GPIO-pin (general-purpose input/output) van een microcontroller wordt gebruikt?
  3. Hoe heet het verschijnsel dat bij het indrukken van een mechanische schakelaar de contacten licht stuiteren en in korte tijd meerdere keren aan en uit gaan?
  4. Welke methode is het meest geschikt om contactdender van een schakelaar met software te verwijderen?
  5. Een klok van 16 MHz wordt door een prescaler door 16 gedeeld en daarmee telt een timer; de timer is zo ingesteld dat bij elke 1000 tellen een interrupt optreedt. Wat is het interval tussen de interrupts?

Vergelijkingen bij dit onderwerp