Programator JDM dla mikrokontrolerów PIC
1. Wstęp
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:
- Projekt PCB w formacie PDF
- Rozmieszczenie elementów na płycie PCB w formacie PDF
Linki:
- Płytka PCB programatora do zamówienia w PCBWay