Questo è un resistore di pull up. Quando l'interruttore è aperto, il resistore imposta il pin MCLR su VCC.
Senza il resistore il pin sarebbe lasciato flottante. L'ingresso MCLR è un ingresso logico. Che può essere 0 o 1. Ma nel mondo reale non esistono cose come 0 o 1.
Si potrebbe definire una convenzione:
Si presenta un problema con questo approccio quando la tensione di ingresso supera la soglia. Ad un certo punto nel tempo, è alla soglia. E se c'è del rumore sul segnale, il pin potrebbe vedere uno 0 o un 1 che rimbalza molto rapidamente. Immagina che l'ingresso sia un segnale di clock e vedresti i bordi del clock dove non vuoi.
Il seguente approccio risolve il problema:
Ci sono due soglie: Vale a dire Vih e Vil. Un segnale è considerato 0 se è inferiore a Vil e 1 se superiore a Vih. Le due soglie sono separate da una zona grigia che impedisce la commutazione a causa del rumore aggiunto (fino a un certo livello).
La seguente figura trovata sul web spiega questa caratteristica:
Il resistore negli schemi è qui per assicurarsi che, quando il pulsante non è premuto, il il voltaggio a MCLR è superiore a Vih (non nella regione proibita).
Ma, come spiega @Spehro Pefhany nella sua risposta, questo non è sufficiente.
Un pulsante non è perfetto . Quando lo rilasci, potresti (e in realtà vedrai) dei rimbalzi.
Questa immagine, trovata anche sul web, mostra questo:
Un modo per superare questo problema è "attenuare" il segnale in uscita utilizzando un condensatore come mostrato nella scheda tecnica del microcontrollore. Il condensatore verrebbe scaricato rapidamente attraverso il percorso a bassa impedenza del pulsante premuto, ma impiegherebbe un po 'di tempo per caricare il resistore quando il pulsante è aperto a causa dei rimbalzi. Se scegli la giusta coppia resistore-condensatore, potresti assicurarti che ci vorrà più tempo per la tensione MCLR per attraversare il Vil che impiega al pulsante per smettere di rimbalzare.
Questa resistenza è nota come resistenza di pull up. È collegato al primo pin del PIC per il ripristino. Quando questo pin è collegato a terra o il PIC basso attivo viene ripristinato. Quindi, per rendere l'IC in modalità di lavoro, questo pin viene tirato su attraverso questo resistore.Un interruttore viene utilizzato per mettere a terra il pin per ripristinare il programma.
Dal datasheet del PIC16F877:
In questo caso, l'interruttore prende il posto del condensatore, per provocare un reset ogni volta l'interruttore è premuto (contrariamente a quando viene applicata l'alimentazione e si presume che la tensione del condensatore sia circa zero).
Il limite superiore del valore è di 40 K ohm consigliati (valori relativamente alti aumenteranno anche la sensibilità al rumore). Il limite inferiore è impostato dalla quantità di corrente che si desidera prelevare dall'alimentatore quando si preme l'interruttore. Da pochi K a 15 o 20 K è un intervallo ragionevole per la maggior parte degli scopi.
Nota che quando c'è un condensatore, dovrebbe esserci anche un resistore in serie, secondo Microchip, di qualcosa come 1K o 2K. Non è una cattiva idea metterlo lì anche senza condensatore (solo un interruttore) a causa della possibile ESD trasmessa attraverso l'attuatore dell'interruttore.
Ci sono diverse risposte che spiegano come funziona un resistore pullup, quindi non ne parlerò. Cercherò invece di spiegare perché è lì.
Le resistenze pullup vengono utilizzate quando un ingresso su un microcontrollore deve essere controllato da diverse sorgenti. Ad esempio, nel tuo caso, è possibile premere SW1 per ripristinare il microcontrollore portando la sua linea! MCLR / VPP bassa. Quello che non mostri nel tuo schema è l'interfaccia di programmazione del tuo programmatore (es. ICD 3) che deve anche resettare il microcontrollore portando la sua linea! MCLR / VPP bassa.
Se MCLR era attivo alto invece che basso, allora sarebbe possibile che due ingressi lo guidino contemporaneamente, con tensioni leggermente diverse (ad esempio, VCC dallo switch e VPP dall'interfaccia del programmatore), e potresti ritrovarti con tutti i tipi di problemi (soprattutto se un ingresso era a VCC e un altro a terra, creando un cortocircuito diretto.
Invece i dispositivi che guidano la linea! MCLR sono configurati come open-drain (o in il caso dell'interruttore, essendo un circuito aperto fino alla chiusura). Le uscite open-drain possono essere portate in basso, ma non in alto (lo stato alto predefinito è triplo, il che significa che non aziona il linea a VCC - invece sembra un ingresso). Quindi qualsiasi numero di dispositivi può essere collegato a una linea attiva-bassa come questa, e se più di uno viene pilotato basso (massa), non ci sono problemi.
Tuttavia, poiché nessuno di questi ingressi è configurato per pilotare l'ingresso alto, il resistore di pull-up fornisce il livello alto predefinito (VCC), e viene ridotto a ground quando uno qualsiasi degli input va a terra.
Il diagramma è piuttosto piccolo; ma questo è un "pullup". Porta ~ MCLR alla logica 1, tranne quando viene premuto il pulsante. Sostituendolo con un filo si interrompe il circuito quando si preme il pulsante.
Il resistore serve a limitare la corrente che entra in quel pin ... quando l'interruttore è aperto. È possibile ridurre la resistenza a seconda dei requisiti di corrente per il circuito integrato.
Quando l'interruttore è chiuso, il resistore è lì per evitare che Vcc vada in cortocircuito a massa.