NWT-500 - programowanie procesora PIC

Foto 1: Procesor PIC przed przylutowaniem do płytki musi być zaprogramowany.
Mikrokontrolery PIC można programować na wiele sposobów. W NWT-500 autor DL1ALT zdecydował się na programowanie przez port szeregowy komputera PC. Jest to rozwiązanie bardzo wygodne i umożliwiające aktualizację firmware'u z poziomu aplikacji przez użytkownika.
Aby mieć możliwość programowania przez port szeregowy układ PIC musi mieć załadowany program do obsługi tej metody – tzw. bootloader. Niestety autor nie przewidział możliwości wgrywania bootloader'a w systemie, wobec czego mikrokontroler musi być wstępnie zaprogramowany przed przylutowaniem.
Szybka analiza dokumentacji do PIC16F876 umożliwia opracowanie minimalnego schematu niezbędnego do zaprojektowania układu. W rozwiązaniu tym korzystamy z wewnętrznego oscylatora mikrokontrolera a odpowiednie sygnały niezbędne do programowania są wyprowadzone na złącze sześciopinowe zgodnie ze standardem programatora PICKIT2.

Foto 2: Schemat najprostszego interfejsu umożliwiającego zaprogramowanie mikrokontrolera.
Pewnym problemem jest zapewnienie dobrego styku elektrycznego wyprowadzeń mikrokontrolera (programujemy przed wlutowaniem) w trakcie programowania - fabryczne podstawki do układów w obudowie SOIC28 są bardzo drogie i trudno dostępne. Ja poradziłem sobie z tym problemem tak:

Foto 3: Interfejs zmontowany na uniwersalnej płytce drukowanej. Mikrokontroler jest umieszczony w złączach pinowych o rastrze identycznym z nóżkami układu scalonego. Prawe złącze jest przylutowane do elastycznej taśmy czternastożyłowej.
Po zmontowaniu prowizorycznego interfejsu umieściłem w nim mikrokontroler i całość podłączyłem do programatora. W tym momencie mogłem przejść do drugiego etapu, czyli zainstalowania oprogramowania i skonfigurowania Linuxa (Ubuntu 10.04).

Foto 4: Interfejs podłączony do programatora PICKIT2
Programowanie mikrokontrolerów PIC w systemie Linux (Ubuntu 10.04)
- Ze strony Microchip'a pobieramy archiwum pic2cmd, rozpakowujemy i kompilujemy zgodnie z instrukcją.
-
Dodajemy grupe microchip i dopisujemy się do niej:
sudo addgroup microchip
sudo addgroupmicrochip -
Za pomocą polecenia
sudo nano /etc/udev/rules.d/026_microchip.rules tworzymy plik z następującą zawartością:#PICKit
SYSFS{idVendor}=="04d8", SYSFS{idProduct}=="0032", MODE="0660", GROUP="microchip"
#PICKit2
SYSFS{idVendor}=="04d8", SYSFS{idProduct}=="0033", MODE="0660", GROUP="microchip"
#ICD2
SYSFS{idVendor}=="04d8", SYSFS{idProduct}=="8000", MODE="0660", GROUP="microchip"
#ICD21
SYSFS{idVendor}=="04d8", SYSFS{idProduct}=="8001", MODE="0660", GROUP="microchip"
- Restartujemy komputer.
-
Aktualizujemy oprogramowanie programatora PICKIT2
pk2cmd -d PK2V023200.hex -
Sprawdzamy poprawność pracy programatora poleceniem pk2cmd -?V. Jeżeli wszystko jest sprawne to zobaczymy trzy trzy linie z numerami wersji. Powinno to mniej więcej wyglądać tak:
djj@djj-laptop:~/Pobrane/pk2cmdv1.20LinuxMacSource$ pk2cmd -?V Jeżeli któraś z wersji się nie wykryje, to mamy błąd i musimy sprawdzić co go powoduje. Tak długo jak wszystkie trzy wersje poprawnie się nie wykryją nie ma sensu przechodzić do kolejnego punktu.
Executable Version: 1.20.00
Device File Version: 1.55.00
OS Firmware Version: 2.32.00
Operation Succeeded -
Sprawdzamy czy programator komunikuje się z mikrokontrolerem. Jeżeli wszystko jest OK to zobaczymy identyfikator układu, numer jego wersji i nazwę.
djj@djj-laptop:~/Pobrane/pk2cmdv1.20LinuxMacSource$ pk2cmd -PPIC16F876A -I
Device ID = 0E00
Revision = 0008
Device Name = PIC16F876A
-
Na wszelki wypadek czyścimy mikrokontroler ze starego kodu
pk2cmd -PPIC16F876A -E i wgrywamy kod bootloader'apk2cmd -PPIC16F876A -Fbootloader_GHF9.hex Po programowaniu powinniśmy zobaczyć coś takiego:djj@djj-laptop:~/Pobrane/pk2cmdv1.20LinuxMacSource$ pk2cmd -PPIC16F876A -Fbootloader_GHF9.hex -M
PICkit 2 Program Report
12-5-2010, 0:44:03
Device Type: PIC16F876A
Program Succeeded.
Operation Succeeded
Wreszcie możemy złapać za lutownicę i wlutować układ na płytkę :-)