Buongiorno a tutti.
Chiedo oggi lumi riguardo un argomento un po' atipico, spero di non aver sbagliato troppo sezione, e di ricevere qualche aiuto.
Stò sviluppando un firmware per un microcontrollore, il cui core è a 32 bit, ma la richiesta che stò per fare è di logica e quindi si può applicare anche ad otto bit, perché è più semplice ragionare in termini di otto bit.
Dunque, i requisiti sono questi: ho a disposizione una variabile, ce è il contenuto di uno dei registrii interni al controller stesso, che ne controlla un aspetto importante, ovvero lo status dei suoi pin di uscita.
Questa variabile possiamo dire che sia fatta in questo modo: "1010 0101", a me serve che i bit in posizione due, tre e quattro, ovvero zero, uno e zero, siano cambiati in uno, uno, uno.
Devo quindi ottenere in uscita una variabile risultante di questo tipo: 1010 1111.
Per fare questa operazione, è importante che tutti gli altri bit non devono cambiare, perché regolano altre funzioni, e vorrei anche cambiare questi tre bit usando solo operatori bitwise, ovvero OR, AND, EXCLUSIVE OR, NOT e simili.
Non voglio usare operatori atomici, cioè che vadano a modificare selettivamente solo un bit per volta.
Secondo voi, qual è la sequenza più idonea?
Grazie mille a tutti.
Un saluto.
Logica booleana ed operatori bitwise
Moderatore:
Paolino
3 messaggi
• Pagina 1 di 1
1
voti
- Codice: Seleziona tutto
variabile = 0b10100101;
variabile = variabile | 0b00001110;
Piú in generale:
- con un bitwise-and e una maschera tutta a 1 tranne dove vuoi il cambiamento, azzeri i bit.
- con un bitwise-or e una maschera tutta a 0 tranne dove vuoi il cambiamento, metti i bit a uno.
Boiler
0
voti
Un OR è sufficiente per questa operazione:
1010 0101 OR 0000 1110 = 1010 1111
Considera che il bit meno significativo è il bit 0, quindi i bit che devi cambiare sono bit 1, 2 e 3.
1010 0101 OR 0000 1110 = 1010 1111
Considera che il bit meno significativo è il bit 0, quindi i bit che devi cambiare sono bit 1, 2 e 3.
3 messaggi
• Pagina 1 di 1
Torna a Firmware e programmazione
Chi c’è in linea
Visitano il forum: Nessuno e 6 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)




