Programator JDM dla mikrokontrolerów PIC

1. Wstęp

programator PIC

Rys. 1 Zbudowany programator.

Programator JDM z wyprowadzeniem ICSP umożliwia zaprogramowanie 8 bitowych mikrokontrolerów PIC wymienionych w tabeli (tab.1). Są to układy należące do grupy mikrokontrolerów programowanych wysokim napięciem (od 12V do 14V).

2. Obsługiwane mikrokontrolery

Tab. 1 Obsługiwane mikrokontrolery.

Seria Bit Obudowa Obsługiwane mikrokontrolery
Seria 10F 8 6 pin PIC10F200    PIC10F202   PIC10F204   PIC10F206
Seria 12F 8 8 pin, 14 pin PIC12F508   PIC12F509   PIC12F510   PIC12F629   PIC12F635   PIC12F675   PIC12F635   PIC12F683
Seria 16F/C 8 od 14 pin do 64 pin PIC16F627   PIC16F627A   PIC16F628   PIC16F628A   PIC16F630   PIC16F636   PIC16F639   PIC16F648A   PIC16F676   PIC16F684   PIC16F685   PIC16F687   PIC16F688   PIC16F689   PIC16F690   PIC16F73   PIC16F74   PIC16F76   PIC16F77   PIC16F716   PIC16F737   PIC16F747   PIC16F767   PIC16F777   PIC16F83   PIC16F84   PIC16F84A   PIC16F87   PIC16F88   PIC16F818   PIC16F819   PIC16F870   PIC16F871   PIC16F872   PIC16F873   PIC16F873A   PIC16F874   PIC16F874A   PIC16F876   PIC16F876A   PIC16F877   PIC16F877A      PIC16C61   PIC16C62   PIC16C62A/B   PIC16C63   PIC16C63A   PIC16C64   PIC16C64A   PIC16C65   PIC16C65A/B   PIC16C66   PIC16C67   PIC16C620/A   PIC16C621/A   PIC16C622/A   PIC16CE623   PIC16CE624   PIC16CE625   PIC16C71   PIC16C72   PIC16C72A   PIC16C73   PIC16C73A/B   PIC16C74   PIC16C74A/B   PIC16C76   PIC16C77   PIC16C710   PIC16C711   PIC16C712   PIC16C716   PIC16C745   PIC16C765   PIC16C773   PIC16C774   PIC16C923   PIC16C924   PIC16C925   PIC16C926
Seria 18F 8 od 18 pin do 64 pin PIC18F1220   PIC18F2220   PIC18F2320   PIC18F2331   PIC18F2410   PIC18F242-2439   PIC18F2420   PIC18F2431   PIC18F2455   PIC18F248   PIC18F2480   PIC18F2510   PIC18F2515   PIC18F252-2539   PIC18F2520   PIC18F2525   PIC18F2550   PIC18F258   PIC18F2580   PIC18F2585   PIC18F2610   PIC18F2620   PIC18F2680   PIC18F4220   PIC18F4320   PIC18F4331   PIC18F4410   PIC18F442-4439   PIC18F4420   PIC18F4431   PIC18F4455   PIC18F448   PIC18F4480   PIC18F4510   PIC18F4515   PIC18F452-4539   PIC18F4520   PIC18F4525   PIC18F4550   PIC18F458   PIC18F4580   PIC18F4585   PIC18F4610   PIC18F4620   PIC18F4680

3. Konstrukcja urządzenia

Programator JDM jest rozbudowanym okładem Ludipipo. Jego poprzednik do poprawnej pracy wymagał napięć zgodnych ze standardem RS232 (12V), które w obecnie produkowanych komputerach i przejściówkach (USB-RS232) często są o wiele niższe. Programator JDM rozwiązuje te problemy, dodatkowo zawiera zabezpieczenie w postaci diody zenera zabezpieczającej programowany układ przed pojawieniem się wyższych napięć niż dopuszczalne.

Rys. 2 Schemat elektryczny programatora.

Tab. 2 Lista podzespołów.

R1  4,7k
R2  1k
R3  4,7k
C1  220uF
C2  100nF
D1, D2, D3  1N4148PH
D4  ZENER 5,1V
D5  ZENER 13V
Q1  BC337
COM  DB9F
ICSP  HDR-1×6

Zaprojektowana płytka ma wymiary 39mm x 62mm. Montaż podzespołów jest wykonany metodą przewlekaną (THT), rozmiar ścieżek i odległości między nimi upraszczają wykonanie płytki sposobem termotransferu jak i ułatwiają lutowanie podzespołów. Płytka została udostępniona w fabryce PCBWay gdzie można zamówić jej wykonanie pod tym linkiem.

Rys. 3 Projekt PCB programatora.

Rys. 4 Wyprowadzenia PicKit3.

Wyprowadzenia programatora są zgodne ze standardem łącza ICSP. W celach porównawczych na Rys.4 przedstawiono wyprowadzenie programatora PicKit3.

4. Podłączenie mikrokontrolera do programatora

Sposób podłączenia pinów w wybranych mikrokontrolerach do złącza ICSP (In Circuit Serial Programming) programatora (Rys. 2) został przedstawiony w Tab. 3.

Tab. 3 Podłączenie programatora do pinów w wybranych mikrokontrolerach.

W pierwszej kolumnie (Tab. 1) zostały wymienione piny portu ICSP, przypisano im kolory którymi zaznaczono komplementarne piny w wybranych mikrokontrolerach (Rys. 5,6,7,8).

Rys. 5 Podłączenie ICSP do układu PIC 12F629.

Rys. 6 Podłączenie ICSP do układu PIC 12F675.

Rys. 7 Podłączenie ICSP do układu PIC 12F627.

Rys. 8 Podłączenie ICSP do układu PIC 16F84.

Rys. 9 Podłączenie ICSP do układu PIC 18F4550.

5. Proces programowania mikrokontrolera

Kod programu dla mikrokontrolerów PIC może zostać napisany w języku C lub ASM. Po procesie kompilacji uzyskuje się plik HEX (kod maszynowy) który po wczytaniu przez aplikację (tzw. Programator) zostaje wysłany na przykład do portu COM1 w komputerze PC a następnie do podłączonego programatora (opisanego w tym artykule). Programator zaś otrzymane dane w postaci impulsów elektrycznych wysyła do mikrokontrolera wzbudzając go jednocześnie do stanu programowania.

Rys. 10 Proces programowania mikrokontrolera.

Przykładowe środowiska programistyczne (IDE) z kompilatorem dla mikrokontrolerów PIC:

Aplikacje programatorów wysyłających plik HEX z komputera do programatora JDM:

  • IC-PROG (dla Windows),
  • Picprog (dla Linux – patrz rozdział 5.1),
  • MPLAB IPE (Windows, Linux, Mac),
  • PICPgm (Windows i Linux – patrz rozdział 5.2).

5.1 Programowanie za pomocą Picprog

Program działa na systemie operacyjnym Linux. Dystrybucje Debian i Ubuntu posiadają go już w swoich repozytoriach. Instalacja przez APT odbywa się przez wydanie polecenia (jako root):

apt-get install picprog

Po zainstalowaniu programu i podłączeniu programatora wraz z mikrokontrolerem do komputera należy wydać polecenie (jako root):

picprog –pic-serial-port=/dev/ttyS0 –erase –burn –input-hexfile=/home/foo/bar.HEX –device=pic16f84A

Gdzie parametr:

  • pic-serial-port=/dev/ttyS0 oznacza port COM1,
  • erase oznacza wykasowanie poprzedniej zawartości mikrokontrolera,
  • burn oznacza wczytanie nowego programu,
  • input-hexfile jest ścieżką do pliku hex otrzymanego w procesie kompilacji,
  • device należy podać typ mikrokontrolera (patrz Tab.5).

Tab. 5 Obsługiwane mikrokontrolery przez program picprog

PIC12 PIC16 PIC18 PIC30
pic12c671, pic12c672, pic12ce673, pic12ce674, pic12f629, pic12f675, pic12f635, pic12f683 pic16c84, pic16cr83, pic16cr84, pic16f83, pic16f84, pic16f84a, pic16f87, pic16f88, pic16c61, pic16c62, pic16c62a, pic16c62b, pic16c63, pic16c63a, pic16c64, pic16c64a, pic16c65, pic16c65a, pic16c65b, pic16c66, pic16c66a, pic16c67, pic16cr62, pic16cr63, pic16cr64, pic16cr65, pic16c620, pic16c620a, pic16cr620a, pic16c621, pic16c621a, pic16c622, pic16c622a, pic16f627, pic16f627a, pic16f628, pic16f628a, pic16f648a, pic16f883, pic16f884, pic16f886, pic16f887, pic16ce623, pic16ce624, pic16ce625, pic16c641, pic16c642, pic16c661, pic16c662, pic16c71, pic16c710, pic16c711, pic16c712, pic16c715, pic16c716, pic16c717, pic16c72, pic16c72a, pic16cr72, pic16c73, pic16c73a, pic16c73b, pic16c74, pic16c74a, pic16c74b, pic16c76, pic16c77, pic16f72, pic16f73, pic16f74, pic16f76, pic16f77, pic16f737, pic16f747, pic16f767, pic16f777, pic16c432, pic16c433, pic16c781, pic16c782, pic16c745, pic16c765, pic16c770, pic16c771, pic16c773, pic16c774, pic16f870, pic16f871, pic16f872, pic16f873, pic16f873a, pic16f874, pic16f874a, pic16f876, pic16f876a, pic16f877, pic16f877a, pic16f785, pic16hv785, pic16f818, pic16f819, pic16c923, pic16c924, pic16f630, pic16f676, pic16f631, pic16f636, pic16f639, pic16f677, pic16f684, pic16f685, pic16f687, pic16f688, pic16f689, pic16f690 pic18f242, pic18f248, pic18f252, pic18f258, pic18f442, pic18f448, pic18f452, pic18f458, pic18f1220, pic18f2220, pic18f4220, pic18f1320, pic18f2320, pic18f4320, pic18f6520, pic18f6620, pic18f6720, pic18f8520, pic18f8620, pic18f8720, pic18f6585, pic18f8585, pic18f6680, pic18f8680, pic18f6525, pic18f6621, pic18f8525, pic18f8621, pic18f2439, pic18f2539, pic18f4439, pic18f4539, pic18f2331, pic18f2431, pic18f4331, pic18f4431, pic18f2221, pic18f2321, pic18f2410, pic18f2423, pic18f2420, pic18f2450, pic18f2455, pic18f2458, pic18f2480, pic18f2510, pic18f2515, pic18f2523, pic18f2520, pic18f2525, pic18f2550, pic18f2553, pic18f2580, pic18f2585, pic18f2610, pic18f2620, pic18f2680, pic18f2682, pic18f2685, pic18f4221, pic18f4321, pic18f4410, pic18f4423, pic18f4420, pic18f4450, pic18f4455, pic18f4458, pic18f4480, pic18f4510, pic18f4515, pic18f4523, pic18f4520, pic18f4525, pic18f4550, pic18f4553, pic18f4580, pic18f4585, pic18f4610, pic18f4620, pic18f4680, pic18f4682, pic18f4685, pic18c242, pic18c252, pic18c442, pic18c452, pic18c658, pic18c858 dspic30f2010, dspic30f2011, dspic30f2012, dspic30f3010, dspic30f3011, dspic30f3012, dspic30f3013, dspic30f3014, dspic30f4011, dspic30f4012, dspic30f4013, dspic30f5011, dspic30f5013, dspic30f5015, dspic30f6010, dspic30f6011, dspic30f6012, dspic30f6013, dspic30f6014

Więcej informacji o obsłudze programu znajduje się w dokumentacji.

5.2 Programowanie za pomocą programu PICPgm

Program PICPgm jest darmowy, dostępny dla systemu operacyjnego Linux, MacOS X i Windows. W lipcu 2015 roku wspiera 660 typów mikrokontrolerów rodziny PIC, zarówno programowanych wysokim napięciem jak i niskim. Na stronie internetowej projektu znajdują się schematy programatorów dla obu typów napięć. Program współpracuje z programatorem JDM przedstawionym w niniejszym opracowaniu.

Przykładowe wywołanie programu z linii poleceń w systemie Linux/Debian:
picpgm -port /dev/ttyS0 -p_code uC.HEX -pic 16F877A -r

6. Odnośniki

Pliki projektu:

Linki: