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.
| Obiettivo | Codice | Perché funziona |
|---|---|---|
| Accendere un bit | REG |= (1 << n); | OR con 1 lo forza a 1 |
| Spegnere un bit | REG &= ~(1 << n); | AND con 0 lo forza a 0 |
| Invertire un bit | REG ^= (1 << n); | XOR con 1 lo inverte |
| Controllare un bit | if (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
- Come si imposta, azzera e inverte un bit senza cambiare gli altri?
- Che cosa fa volatile, e quando è necessario?
- 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
Registro volatile Tipi a larghezza fissa (uint8_t, uint32_t) Maschere di bit Endianness (ordine dei byte)
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.