2017.06.05 Programator Atmel 89cX051 – USB
W końcu udało się trochę czasu wygospodarować na elektronikę … 😉 Następny projekt z potrzeby chwili. Dużo projektów opieram na gotowych wsadach i w dużej mierze są to PIC’i, ale zdarzają się też na rodzinę Atmel.
Na szczęście po ISP to nie problem – programuje się bezpośrednio wlutowany układ w płytce. Ja posiłkowałem się rozwiązaniem z nieistniejącej już strony dybkowski.net, na szczęście układ jest prosty i schemat zachowałem:

natomiast program do tego ocalał w necie np. tutaj https://sourceforge.net/projects/ispprogrammer/files/1.2.0.47/
no ale miało być o USB 😉
Osobiście tworze programy pod rodzinę Atmel 8051 i dla moich potrzeb jest to w zupełności wystarczające więc nawet nie podjąłem próby przejścia na AVR. Problemem natomiast jest tutaj dobry programator. Jest to dość stara rodzina i już mało jest dostępnych informacji na ten temat. Do tej pory wystarczał mi prosty programatorek na trzech tranzystorach po LPT. Ma on niestety wadę – pod WIN XP z tym programowaniem wychodzi różnie, raz się uda a raz nie. Dobrze jak mamy gotowy wsad i w miarę udanie złożymy układ to łatwo zauważyć efekt programowania – działa lub nie 😉
Problem zaczyna być poważny w momencie gdy tworzę coś od totalnego zera – nie przetestowany wsad i nieprzetestowana płytka, nie ma gwarancji że winny jest zły wsad. Tutaj przydatna byłaby weryfikacja wsadu w mikrokontrolerze. Dlatego zacząłem się rozglądać za trochę bardziej rozbudowanym układem. Wybór padł na TAFE i program IC-Prog. No w sumie nieźle. Współczynnik zaprogramowanych skutecznie procków skoczył wybitnie w górę, ale nadal daleko jest do doskonałości. Nadal wina leży po stronie systemu Windows XP który nie pozwala rozwinąć skrzydeł na LPT blokując porty. Najlepszym rozwiązaniem byłoby posiadać Win 98 ale …. bez przesady … da się to obejść, ale niestety są czasami błędy i przekłamania. Poza tym udało się skutecznie popsuć parę kości 89c2051, coś się przywiesiły i weryfikacja pokazuje ciągle błąd w tym samym miejscu.
Znowu zacząłem poszukiwania – najlepiej jakby można było podpiąć programator pod USB ! No i okazało się że można.
Zaczęło się od trafienia na stronę gdzie był opisany program EZDL4 tam bardzo szczegółowo opisany jest programator na porcie szeregowym http://www.kswichit.com/easy1/easy.htm, podobnie opisany jest po polsku tu: http://www.cyfronika.com.pl/uruchomieniowe/zl6prg.pdf. Podstawowy układ wygląda tak:

No właśnie port szeregowy – czyli podmieniamy na FT232RL i mamy USB. Potem trafiłem na jeszcze jedno fajne miejsce, w sumie to to samo co powyżej, ale trochę przerobione http://adarex.com.pl/Programatory_procesorow_ATMEL_89C205189C4051
Tutaj lepiej zorganizowane jest sterowanie zasilaniem i w tym kierunku podążam aczkolwiek nie użyłem przetwornicy 😉
W sumie u mnie powstał zlepek z tych rozwiązań, aczkolwiek jeżeli nie chcecie mieć problemów przy składaniu polecam gotowe rozwiązanie ze strony adarex, jest tu podane wszystko łącznie ze schematem i wsadem do mikrokontrolera. Ja musiałem jak zwykle przez przekombinowanie dorabiać u siebie mostki 😉 No i mają zaprogramowane kości (to dla tych którzy jeszcze nie mają żadnego programatora)
Moja płytka poglądowo bo z drobnymi błędami (nie dopatrzyłem w Eagle że nie ma kilku fizycznych połączeń) oczywiście fotochemia:

dałem szerzej pady pod procek bo nie ufam programatorowi pod LPT i słusznie bo po wlutowaniu (wersja smd) okazało się że jest martwa i trzeba jeszcze raz wgrywać soft. Mój błąd nie zrobiłem weryfikacji w TAFE. Trzeba było ciąć niektóre połączenia na PCB i podpiąłem bezpośrednio kablami do TAFE. Tym razem udało się. Wszystko działa, aczkolwiek niesmak został, że znowu brzydko bo trzeba było potem cięcia zalutować 😉

Program do wgrywania i sczytywania wsadu jest dostępny tutaj u autora:
http://www.kswichit.com/ez4/ez4.html
Jedyny minus jaki zaobserwowałem u siebie, niekoniecznie powtarzalny u innych to to, że odłączając port USB w trakcie działania programu – program wiesza się, blokując skutecznie port USB. Pomaga tylko restart windowsa. Jeżeli programuję kilka kości to po prostu albo wychodzę po każdej z programu, albo przepinam procka bez dotykania gniazda USB.
No i na koniec coś przez co chciałem opisać tę wersję. Z ciekawości wziąłem kość 89c2051 która nie dała się programować i wywalała stały błąd … i poszło, aż mnie zamurowało. TAFE nie był w stanie przeprowadzić udanej weryfikacji, a próbowałem naprawdę wiele razy. Przy odczycie była sieczka, a tu poszło. Zgrałem wsad z zaprogramowanej kości i porównałem po sumach kontrolnych każdego wiersza i zgadza się. Jako że miałem jeszcze kilka takich upalonych atmelków, po kolei programowałem tym samym wsadem i … nie do wiary wszystkie zaprogramowane !!! 100%. Wrzuciłem jeszcze z ciekawości układ 89c4051 i sukces!
i na koniec miałem kość którą w tym najprostszym programatorze spaliłem umieszczając ją odwrotnie + 12V poszło na pin 11 i też sukces – oczywiście nie mam pewności że port żyje ale program wlazł i poprawnie zweryfikowane.
Podsumowując – programator Atmel na USB to super fajne, skuteczne, narzędzie dla miłośników starych, ale nieśmiertelnych 89cX051.



