Fondamenti · Lezione 3 di 11 · circa 15 min

Il C per l’embedded

Tipi a dimensione fissa, bit e volatile

In un microcontrollore ogni registro ha una dimensione precisa, quindi il C embedded usa tipi con la dimensione nel nome.

#include <stdint.h>

uint8_t  a;   // 8 bits, 0..255       (a byte from a sensor)
uint16_t b;   // 16 bits, 0..65535    (an ADC reading)
uint32_t c;   // 32 bits              (a hardware register)
int16_t  t;   // signed 16 bits       (a temperature, can be negative)

Non usare mai un semplice int per l’hardware: la sua dimensione cambia da chip a chip.

Un registro è una fila di interruttori

Ogni bit di un registro controlla una cosa: un pin, una funzione, un flag. Il lavoro è quasi sempre cambiare un bit senza toccare gli altri. Provalo qui.

ObiettivoCodicePerché funziona
Accendere un bitREG |= (1 << n);OR con 1 lo forza a 1
Spegnere un bitREG &= ~(1 << n);AND con 0 lo forza a 0
Invertire un bitREG ^= (1 << n);XOR con 1 lo inverte
Controllare un bitif (REG & (1 << n))Il risultato è diverso da zero solo se il bit è 1

volatile: leggi l’hardware ogni volta

Il compilatore elimina le letture che ritiene inutili. L’hardware cambia i valori a sua insaputa, quindi i registri e le variabili condivise con gli interrupt devono essere volatile.

volatile uint32_t *status = (volatile uint32_t *)0x40011000;
while ((*status & (1 << 5)) == 0) { }   // wait for the "data ready" bit

Domande da colloquio

  1. Come si imposta, azzera e inverte un bit senza cambiare gli altri?
  2. Che cosa fa volatile, e quando è necessario?
  3. Perché usare uint32_t invece di int per un registro?

Qui non ci sono le risposte, apposta: prova prima a rispondere ad alta voce. Nell’app BoardPilot l’allenatore per i colloqui legge la tua risposta e ti dice cosa era giusto, cosa manca e cosa chiederebbe dopo un intervistatore senior (usa il fornitore di IA che scegli nell’app). Domande da colloquio sui sistemi embedded →

Parole chiave

Nell’app le lezioni prendono vita

Nell’app le lezioni hanno demo interattive ed esercitazioni pratiche verificate sulla tua scheda. Queste pagine sono la versione da leggere: le demo sono descritte a parole e le esercitazioni richiedono l’app.

Scarica BoardPilot Prova le lezioni nel browser