Embedded systemen en firmware

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?

  1. AOp een 8-bits microcontroller kunnen 32-bits variabelen niet worden gebruikt
  2. BDe periode van de timerinterrupt verandert telkens willekeurig
  3. CHet lezen van 32 bit is in vier stappen verdeeld en er kan tussendoor een interrupt optreden, waardoor slechts een deel van de bytes de nieuwe waarde heeft
Antwoord en toelichting tonen

Antwoord: C. Het lezen van 32 bit is in vier stappen verdeeld en er kan tussendoor een interrupt optreden, waardoor slechts een deel van de bytes de nieuwe waarde heeft

Een 8-bits microcontroller kan slechts één byte tegelijk lezen, dus een waarde van 32 bit wordt in vier stappen gelezen. Als bijvoorbeeld bij de verandering van 0x000000FF naar 0x00000100 na het lezen van de laagste byte een interrupt optreedt, ontstaat een waarde als 0x000001FF, die de oude lage byte (0xFF) combineert met de nieuwe hoge byte (0x01). Dit wordt voorkomen door interrupts alleen tijdens het lezen uit te schakelen of door twee keer te lezen en te herhalen tot beide waarden gelijk zijn.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Embedded systemen en firmware

  1. Welke eigenschap van seriële communicatie via UART is juist?
  2. 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?
  3. Bij UART kan een klein verschil in baudrate tussen zender en ontvanger tekenfouten veroorzaken. Waarom is de toelaatbare afwijking beperkt tot ongeveer enkele procenten?
  4. Welke eigenschap van SPI-communicatie is juist?
  5. Welke combinatie van de vier signalen die gewoonlijk bij SPI worden gebruikt, is juist?

Vergelijkingen bij dit onderwerp