FT232RT-Breakout-Boards und USB-seriell-Adapter werden zu PIC-Programmern![]() ![]() Erstmal brauchen wir eine Programmiersoftware. Das ist leicht, weil es dafür PICPgm gibt. Christian Stadler, der Autor von PICPgm hat einen einfachen USB-Programmer entwickelt, der auf Basis des FT245 Chips von FTDI funktioniert. Glücklicherweise kann der FT232 das was wir brauchen ebenso und PICPgm arbeitet auch mit dem Schwestermodell zusammen. Es kommt aber noch besser: Der nette eBay Fachhändler von anderen Ende der Welt verkauft uns fertige Breakout-Boards für sehr kleines Geld. Das rote Board kam für 3,70 und das blaue mit mehr nach außen geführten Pins für 4,70 € bei mir an (Versand inklusive!). Alternativ können wir auch einen USB-seriell Adapter benutzen. Da muss aber auch ein FTDI Chip drinstecken, andere funktionieren NICHT! Für häufiges Programmieren sind die hier beschrieben Programmer allerdings zu langsam. Damit wir das einschätzen können: Die USB4All Firmware als Beispiel ist mit einem 5PiP in 24 Sekunden geflasht (inklusive Verify). Die USB-Teile brauchen dafür 806 Sekunden; das sind 13:26 Minuten. Oft stehen wir aber vor der Aufgabe, nur einmal einen jungfräulichen PIC befüllen zu wollen, dafür ist die Geschwindigkeit akzeptabel. Und kleine Anfänger-LED-Blink-Programme sind in ca. 6 Sekunden auf dem Chip. Der USB4All zeigt einen weiteren Nachteil. Die Programmer können nur Low-Volt-Programming (LVP). Das haben nicht alle PICs. Außerdem muss oft ein Pin für LVP reserviert werden. Die USB4All Firmware hat in den Konfigurationsbytes die Einstellungen für High-Volt-Programming (HVP) gespeichert. Damit wir uns nicht selbst aussperren, kann das per LVP nicht umprogrammiert werden. Die Folge ist ein (logischer) Verify-Fehler im Config-Memory. Das Geld für ein FT232-Breakout-Board ist in jedem Fall gut investiert. Es ist ein vollwertiger USB-seriell Wandler mit vielen Einstellmöglichkeiten, z.B. invertieren der Signale per Software (FTProg) und weiteren Möglichkeiten (Stichwort bitbanging). |
Variante 1 - Der FT232-Breakout-Board-Programmer![]() Letztlich muss das Board natürlich hochkant eingesteckt werden. Der PullUp Widerstand an MCLR sorgt dafür, dass wir über eine Spannung an PGM in den Programmiermodus wechseln können. Der PullDown Widerstand an PGM stellt sicher, dass der Programmiermodus vermieden wird, wenn keine definierte Spannung an PGM anliegt (Board ab oder spannungslos). Die Werte sind unkritisch. Die Steckerbelegung ist Arduino-kompatibel und deshalb an sehr vielen Boards gleich. |
PICPgm für Variante 1
einrichten
Jetzt müssen wir unseren neuen Programmer der Programmiersoftware
PICPgm bekannt machen. Dazu wählen wir die Menüpunkte Hardware
dann Hardware Selection/Configuration ... Sobald wir USB
als Port einstellen, versetzt PICPgm den FT232 in den "bitbanging"
Modus. Der Chip stellt jetzt keinen virtuellen seriellen Port mehr zur
Verfügung, sondern eine Art parallele Schnittstelle. Voraussetzung ist
der Treiber d2xx.dll. Normalerweise sollte das kein Problem darstellen,
er wird bei der Installation standardmäßig mit installiert. |
![]() |
Variante 2 - Der FT232-Adapter-ProgrammerAuch können wir nicht Aus- und Eingänge frei konfigurieren. Nur was bei RS232 als Ausgang vorgesehen ist, können wir als solchen benutzen. Gleiches gilt sinngemäß für die Eingänge. TxD als Taktleitung (PGC) zu verwenden, ist bei mir außerdem gescheitert. Macht nix, sendet TxD eben die Daten. Die Versorgunsspannung stellt uns der Adapter (zumindest ohne Bastelei) nicht zur Verfügung. |
PICPgm für Variante 2 einrichtenHaben wir einen PIC, der HIGH-Pegel an PGM zum Laufen braucht, können wir das Häkchen bei PGM / Vdd entfernen. Weitere Hinweise dazu haben wir ja schon unter "PICPgm für Variante 1 einrichten" gelesen. |
PullUps und PullDowns
Ob wir PullUp oder PullDown Widerstände brauchen, hängt von unserem PIC
ab. Meine modernen 16f und 12f Typen mit kombiniertem Pin für HVP und
LVP haben vermutlich einen internen PullUp und brauchen keinen
externen Widerstand. Das bedeutet aber auch, dass der für den Betrieb
erforderliche Pegel an PGM je nach Typ HIGH oder LOW sein muss! Bei
meinen PICs mit separaten MCLR- und PGM-Pins funktioniert folgendes: |
Getestete ControllerMit den Programmern konnte ich alle meine LVP-tauglichen PICs bearbeiten, als da wären:12f1501, 12lf1501, 12f1522, 12f1822, 12f1824, 12f1840, 16f1509, 16f1786, 16f1939, 16f628a, 16f886, 18f13k50, 18f14k50, 18f4550, |
Links und Downloads
|
|
© Frank Steinberg |