Wie baut man einen benutzerdefinierten PIC-Programmierer?

Ich möchte meinen eigenen PIC-Programmierer bauen, kann mich jemand in die richtige Richtung weisen. Links, Tutorials, Bücher usw. wären sehr hilfreich? Der Programmierer sollte USB für die Kommunikation mit dem Computer verwenden, aber auch die Kommunikation über die serielle Schnittstelle funktioniert auch?

Antworten (2)

Ja, was Wouter gesagt hat. Beim Entwerfen eines PIC-Programmierers sind drei Teile zu berücksichtigen: Hardware, Firmware und Software. Es gibt jeweils eine Reihe von Auswahlmöglichkeiten, und die Komplexität kann auf verschiedene Weise zwischen ihnen abgewogen werden, insbesondere zwischen der Firmware und der Software.

Für einfache Hardware, die nur eine Teilmenge von PICs adressiert, siehe meinen LProg- Programmierer. Dies wurde auf niedrige Kosten optimiert und verwendet weiterhin standardmäßig eine gängige PC-Schnittstelle. Es funktioniert nur mit PICs, die keine Hochspannung am MCLR benötigen, um in den Programmiermodus zu wechseln, und alle seine Signale sind auf 0-3,3 V festgelegt. Diese beiden Einschränkungen ermöglichten eine einfache Hardware und damit niedrigere Kosten. Der Schaltplan ist unten auf dieser Seite verfügbar.

Am anderen Ende befinden sich die USBProg- und USBProg2- Programmierer. Auch hier sind die Schaltpläne am Ende dieser Seiten verfügbar. Diese haben vollvariable Vpp bis 15 V und die digitalen Signale bis 6 V. Sie haben auch mehr Schutz. Beispielsweise können die digitalen Ausgänge ohne Beschädigung des Programmiergeräts auf unbegrenzte Zeit zwischen 0 und 6 V kurzgeschlossen werden. Natürlich geht all diese Komplexität mit höheren Teile- und Herstellungskosten einher.

Der Software-/Firmware-Kompromiss ist hauptsächlich eine Frage der Komplexität der Firmware im Vergleich zur Geschwindigkeit. Theoretisch könnten Sie einen Programmierer erstellen, der nur über die Möglichkeit verfügt, dass die Host-Software die Leitungen auf bestimmte Pegel setzt. Das PIC-Programmierprotokoll ist synchron, sodass die gesamte Taktung in Software erfolgen könnte. Dies würde das Schreiben der Firmware vereinfachen, aber das Ergebnis wäre ein sehr langsamer Programmierer. Die Implementierung der Details all der verschiedenen Programmieralgorithmen, die sich Microchip im Laufe der Jahre ausgedacht hat, würde mehr Programmspeicher benötigen, als in den meisten vernünftigen Steuer-PICs verfügbar ist. Die Ingenieure der Programming Obfuscation Division von Microchip waren sehr beschäftigt. Wie Wouter sagte, kann es Unterschiede im Programmieralgorithmus zwischen PICs geben, die ansonsten sehr ähnlich erscheinen. Sie müssen die Programmierspezifikation für jeden PIC, den Sie unterstützen möchten, sorgfältig lesen. Es gibt keinen Programmieralgorithmus, nicht einmal annähernd.

Das Host-Protokoll zu meinen Programmierern ist von allen Seiten, die ich oben erwähnt habe, verlinkt. Dieses Protokoll wurde nicht nur für die unmittelbare Aufgabe entwickelt, die ich zur Hand hatte, sondern auch, um dem Programmierer einen gewissen Spielraum zu lassen. Infolgedessen habe ich die Host-Software etwas komplexer gemacht, damit eine Vielzahl von Programmierern mit unterschiedlichen nativen Fähigkeiten nahtlos unterstützt werden kann. Dasselbe Host-Programm steuert LProg, USBProg und einige ältere Programmierer, die wir inzwischen eingestellt haben. Dies geschieht nicht, indem es überprüft, mit welchem ​​Modell es kommuniziert, sondern indem es seine Fähigkeiten auf allgemeine Weise, wie durch das Protokoll definiert, abfragt.

Einen eigenen PIC-Programmierer als Einzelstück für einen bestimmten PIC zu machen, ist nicht allzu schwer. Der Versuch, einen Allzweck-PIC-Programmierer zu bauen, ist schwieriger, wahrscheinlich viel schwieriger, als die meisten Leute glauben. Wenn Sie am Ende Ihre eigenen erstellen, schlage ich vor, dass Sie mein Host-Protokoll unterstützen. Wenn Sie sich das Protokoll genau ansehen, werden Sie feststellen, dass vieles davon optional ist. Wenn Ihr Programmierer mein Host-Protokoll verwendet , steht Ihnen mein vorhandener Host-Code zum Testen und möglicherweise sogar für den regulären Betrieb zur Verfügung. Ein Großteil meines Quellcodes ist unter http://www.embedinc.com/picprg/sw.htm verfügbar .

Die Programmierschnittstelle jedes PIC-Chips ist im entsprechenden Dokument „Programming Specification“ beschrieben, das Sie auf der Microchip-Website finden. Ich nehme an, Sie möchten sich auf FLASH PICs beschränken, aber selbst das wird eine riesige Aufgabe sein. Es gibt eine Reihe sehr unterschiedlicher Protokolle und ärgerliche geringfügige Unterschiede innerhalb scheinbar verwandter Gruppen. Ich glaube nicht, dass es viele Bücher oder Tutorials geben wird, aber es gibt einige bestehende Designs, die Sie studieren können.

Das Microchip PICkit2 ist weit verbreitet geklont. Der Schaltplan, die PIC-Firmware und die PC-Software sind alle im Internet zu finden. Es verwendet eine USB-Schnittstelle und einen 18F2550 PIC-Chip. Ich bin mir über den rechtlichen Status von Klonen nicht sicher, aber die Tatsache, dass sie überall im Internet zu finden sind, deutet darauf hin, dass Microchip Sie nicht mit Teer und Federn verfolgen wird.

Mein Wisp648 ist weniger komplex, aber auch eingeschränkter. Es verwendet eine serielle Schnittstelle und einen 16F648A. Auch hier können Schaltung, Firmware und PC-Software leicht gefunden werden. Ich erlaube ausdrücklich das Klonen für den privaten Gebrauch.

Olins Firma hat eine Reihe von PIC-Programmierern, siehe http://www.embedinc.com/products/index.htm . IIRC die Schaltungen, Firmware und Software sind verfügbar, aber ich bin mir nicht sicher. Olin wird wahrscheinlich auch antworten :)