Dies ist ein Pull-up-Widerstand. Wenn der Schalter geöffnet ist, setzt der Widerstand den MCLR-Pin auf VCC.
Ohne den Widerstand würde der Pin schweben. Der MCLR-Eingang ist ein Logikeingang. Das kann 0 oder 1 sein. In der realen Welt gibt es jedoch keine 0 oder 1.
Eine Konvention könnte definiert werden:
Bei diesem Ansatz tritt ein Problem auf wenn die Eingangsspannung die Schwelle überschreitet. Irgendwann ist es an der Schwelle. Und wenn das Signal ein Rauschen aufweist, kann der Pin sehr schnell eine 0 oder 1 abprallen sehen. Stellen Sie sich vor, der Eingang ist ein Taktsignal und Sie sehen Taktflanken, wo Sie nicht möchten.
Der folgende Ansatz löst dieses Problem:
Es gibt zwei Schwellenwerte: Nämlich Vih und Vil. Ein Signal wird als 0 betrachtet, wenn es unter Vil liegt, und als 1, wenn es über Vih liegt. Die beiden Schwellenwerte sind durch eine Grauzone getrennt, die ein Umschalten durch zusätzliches Rauschen (bis zu einem bestimmten Pegel) verhindert.
Die folgende Abbildung im Internet erklärt diese Funktion:
Der Widerstand in Ihrem Schaltplan dient dazu, sicherzustellen, dass, wenn die Taste nicht gedrückt wird, die Die Spannung am MCLR liegt über Vih (nicht im verbotenen Bereich).
Aber wie @Spehro Pefhany in seiner Antwort erklärt, reicht dies nicht aus.
Ein Druckknopf ist nicht perfekt . Wenn Sie es veröffentlichen, sehen Sie möglicherweise (und Sie werden es tatsächlich sehen) Bounces.
Dieses Bild, das auch im Internet zu finden ist, zeigt Folgendes:
Eine Möglichkeit, dieses Problem zu beheben, besteht darin, das Ausgangssignal mithilfe eines Kondensators zu "glätten", wie im Datenblatt des Mikrocontrollers gezeigt. Der Kondensator würde schnell über den niederohmigen Pfad des gedrückten Knopfes entladen, aber es würde einige Zeit dauern, bis er durch den Widerstand aufgeladen ist, wenn der Knopf aufgrund von Sprüngen geöffnet ist. Wenn Sie das richtige Widerstands-Kondensator-Paar auswählen, können Sie sicherstellen, dass es länger dauert, bis die MCLR-Spannung den Vil überschreitet, den die Taste benötigt, um das Abprallen zu stoppen.
Dieser Widerstand wird als Pull-up-Widerstand bezeichnet. Es wird zum Zurücksetzen an den ersten Pin des PIC angeschlossen. Wenn dieser Pin geerdet oder aktiv ist, wird der niedrige PIC zurückgesetzt. Um den IC in den Arbeitsmodus zu versetzen, wird dieser Pin durch diesen Widerstand nach oben gezogen. Ein Schalter wird verwendet, um den Pin zu erden und das Programm zurückzusetzen.
Aus dem PIC16F877 -Datenblatt:
In diesem Fall ersetzt der Schalter den Kondensator, um bei jedem Zurücksetzen einen Reset zu bewirken Der Schalter wird gedrückt (im Gegensatz zu nur, wenn die Leistung angelegt wird und die Kondensatorspannung auf ungefähr Null angenommen wird).
Die Obergrenze für den Wert liegt bei den empfohlenen 40 kOhm (relativ hohe Werte erhöhen auch die Rauschempfindlichkeit). Die Untergrenze wird dadurch festgelegt, wie viel Strom Sie aus der Stromversorgung ziehen möchten, wenn der Schalter gedrückt wird. Einige K bis 15 oder 20 K sind für die meisten Zwecke ein angemessener Bereich.
Beachten Sie, dass bei einem Kondensator laut Microchip auch ein Vorwiderstand von etwa 1K oder 2K vorhanden sein sollte. Es ist keine schlechte Idee, es auch ohne Kondensator (nur einen Schalter) dort einzubauen, da möglicherweise ESD über den Schaltaktor übertragen wird.
Es gibt mehrere Antworten, die erklären, wie ein Pullup-Widerstand funktioniert, deshalb werde ich nicht darauf eingehen. Stattdessen werde ich versuchen zu erklären, warum es dort ist.
Pullup-Widerstände werden verwendet, wenn ein Eingang eines Mikrocontrollers von mehreren Quellen gesteuert werden muss. In Ihrem Fall kann beispielsweise SW1 gedrückt werden, um den Mikrocontroller zurückzusetzen, indem die! MCLR / VPP-Leitung auf Low gesetzt wird. Was Sie in Ihrem Schaltplan nicht anzeigen, ist die Programmierschnittstelle Ihres Programmiergeräts (z. B. ICD 3), die auch den Mikrocontroller zurücksetzen muss, indem die! MCLR / VPP-Leitung auf niedrig gesetzt wird.
Wenn MCLR aktiv hoch war Anstatt niedrig zu sein, könnten zwei Eingänge gleichzeitig mit leicht unterschiedlichen Spannungen (z. B. VCC vom Switch und VPP von der Programmierschnittstelle) angesteuert werden, und Sie könnten am Ende alle möglichen Arten von Spannungen haben Probleme (insbesondere wenn sich ein Eingang am VCC und ein anderer am Boden befand, wodurch ein direkter Kurzschluss erzeugt wurde.
Stattdessen werden die Geräte, die die! MCLR-Leitung steuern, als Open-Drain (oder in) konfiguriert im Fall des Schalters, bei dem es sich um einen offenen Stromkreis handelt, bis er geschlossen ist). Open-Drain-Ausgänge können niedrig, aber nicht hoch angesteuert werden (der Standard-High-Zustand ist dreifach angegeben, was bedeutet, dass er nicht angesteuert wird Leitung zu VCC - stattdessen sieht es aus wie ein Eingang). So können beliebig viele Geräte an eine Active-Low-Leitung wie diese angeschlossen werden, und wenn mehr als eine angesteuert wird niedrig (Masse), es gibt keine Probleme.
Da jedoch keiner dieser Eingänge so konfiguriert ist, dass er den Eingang hoch treibt, liefert der Pull-up-Widerstand den Standard-Hochpegel (VCC) und wird auf reduziert Masse, wenn einer der Eingänge auf Masse geht.
Diagramm ist eher klein; aber das ist ein "Pullup". ~ MCLR wird auf logisch 1 gebracht, außer wenn die Taste gedrückt wird. Das Ersetzen durch ein Kabel würde den Stromkreis kurzschließen, wenn die Taste gedrückt wird.
Der Widerstand dient dazu, den Strom zu begrenzen, der in diesen Pin fließt ... wenn der Schalter geöffnet ist. Sie können den Widerstand abhängig von der aktuellen Anforderung für das ic reduzieren.
Wenn der Schalter geschlossen ist, ist der Widerstand vorhanden, um zu verhindern, dass Vcc gegen Masse kurzschließt.