Topic permanente di programmazione newbie

leo72:
Io avrei fatto diversamente. Bastava usare la funzione predefinita di Arduino bitRead:

Corretto, però la BitRead in realtà è questo:

#define bitRead(value, bit) (((value) >> (bit)) & 0x01)

Ogni volta che la vai ad usare in realtà viene eseguito uno shift della variabile e una mascheratura, inoltre anche se ti crei delle #define con nomi mnemonici dei vari campi assegnandoli al relativo bit, p.e. #define HVPP 3, quando vai scrivere il software il tutto diventa meno leggibile dell'uso diretto di un nome mnemonico.
Non ultimo il modo con cui vengono trattati i dati dalle strutture e unioni è decisamente più efficace del fare uno shift e una maschera, in pratica il codice compilato risulta più compatto e impiega meno cicli macchina, che poi queste sono finezze da programmazione avanzata è vero, nel nostro caso non cambia nulla se per accedere al dato ci vogliono solo tre cicli macchina invece di cinque, però non è male se si impara ad usare tutti gli strumenti del C e unioni/strutture sono tra quelli più potenti che ci vengono messi a disposizione.