Pagina 1 di 2

Dubbio sull'implementazione fisica di quanto programmato

MessaggioInviato: 24 apr 2020, 13:22
da Greh
Salve a tutti,ho da poco scoperto il mondo dei microcontrollori (solo a livello di programmazione base) e mi è sorto un dubbio per quanto riguarda l'implementazione fisica di quello che ho programmato. Intendo dire che se ad esempio volessi fare un semplice programma che accenda un led, io programmerò un opportuno registro di configurazione per settare ad esempio il pin interessato come output digitale e poi programmerò un registro di dato in modo da scriverci un 1 logico.
Ora il mio dubbio è: come fa fisicamente quell' 1 logico a diventare una tensione fisica in grado di alimentare il led collegato a tale pin? Cioè internamente al micro c'è già un circuito apposta che in funzione di tale valore logico permette al microprocessore di alimentare in qualche modo quel pin ?
Insomma in generale non ho compreso il legame tra il "mondo digitale" fatto di 0 e 1, e la reale implementazione nel mondo fisico dell' hardware che ci sta sotto.

Mi rendo conto che la mia domanda è molto contorta, ma sinceramente trovo anche difficile spiegare questo mio dubbio.
Grazie in anticipo a tutti quelli che mi risponderanno :D .

Re: Dubbio sull'implementazione fisica di quanto programmato

MessaggioInviato: 24 apr 2020, 13:46
da lacoontfreed
0 e 1 corrispondono a un valore logico di tensione, semplicemente, se non c'è tensione si parla di zero logico, altrimenti di 1. Se misuri la tensione del pin puoi avere 0V,3V,5V etc. Valori che dipendono dalla tensione di funzionamento del micro. Quando programmi un pin a 1, micro porta la tensione in uscita, p.e. a ~3V

Re: Dubbio sull'implementazione fisica di quanto programmato

MessaggioInviato: 24 apr 2020, 14:06
da Greh
Grazie mille della risposta :) Foto Utentelacoontfreed. Quindi questo significa che è già stato programmato un circuito elettronico che se ho 0 non permette al micro di portare la tensione su quel pin, mentre invece se ho un 1 la porta? E questo in generale vale per qualsiasi pin e per qualsiasi altra funzione del micro(anche rispetto ai periferici ad esempio)?

perché mi è chiaro che in base al valore logico che scrivo durante la programmazione ho tensione (se è 1) o non ce l'ho (se è 0),ma non mi è chiaro come fisicamente il micro poi possa portare questa tensione.

Inoltre questa tensione deriva tutta da quella che alimenta il micro(PC se è collegato via USB o batteria)?Se sì, significa che avrò un limite per la corrente massima erogabile (nel caso esempio avessi vari led) vero?

Re: Dubbio sull'implementazione fisica di quanto programmato

MessaggioInviato: 24 apr 2020, 16:38
da lacoontfreed
come funziona una porta
Nella prima foto, vedi il I/O pin. Poi Vdd e Vss collegati al pin tramite due FET, se scrivi 1, allora il FET P è "attivo" e N no, avrai in uscita Vdd che dovrebbe essere 3/5V, se scrivi 0 avrai N "attivo " e P no, cosi in uscita avrai Vss che di solito dovrebbe essere 0

Re: Dubbio sull'implementazione fisica di quanto programmato

MessaggioInviato: 24 apr 2020, 22:48
da Greh
Grazie ho capito :)

Re: Dubbio sull'implementazione fisica di quanto programmato

MessaggioInviato: 24 apr 2020, 23:54
da marioursino
Beh non è affatto così semplice.

Un microcontrollore contiene un processore corredato di varie periferiche. La chiamata ad una funzione di set di un pin viene tradotta dal compilatore in linguaggio macchina, che poi è caricato in una memoria interna non volatile (già qui c'è un mondo su come è fissata l'informazione).

Il processore e le periferiche sono descritte in un linguaggio di HDL (VHDL o Verilog di solito), e sono in pratica milioni di porte logiche sincronizzate da un clock (detta molto male).

All'avvio il processore elabora un'istruzione dopo l'altra, e quando arriva il set di un pin viene caricato un registro con un certo valore. La periferica che governa i pin finisce con uno stadio push-pull che è collegato in modo da accendere il pin corrispondente a quello che dice il registro.

Questa informazione è compressa di un fattore 10000 direi

Re: Dubbio sull'implementazione fisica di quanto programmato

MessaggioInviato: 25 apr 2020, 9:30
da IlGuru
Greh ha scritto:Insomma in generale non ho compreso il legame tra il "mondo digitale" fatto di 0 e 1, e la reale implementazione nel mondo fisico dell' hardware che ci sta sotto.


Quando leggo queste domande mi commuovo.
Sono questi gli interrogativi che permettono di capire come funzionano le cose e di arrivare ad una comprensione profonda dell'argomento.

Re: Dubbio sull'implementazione fisica di quanto programmato

MessaggioInviato: 25 apr 2020, 10:00
da lacoontfreed
marioursino ha scritto:Beh non è affatto così semplice.


In relazione alla domanda posta da Greh, può essere ancora più semplice se prendessimo come esempio il più primitivo dei micro controllori, cioè l'interruttore.
L'interruttore aperto = 0 -> Luce spenta
L'interruttore chiuso = 1 -> Luce accesa

Re: Dubbio sull'implementazione fisica di quanto programmato

MessaggioInviato: 25 apr 2020, 10:24
da marioursino
L'interruttore non è un micro controllore, quest'ultimo ha una definizione ben precisa. Forse non è nemmeno accostabile ad una porta logica.

Re: Dubbio sull'implementazione fisica di quanto programmato

MessaggioInviato: 25 apr 2020, 12:00
da Greh
Grazie per il tuo intervento Foto Utentemarioursino :D, sei riuscito a chiarirmi di più le idee.
Purtroppo questi sono dubbi che difficilmente riesci a togliere soltanto con la teoria, penso che il modo migliore per comprenderli fino in fondo sia quello di capire bene l'hardware che ci sta sotto(fatto da milioni di porte logiche). Questo problema è dovuto al fatto che si va ad usare un circuito creato da un altro, senza sapere come è stato implementato.
Grazie ancora O_/