(3 głosujących) Artykuł ten powstał aby przedstawić w jak najprostszy sposób metodę programowania mikrokontrolerów AT89SXX i podobnych z rodziny MCS51 wyposażonych w interfejs ISP. Seria mikrokontrolerów AT89S jest następcą bardzo popularnych AT89C, które niestety mogą być programowane tylko za pomocą programatora równoległego. Wiele starszych projektów wykorzystuje mikrokontrolery tej rodziny więc sensowne okazało się przedstawienie tego opisu. Dodatkowo niska cena niektórych AT89S powoduje, że chętnie są stosowane w mniej skomplikowanych projektach zamiast mikrokontrolerów AVR. Impulsem do napisania tego artykułu stały się coraz częstsze pytania o programowanie mikrokontrolerów do moich starszych projektów w których wykorzystywałem AT89CX051 a także zaprezentowanie przez kolegę DariuszEE ciekawego koreańskiego programu (ToastProg) do obsługi procesorów AT89SXX, AT89SX051 i większości AVR'ów. Programowanie odbywa się poprzez ISP za pomocą bardzo popularnego programatora STK200, a sam program jest banalny w obsłudze. Opis programowania będzie przedstawiony na przykładzie AT89S52 ale podłączenie innych obsługiwanych mikrokontrolerów odbywa się dokładnie w taki sam sposób. 1. Instalacja i konfiguracja programuProgram ToastProg można pobrać ze strony http://www.toastprog.com/ link bezpośredni można znaleźć tutaj Jak już wcześniej wspomniałem program jest koreański ale po zainstalowaniu wszystkie opcje są po angielsku. Zrzuty z instalacji wraz z zaznaczonymi przyciskami które trzeba użyć przedstawione są poniżej: Po zainstalowaniu okno główne programu będzie wyglądało tak: 2. ProgramatorProgram ToastProg współpracuje z programatorem STK200, którego opis znajduje się tutaj, natomiast schemat połączeń procesora AT89S52 z programatorem znajduje się na rysunku poniżej: Mikrokontroler do poprawnego działania wymaga rezonatora kwarcowego i dwóch kondensatorów pomocniczych. Procesor jak i programator wymagają zasilania +5V względem masy (GND). Programator (zaznaczony na rysunku czerwoną przerywaną ramką) zasila się poprzez złącze programujące JP. Mając gotowy programator do wykonania pozostaje jeszcze tylko zmontowanie elementów wokół procesora U1 na kawałku płytki uniwersalnej lub w pająku. W przypadku innego procesora z serii AT89S postępujemy tak samo z tym że prawa część schematu będzie troszkę inna. Zmiana będzie polegała na innych wyprowadzeniach układu programowanego, które musimy znaleźć w karcie katalogowej danego mikrokontrolera (przeważnie jedna z pierwszych stron w karcie). Do procesora mają być dołączone wyprowadzenia MOSI, MISO, SCK(CLK), RST (złącze w programatorze ma takie same nazwy pinów). Ponadto masa programatora musi być połączona z masą procesora, a całość musi być zasilana napięciem 5V. 3. Testowanie komunikacji z procesoremNa rysunku poniżej widać okno główne programu wraz z zaznaczonymi (za pomocą kolorowych ramek) przyciskami: Pierwszą i najważniejszą czynnością jest wybór rodziny i typu programowanego procesora (ramka żółta). W tym przypadku jest to AT89S52 z rodziny 8051. Po włączeniu zasilania procesora (i programatora) można wybrać opcję odczytu pamięci programu (ramka zielona, P-pamięć programu, D-pamięć danych EEPROM). Ma to teraz na celu jedynie sprawdzić czy komunikacja z procesorem przebiega prawidłowo. Jeśli istnieje jakikolwiek problem na drodze komputer - mikrokontroler pojawi się następujący komunikat "Device Not Maching (0x2012)" (zrzut poniżej). Trzeba wtedy sprawdzić układ czy zgadza się ze schematem i czy zasilanie jest włączone, a port w biosie ustawiony w tryb ECP. Gdy wszystko jest w porządku pamięć programu z procesora zostanie odczytana do bufora w programie i pojawi się komunikat: Jeżeli występuje problem z komunikacją nie należy próbować wgrywać plików *.hex z programem ani nic podobnego bo jest to bez sensu. Poniższe zdjęcie przedstawia realizację schematu w pająku: 4. Co sprawdzić jeśli procesor nie jest wykrywany?
5. Pierwszy program i programowaniePierwszy program dla mikrokontrolera najłatwiej jest napisać w programie Bascom 8051, którego w wersji demo można pobrać ze strony http://www.mcselec.com/ Link bezpośredni dostępny jest tutaj. Poniżej przedstawiony został prosty programik sterujący diodą (diodami) na porcie P2 (piny 21-28 układu AT89S52) $crystal = 5000000 'rezonator kwarcowy [Hz] $regfile = "8052.dat" Do P2 = Not P2 'zmiana stanu portu 2 na przeciwny Waitms 250 'oczekiwanie 250 ms Loop End Program jest banalny a jego jedynym działaniem jest zmiana stanu portu P2 na przeciwny co około 250ms. Dla celów testowych można podłączyć diodę LED z szeregowym rezystorem 330R między +5V a jeden z pinów portu P2. Jeżeli procesor wyposażony jest w inny kwarc niż 5Mhz to należy zmienić pierwszą linijkę w prezentowanym programie. Przedstawiony wyżej program można skompilować, uzyskując plik *.hex potrzebny dla procesora. Gotowy skompilowany plik *.hex można pobrać tutaj. Gdyby konieczne stało się skasowanie pamięci programu to należy skorzystać z przycisku "Erase", oznaczonego różową ramką. Przedstawiony fragment programu wraz z gotowym plikiem *.hex to tylko przykład. Dokładnie w taki sam sposób programuje się procesor dowolnym plikiem *.hex, nie jest wtedy do niczego potrzebny program Bascom 8051.
|
|||
Przeróbka na programatora na USB
Witam. Fajny i ciekawy programator ale interesuje mnie przeróbka tego sprzętu na USB. Czy jest to możliwe w ogóle, bo mam kilka procków starej daty i chciałbym je zaprogramować a kupować programator za kilkaset złotych to się nie kalkuluje...Pozdrawiam :-)
Re: STK200
Tutaj masz zwykłego SK200, jeśli zrobisz sobie przejściówkę USB/LPT to powinno Ci zadziałać.... osobiście jeszcze takiej przejściówki nie skonstruowałem.... nie testowałem też przejściówek dostępnych na aukcjach internetowych ale raczej one są do drukarki a nie jako pełne wirtualne porty
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
wielki dzięki za fajny
wielki dzięki za fajny artykuł, wszystko dobrze działa, mam tylko pytanie czy jeżeli bym chciał pisać w asemblerze to jakie środowisko wybrać, patrzyłem na avrstudio/winavr tylko tam mam niedostępny procesor at89s51,czy warto zainteresować się keila uvision?. Mozesz rzuci okiem jeszcze na ten artykuł http://sid.iglu.cz/blog/?p=240 i powiedziec czy warto sie tym zainteresować w przyszlosci myslalem o programatorze na usb a z tego co wiem wszelkie przejściówki nie działają. Pozdrawiam
Uważam że keil jest chyba
Uważam że keil jest chyba najsensowniejszym rozwiązaniem do 8051, szkoda że płatny, ale ktoś kto wie czym jest chomik nie będzie mieć problemów z znalezieniem...
zcy
czyli mogę zaprogramowac uc z linkza pomocą schematu jak na obrazku, czy mam coś zmieniac?
mam ustawic pamięc programu, czy EEPROM?
Re: Programowanie
Musisz mieć procesor w wersji "S" AT89S4051 a nie ten z "C" i wtedy zaprogramujesz w sposób opisany wyżej. W przeciwnym wypadku zrób sobie projekt termometr uniwersalny i skorzystaj z wersji programu pod mikrokontroler attiny2313, który zaprogramujesz w podobny sposób za pomocą STK200 i programu bascom avr
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
acha, musze tylko zmienić
acha, musze tylko zmienić AT89C4051 na AT89S4051 i tyle, nie muszę zmieniać nic innego?
Re: 4051
Nic innego nie trzeba zmieniać
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
sorry za tyle pytań ale
sorry za tyle pytań ale przecież dopiero się uczę.
więc jak się wpisuje program do tego toastprog-a
jak zmienie uc to nie musze z mieniać programu?
przedstawiony tu uc ma więcej wyprowadzeń ale wystarczy że wejde w datasheet i po podłączam odpowiednie piny wg. schematu.
Re Programowanie
Toastprog nie jest kompilatorem a jedynie wgrywa gotowy hex z programem, na samym dole opisu masz napisane jak wgrać hex do procka
Musisz zmienić program jeśli w nim używałeś pinów procka których drugi nie ma. Poza tym powinieneś przekompilować kod pod drugi procesor bo ma przeważnie inne peryferia i nie będzie działać. Albo będzie działać w dziwny sposób
Do procesora mają być dołączone wyprowadzenia MOSI, MISO, SCK(CLK), RST (złącze w programatorze ma takie same nazwy pinów). Ponadto masa programatora musi być połączona z masą procesora, a całość musi być zasilana napięciem 5V. W karcie katalogowej znajdziesz który pin to MOSI a który MISO itd. (zaraz na drugiej stronie z rysunkiem wyprowadzeń)
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
byłbym wdzięczny gdyby ktoś
byłbym wdzięczny gdyby ktoś pokazał mi podstawkę programującą pod AT89S2051, ponieważ nie mogę się przekopać przez stertę programów i zbierznych danych.
z góry dziękuję
(najlepiej jakby był to plik do eagla, choć nie musi)
kopiowanie zawartosci at89s52
Witam super stronka wreszcie ktos to wszystko fajnie i zrozumiale opisal. Mam takie pytanko posiadam uklad at89s52 z gotowym wgranym programem (skaner dyskotekowy) i chciałbym skopiowac ta zawartosc do innego pustego at89s52. Orginał pracowal z kwarcem 15Mhz i tu pytanie czy przy odczycie i potem zapisaniu w nowym atmelu musze uzyc takiego samego kwarcu?
Re: Program 89S52
procesor normalnie odczytujesz za pomocą "Read P" jeśli oczywiście nie zostało ustawione zabezpieczenie przed odczytem pamięci. Jeśli układ źródłowy był np kitem elektronicznym albo fabrycznym urządzeniem to prawie na pewno został zabezpieczony. Jeśli nie jest zabezpieczony i odczytasz pamięć to uzyskasz plik hex w którym i tak nic nie zmienisz. Więc skoro program był tak napisany żeby działać na 15MHz to po zmianie kwarcu rozsypie się np timer i będzie źle liczył czasy.
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Dziekuje za odpowiedz aco do
Dziekuje za odpowiedz aco do urzadzenia to jest fabryczne efekt świetlny i zalezy mi na tym programie on steruje praca 3 silników krokowych czyli pewnie jest zabezpieczony to znaczy ze nici z kopiowanie czy tak? i niema mozliwosci jakos zlamac ten kod :-)
Re: At89S52
zabezpieczenia skasują się w momencie skasowania programu więc nic ci po tym. Chyba że został procek tak zabezpieczony że w ogóle wyłączyli interfejs programujący to wtedy tylko programator równoległy
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
witam przeczytałem ta stronę
witam przeczytałem ta stronę i mam takie pytanie, sciągnąłem sobie ToastProg usb ale w programie kiedy próbuję zrobić erase chip to pisze mi że nie mam pólaczenia z portem com lub lpt ?? Ale przecież to jest wersja na usb ??
POZDRAWIAM
Re: ToastProg
Na usb nigdy nie próbowałem programować 89S52.... szczerze mówiąc jedyny program którym udało mi się zmusić procesor 89S52 do pracy to właśnie ten program i to we współpracy z programatorem na LPT
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Dzięki bardzo, a mam jeszcze
Dzięki bardzo, a mam jeszcze jedno pytanko jak przekonvertować plik MASM listing do hex ?? Próbowałem w tym bascomie, ale nawet w programie ze stronki miałem błędy kompilacji (np. plik dat not found) Po za tym nigdy nie robiłem nic w bascomie i nie potrafię sie tym obsługiwać. PORATUJCIE proszę KOLEGĘ.
POZDRAWIAM Mac.
Re: MASM
Nie do końca jestem pewnien ale wydaje się jasne że musisz skompilowac kod asemblera do hex jesli chcesz go wgrac do procka tym sposobem co wyżej.. dla AVR jest AVR studio i za pomocą tego programu da się skompilować ASM do hex (przynajmniej tak mi się wydaje). Dla 8051 trzeba będzie poszukać czegos innego, chyba że avrstudio wyjątkowo obsługuje tez te procki. Możesz poszukać narzędzi do asemblera na stronie atmela. Bascom raczej się tu nie przyda
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Mam gotowy kod asemblera
Mam gotowy kod asemblera który muszę wgrać na AT89S52. Może coś co zamienia txt na hex ??
Re: ASEMBLER
Tak jak mówiłem potrzebujesz kompilatora, a raczej jakiegoś interpretera aby zamienił mnemoniki na liczby i zapisał w pliku hex.... poszukaj w sieci bo mam małe doswiadczenie z asemblerem
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Bardzo dziękuję za doradę
Bardzo dziękuję za doradę ;-). Naprawdę dobrze, że dziś istnieją takie strony jak ta.
POZDRAWIAM
Mac.
kopiowanie zawartosci at89s52
Mam pytanko czy programator mozna podłączyc bezposrednio do układu w którym pracuje at89 bez wyciagania go z plytki gdy przy wlaczeniu zasilania cały program startuje i dane urzadzenie zaczyna pracowac? zgóry dziekuje pozdrawiam
Re: Programowanie
Tak to powinno działać.... bo jak zacznie się programować to jest w resecie i nie będzie układ normalnie działał... przynajmniej tak wydaje się być racjonalnie i w mikrokontrolerach AVR tak jest... co do 89S to jeszcze tego nie testowałem
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
ISP Programmer by Dybkowski
Nie można tu nie wspomnieć, pod tytułem "Cudze chwalicie, swego nie znacie", projektu obsługującego praktycznie dowolnie skonfigurowane linie portu drukarki i programującego zarówno MCS51 jak i AVR :
http://sourceforge.net/projects/ispprogrammer/
Re: Ispprogrammer
Nie napisałem bo nie polecam tego programu.... po prostu pod MS51 nie działa..... nie czyta poprawnie sygnatury itp.... na AVR nie sprawdzałem bo nie podoba mi się jego obsługa...
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Programowałem 89S53 z
Programowałem 89S53 z komputera mającego LPT w trybie ECP na płycie głównej i złego słowa nie mogę powiedzieć... Być może problemy w Twoim przypadku nastąpiły w wyniku niedopatrzenia w ustawieniach, bo jest tego trochę. Nie działa też na dziwnych przejściówkach na USB.
Re: AT89S...
Normalnie na klasycznym STK200 za pomocą którego programowałem AVR'y..... nieważne w każdym bądź razie prezentuję tylko to co sam uruchomiłem i wiem że działa
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Na powyższym schemacie
Na powyższym schemacie !EA/VPP jest podłączone do UCC, w moim AT89S2051 mam RST/VPP, więc mogę podpiąć RESET do UCC?
Re: Programowanie
Reset ma być podłączony do resetu w programatorze... z tego co widze ten procek nie ma !EA żebyś mial coś dodatkowo zwierać. Do programatora ma być podpięte MISO, MOSI, SCK, RESET i GND. Zasilanie tez musi byc podłączone 5V względem masy (do procka i jak masz programator STK200 to programator tez musi byc zasilany)
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Witam mam pytanie: jeżeli ten
Witam
mam pytanie: jeżeli ten programator i procek wyprowadzenia miso mosi, itd. to czy można go zaprogramować zwykłym programatorem usb(stk 500)
Re: programator
Próbowałem USBASPEM ale bez rezultatu. W programie jest wybór USB lub LPT do programowania ale musisz sam sprawdzić bo STK500 nie posiadam
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Czy może ktoś próbował USBASP
Czy może ktoś próbował USBASP zaprogramować tą 89S52 ? Jak się komuś udało to proszę napisać jak to połączyć.
Pozdrawiam Karol
Witam :-)
Witam. Na początku pozdrowienia dla autora strony i przepraszam, że daaawno nic nie pisałem, ale życie weryfikuje pewne nasze plany i na wszystko nie mamy nieraz czasu...Do rzeczy...Co do tematu i wątku w którym piszemy, to wszystkim, którzy mają problemy z zaprogramowaniem AT89S/51/52...etc. a chcą go zaprogramować, polecam stronkę http://sid.iglu.cz/blog/?p=240 Jest tam opis zwykłego...Usbasp, ale z wersją oprogramowania, która obsługuje także "staruszki" At89S...Potrzebowałem programatora, żeby właśnie taki układ zaprogramować i z nudów złożyłem (już drugi w moim warsztacie...) Usbasp na płytce "uniwersalnej", ale jako wsad posłużył ten z tej strony, którą podałem - jest też wymieniona kilka postów wyżej, na początku dyskusji w temacie (nie dawać oryginalnego softa ze strony domowej Usbasp, bo nic nie zrobicie - nie zaprogramujecie żadnego AT89S... !!!). Po prostu jest to zwykły Usbasp, ale z softem obsługującym poczciwe AT89S...nic więcej. Przy poprawnym montażu i wgraniu odpowiedniego softa do Atmegi 8, a potem po podłączeniu do programatora naszego "staruszka" wszystko powinno ruszyć od "kopa". Jak wypakujecie pliki, to jest tam także środowisko do obsługi programowania - wszystkie funkcje. Wybieramy Usbasp, łączymy programator i programujemy ile i jak chcemy...Na stronie, którą podałem jest także forum i moje wypowiedzi na temat problemów, które miałem przy programowaniu - uważać na zworkę S_SCK - reszta w forum na podanej stronie. Jakby były jakieś problemy, to uderzać na stronkę tutaj, albo na maila - Pozdrawiam elektronicznie. Łukasz :-)
Toastprog, STK200 i AT89S52
Witam,
Bardzo mi pomógł ten artykuł. Testowałem wiele programatorów równoległych do AT89Cx051 i przeróżne programy je obsługujące, wszystko bez rezultatu. Dopiero zastosowanie się do wskazówek zawartych w tym artykule przyniosło oczekiwane rezultaty. Poza tym programowanie szeregowe jest dużo wygodniejsze - nie trzeba budować osobnego urządzenia, wystarczy posiadany programator ISP STK200, kilka przewodów i płytka stykowa.
Zaproponowany program Toastprog w mojej opinii jest jednym z lepszych które miałem okazję testować. Wielkie dzięki dla Autora za namiar na niego.
Pozdrawiam serdecznie.