Inhaltsverzeichnis:

ICSP für PIC-Mikrocontroller verstehen - Gunook
ICSP für PIC-Mikrocontroller verstehen - Gunook

Video: ICSP für PIC-Mikrocontroller verstehen - Gunook

Video: ICSP für PIC-Mikrocontroller verstehen - Gunook
Video: How to get source code onto a PIC microcontroller 2024, Juli
Anonim
ICSP für PIC-Mikrocontroller verstehen
ICSP für PIC-Mikrocontroller verstehen

Mikrocontroller zu programmieren ist nicht schwer. Der Bau eines Programmierers ist ein großartiges erstes Elektronikprojekt. Das Ziel dieses anweisbaren ist es, die einfache Methode der seriellen Programmierung in der Schaltung zu erklären, die mit Microchip PICs verwendet wird.

Schritt 1: Warum ICSP?

Warum ICSP?
Warum ICSP?

Die Programmierung eines großen DIP-Chips (Through Hole) ist einfach. Stecken Sie es in einen gesockelten Programmierer, brennen Sie es und kehren Sie zum Anwendungskreis zurück. Testen und wiederholen.

Schwieriger wird es bei kleineren (Surface Mount) Chips. Es gibt keine Standard-Sockets für QFN, SSOP, QFP oder sogar die großen SOIC.300-Gehäuse. Es gibt wirklich teure ($100s) Clips, die an diese Chips angeschlossen und programmiert werden können. Für jeden verwendeten Chiptyp und jede Pinanzahl wird ein anderer Clip benötigt. Es gibt eine Alternative. Es heißt ICSP. ICSP bedeutet 'in Circuit Serial Programmer(ing?)'. Es ist eine Möglichkeit, einen PIC zu programmieren, während er noch mit der Anwendungsschaltung verbunden ist. Das ist richtig, kein Chip-Swap mehr. Warum ICSP? 1. Es gibt keine Programmiersockets für kleine Gehäusechips. Clips sind teuer. 2. Es ist mühsam, Chips während der Entwicklung in den Programmierer hinein und heraus zu bewegen. Unmöglich für oberflächenmontierte Teile.

Schritt 2: Was ist ICSP?

Was ist ICSP?
Was ist ICSP?
Was ist ICSP?
Was ist ICSP?
Was ist ICSP?
Was ist ICSP?
Was ist ICSP?
Was ist ICSP?

Fünf Verbindungen werden benötigt, um einen PIC zu programmieren, während er an eine Anwendungsschaltung angeschlossen ist. Ich füge meinen Leiterplatten einen 5-poligen Header hinzu, um diese Verbindung schnell und einfach zu machen. Die Grundlagen der PIC-Programmierung. Fünf Verbindungen sind erforderlich, um einen PIC zu programmieren. Strom, Masse, eine Programmierspannung, Takt und Daten.+ (Vdd)/-(Vss) Dies sind die Strom- und Masseanschlüsse (Vdd, Vss). Ziemlich Standard. Wenn Sie einen Programmierer mit "echten" Spannungspegeln verwenden (KEIN JDM2!), kann Ihre Anwendung bei der Programmierung über eine eigene Stromversorgung laufen, wodurch diese Verbindungen entfallen. Vpp Dies ist die Programmierspannung. PICs gehen in den Programmiermodus, wenn ~13 Volt auf den MCLR/Vpp-Pin gelegt werden (normalerweise Pin 1 bei modernen PICs, mehr dazu unten). Clock/Data oder PGC/PGD Die Takt- und Datenleitungen werden verwendet, um den PIC zu schreiben und zu lesen Firmware. Dies sind normalerweise die gleichen Pins wie PORTB6 & PORTB7. Übung: Identifizieren Sie die ICSP-Verbindungspunkte auf den PICs in den Bildern unten. Wenn der PIC passt, tragen Sie ihn. Ich bekomme viele Fragen zu meinem JDM2-Design auf Instructables. Die häufigste ist "Wird es PIC X programmieren?'"' - so können Sie es erkennen: 1) Sehen Sie sich das Datenblatt an. Suchen Sie das 'Pin-Diagramm', das in etwa wie in der Abbildung unten aussieht.2) Identifizieren Sie die Position der Pins, die für die Programmierung angeschlossen werden müssen (Vpp, Vdd, Vss, Data und Clock).3) Sehen Sie sich die Buchsenverbindung auf dem. an Programmierer. Können Sie die erforderlichen Pins mit einer Buchse am Programmiergerät abgleichen?

Schritt 3: Wie ICSP?

Wie ICSP?
Wie ICSP?
Wie ICSP?
Wie ICSP?
Wie ICSP?
Wie ICSP?
Wie ICSP?
Wie ICSP?

Abhängig von Ihrem Design können Sie nun alle erforderlichen Verbindungen herstellen und Ihren PIC programmieren. Es gibt ein paar Fänge, die Sie kennen sollten. Design für ICSP ist wichtig. Microchip bietet eine nette PDF-Anwendungsnotiz zum Entwerfen für ICSP. https://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en011744Hier sind einige Tipps und Beispiele für ICSP-Designs aus meinen vorherigen instructables. Tipp # 1, Bedrohungsstufe: Wichtig Verbinden Sie nichts anderes mit der UHR und DATA-Pins (normalerweise RB6 & RB7, PGC & PGD). Tu es einfach nicht. Es gibt Situationen, in denen sehr clevere Ingenieure damit durchkommen, es aber nicht tun. Die an den Pins angebrachten Komponenten verzerren die Takt- und Datensignale, was zu einer unvorhersehbaren Programmierung führt. Darüber hinaus ist dies nicht möglich, wenn Sie jemals einen seriellen Debugger verwenden möchten. Tun Sie es einfach nicht. Tipp #2 Bedrohungsstufe: Explosiv Verwenden Sie immer eine Diode zwischen der Programmierspannung und der Systemspannung. Wenn Sie MCLR (Master Clear) auf einem PIC verwenden, müssen Sie über einen 10Kish-Widerstand eine Spannung am MCLR-Pin bereitstellen. Dies ist auch der Pin, an den Sie ~13 Volt anlegen, um in den Programmiermodus zu gelangen. Ich habe eine 1n4148 (äquivalente) Diode zwischen den Widerstand und den MCLR / Vpp-Pin gelegt (wie im Schaltplan und im Rendering unten gezeigt). Dies hält die Programmierspannung auf dem Vpp-Pin und verhindert die Zerstörung anderer Komponenten auf Ihrem Board. Tipp #3 Bedrohungsstufe: (re)müdeLow-Voltage-Programmierung hält Sie zurück, Mann. Ich war mit LVP noch nie erfolgreich. Ich habe noch nie gesehen, dass es (konsequent) mit meinen eigenen Augen funktioniert. Beißen Sie einfach in den sauren Apfel und geben Sie 2,50 US-Dollar aus, um einen JDM2-Programmierer zu bauen.

Schritt 4: ICSP-Programmierer

ICSP-Programmierer
ICSP-Programmierer
ICSP-Programmierer
ICSP-Programmierer

ICSP erfordert kein anderes Programmierprotokoll. Ein Socket-basierter Programmierer erzeugt bereits die erforderliche Signalisierung, sendet sie jedoch an die Steckdose und nicht über Drähte. Die meisten Socket-Programmierer können als ICSP verwendet werden, indem Drähte vom Socket zur Anwendungsschaltung geriggt werden. Zum Beispiel kann der ursprüngliche JDM2-Programmierer (hier: https://www.jdm.homepage.dk/newpic.htm) verwendet werden, um Führen Sie die ICSP-Programmierung durch, indem Sie die 5 erforderlichen Signale in einen Header bringen. Dies kann im Programmierer hier eingesehen werden: https://www.belza.cz/digital/jdm.htm. Um die Dinge griffbereit zu halten, habe ich dieses Design in Eagle Cad neu erstellt und an diesem instructable befestigt. Achten Sie auf die Ausrichtung des Transistors, einer der Fußabdrücke kann falsch sein (ich habe das vor mehr als einem Jahr gemacht, ich erinnere mich nicht mehr). Ebenso kann mein aktualisierter JDM2-Programmierer (hier: https://www.instructables.com/id/EN28KZDDYVEP286GRI/) für ICSP verwendet werden, indem Drähte in die DIP-Buchsen gesteckt und mit dem Ziel-PIC verbunden werden. *****JDM2s verwenden funkige Spannungen … verbinden Sie es mit dem Stromkreis OHNE externe Stromversorgung (oder sogar Masse), die mit dem Anwendungsstromkreis verbunden ist. Entfernen Sie die ICSP-Verbindungen, bevor Sie Strom anlegen. Andernfalls ist dies nicht destruktiv, führt jedoch zu einer fehlgeschlagenen Programmierung*******Eine andere Möglichkeit ist ein (halb-)richtiger ICD-Programmierer. Mit ICD können Sie die Firmware-Ausführung auf Ihrem PIC steuern, indem Sie Breakpoints im Code setzen oder Speicher- und Portwerte auslesen. Ein ICD kann auch die Ausführung von Code animieren, die Anwendungsschaltung mit Strom versorgen und den PIC programmieren. All dies geschieht über die gleiche 5-polige ICSP-Verbindung, die wir besprochen haben. Mehrere ICSP-Klone, die Sie selbst erstellen können, finden Sie hier: https://www.icd2clone.com/wiki/Main_Page. Ich habe das PiCS (Rev B) vor ein paar Monaten gebaut und liebe es.

Empfohlen: