logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

A89C2051 - Mikrokontroler nie wykonuje programu po zaprogramowaniu

Taki_Wojtek 14 Wrz 2005 21:58 1652 16
REKLAMA
  • #1 1818706
    Taki_Wojtek
    Poziom 11  
    Posty: 43
    Pomógł: 1
    Witam!

    W jednym z numerów Praktycznego Elektronika (12/99) znalazłęm artykuł pt. "Programator Atmeli w 15 minut". Był w nim bład dotyczący napięcia zasialania mikrokontrolera. Wykonałem ten programator i napisałęm program do jego obsługi na bazie listingu zamieszczonego w w/w artykule.

    Mój problem polega na tym, że zaprogramoany mikroprocesor nie wykonuje programu. Proces programowania przebiega pomyślnie, a po włożoeniu mikrokontrolera do układu testowego. Na prawie wszystkich portach występuje 5V.

    Co może być tego przyczyną? Będę wdzięczny za wszelkie sugestie.
  • REKLAMA
  • #2 1818722
    ACULA
    Poziom 34  
    Posty: 3005
    Pomógł: 105
    Ocena: 114
    kwarc, reset, pomierzyłeś wszystko?? możliwości jest tysiące
  • REKLAMA
  • #3 1818809
    Taki_Wojtek
    Poziom 11  
    Posty: 43
    Pomógł: 1
    Kwarc 12 Mhz... Kondensatory trochę małę bo 30p ale powinno wystarczyć. Reset - kondensator 10µ + do 5V, - do resetu i opornik 10K do masy.

    Ale czego to są objawy? Niewgrany program czy coś z uruchomieniem?
  • REKLAMA
  • #4 1818845
    Fajfer2
    Poziom 20  
    Posty: 507
    Pomógł: 18
    Ocena: 14
    Ja nie zrozumiałem--no bo jak nie został zaprogramowany
    to nie ma co wykonywać.
    Spróbuj napisać "programik" najprostszy jaki
    można sobie wyobrazić typu:

    MOV P1,#0
    JMP $
    END
    Na porcie P1 powinny być zera.
    ps. a kondensator jest dobrze spolaryzowany?
  • #5 1818858
    Taki_Wojtek
    Poziom 11  
    Posty: 43
    Pomógł: 1
    Napisałem coś podobnego i nic sie nie dzieje.

    Z tym programatorem to jest możliwość niewgrania, bo nie można na nim przeprowadzić weryfikacji i nie wiem czy program jest w mikrokontrolerze?

    Może mam uszkodzeonego tego Atmela?

    Kodnestator: + do +5V, - przez opornik do masy i do resetu.
  • #6 1818885
    Fajfer2
    Poziom 20  
    Posty: 507
    Pomógł: 18
    Ocena: 14
    Jak byś miał oscyloskop to sprawdź czy jest sygnał zegarowy na kwarcu
    no i sprawdź czy po włączeniu napięcie na RESET jest tylko przez chwilkę
    (ma to być krótki impuls po czym ok. 0V na wypr. RES )
  • REKLAMA
  • #7 1819104
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    Czy napięcie programujące , w czasie programowania jest prawidłowe :?:

    Piotrek
  • #8 1819677
    Taki_Wojtek
    Poziom 11  
    Posty: 43
    Pomógł: 1
    Niestety nie mam oscyloskopu. W przeciwnym wypadku sprawa by była załatwiona.

    W programatorze napięcie na odpowiednich pinach jest takie jak w nocie katalogowej. Może być problem z opóźnieniami, ale to jus zniwelowałem przez puste pętle.

    I nadal nie działa:(
  • #9 1820442
    vidmo
    Poziom 14  
    Posty: 166
    Ocena: 18
    witam
    spotkalem sie juz z paroma programatorami i zauwazylem w nich powazny problem
    jesli programator niewidzi ukladu to po zaprogramowaniu wyzuci OK !
    wiec jesli niemasz sprzetu zacznij od programu do odczytu zawartosci z uC to bedze najlepsza weryfikacja
    zawartosci programu
    wiec obstawiam na 90% ze to wina programatora :)
    i 90 ze procesor jest zupelnie czysty :)
  • #10 1820489
    Fajfer2
    Poziom 20  
    Posty: 507
    Pomógł: 18
    Ocena: 14
    Podpowiedz o jakie opóźnienia chodzi
    (pisałeś że zniwelowałeś wprowadzając puste pętle)
  • #11 1822499
    Taki_Wojtek
    Poziom 11  
    Posty: 43
    Pomógł: 1
    Wak już wcześniej wspomniałem, program do obsługi programatora napisałem na podstawie listingu z artykułu w PE.

    Gdy programuje się bajt do 2051 to czteba ustawić odpowiednią kombinację stanów na portach P3.3, P3.4, P3.5 i P3.7. Następnie na port P1 wrzucić wspomnniany bajt i wygenerować krótki (1..110us) impuls programujący na XTAL1. I właśnie z tyym jest problem w szybkich procesorach. Dlatego zastosowałem puste pętle - pętle które nie robią nic poza tym że się wykonują i zajmują ułamki ms.

    Program nie ma funkcji rozpoznawania procesora. Jest to program napisany w Pascalu pod DOSa. Jest prosty i powinien działać.

    Dzisiaj idę do sklepu po nawego Atmelka. Zobaczymy co będzie.

    Byłem w sklepie... I nadal nie działa. No to został do sprawdzenia program i układ testowy.
  • #12 1824381
    rafels
    Poziom 26  
    Posty: 721
    Pomógł: 69
    Ocena: 166
    Czy program do obsługi programatora ma opcje weryfikacji?
    Jeśli tak to programuj z włączoną tą opcję, będziesz wiedział czy programowanie przebiegło poprawnie.
  • #13 1825169
    Taki_Wojtek
    Poziom 11  
    Posty: 43
    Pomógł: 1
    Programator z PE 12/99 nie ma możliwości weryfikacji. Tytuł artykułu - "Programator Atmeli w 15 minut".
  • #14 1825706
    Jdsoul
    Poziom 23  
    Posty: 501
    Pomógł: 47
    Ocena: 10
    Cześć !

    AT 89C2051 programuje się techniką przemiatania pamięci przez licznik wewnętrzny taktowany sygnałami programującymi.

    Oznacza to, konieczność zerowania układów wewnętrznych procesora przed rozpoczęciem procesu programowania. Gdy procesor jest gotowy do przyjmowania danych na port P1 ustawia adres 0000h w pamięci flash.
    Zdarza się że przy odpalaniu programu na PC pójdzie jakiś impuls ma LPT
    i może programować się adres wyższy niż 0000h , a to sprawi że zaprogramowany procesorek nie będzie "działał".
    Najłatwiej reset jest uzyskać poprzez krótkie zwarcie resetu tuż przed uruchomieniem procedury programowania. Taką modyfikację posiada kilka amatorskich układów programatorów.

    W trakcie zapisu napięcie na 1 nóżce powinno skoczyć do +12V a następnie powrócić do +5V.

    Jeśli program napisałeś sam w Pascalu to możesz łatwo sprawdzić poprawność jego działania zastępując poszczególne wyprowadzenia procesora port P3 oraz RST diodami LED. W samym programie zastosuj opóźnienienia po każdej komendzie rzędu pojedynczych sekund, tak aby spokojnie analizować kolejne zmiany(błyski diod) w trakcie "programowania".

    Sekwencja programowania jest podana w datasheet AT89C2051.

    Dodano po 6 [minuty]:

    Jeszcze jedna drobna uwaga !

    Jeśli otwierasz program dosowy w oknie windows XP lub Windows 2000 to nie masz bezpośredniego dostępu do fizycznych rejestrów portu LPT.

    Proponuję żebyś spróbował załatwić sobie dyskietkę startową DOS 6,22 zgrał na to swój program i plik do programowania i dopiero po starcie z czystego DOS-a testował działanie programu i programatora.
    Czasem pomaga.
    Windowsy od 2000 XP w górę nie mają sprzętowego trybu DOS tylko jego emulację. :) { zmora użytkowników starszych programów }.
  • #15 1827565
    Taki_Wojtek
    Poziom 11  
    Posty: 43
    Pomógł: 1
    Widzę, że piszę mało konkretów...

    1. Prawie masz rację z tym resetem. Napięcie na nóżce RST powinno być "na chwilę" zwarte do masy, a później przez cały czas programowania powinno być równe 12V. Opisana przez Ciebie sytuacja powinna mieć miejsce przy weryfikacji.
    2. Bardzo fajny sposób sprawdzania. Ja robiłem to woltomierzem. Po każdym wpisaniu do portów dawałem instrukcję, która czekała na naciśnięcie klawisza.
    3. Program uruchamiam wyłącznie z dyskietki startowej.

    Dziś moge Wam powiedzieć, że program jest dobrze napisany. Programator działa... Anie nie na moim komputerze. Byłem u kumpla i na jego wolniejszym laptopie wszystko poszło bezproblemowo.

    Czy ktoś umie wytłumaczyć ten paradoks? Port mam sprawny... Sprawdzałem chyba z 1000 razy.:(

    Eeech
  • #16 1832441
    Jdsoul
    Poziom 23  
    Posty: 501
    Pomógł: 47
    Ocena: 10
    Możesz jeszcze spróbować użyć wytrychu. :) :)

    na sieci chodzą programy typu TRS np. maslo.com do "spowalniania"
    komputera :). Jest to program "wyskakujący" instalujący się na
    przerwaniu zegerowym procesora. Uruchamiasz go tylko w
    sesji Dosowej lub czystym dosie i robi z Pentium IV 1GHz-> Pentium 100.

    Program uruchamiasz, instaluje się w pamięci rozszerzonej i potem uruchamiasz swój program obsługi programatora.

    Taką zabawę wymyślili użytkownicy starych gier dosowych których prędkość zależała od zegara procesora.

    Ostatnia uwaga ten typ programatora powinien współpracować z portem LPT w konfiguracji SPP.
  • #17 1832724
    Taki_Wojtek
    Poziom 11  
    Posty: 43
    Pomógł: 1
    Masz może gdzieś ten program. Będę dźwięczny. Albo chociaż napisz co on (ten program) robi na przerwaniu.

    Port LPT ustawiony na Uni-Directional. Najprostrzy i najskuteczniejszy pod Dosem tryb.

Podsumowanie tematu

LABEL_AI_GENERATED
Problem dotyczy mikrokontrolera AT89C2051, który po zaprogramowaniu za pomocą amatorskiego programatora opisanego w artykule z Praktycznego Elektronika (12/99) nie wykonuje programu. Programowanie przebiega bez błędów, jednak po włożeniu mikrokontrolera do układu testowego na większości portów pojawia się stałe napięcie 5V, a program nie działa. Dyskusja wskazuje na kilka potencjalnych przyczyn: brak sygnału zegarowego na kwarcu 12 MHz, nieprawidłowe działanie układu resetu (kondensator 10 µF, rezystor 10 kΩ), brak możliwości weryfikacji zaprogramowanego kodu w programatorze, oraz problemy z opóźnieniami w generowaniu impulsów programujących na porcie P1 i XTAL1. Zalecane jest sprawdzenie sygnału zegarowego oscyloskopem, poprawne sterowanie linią resetu (krótki impuls do masy, a następnie 12 V podczas programowania), oraz testowanie prostych programów (np. ustawiających port P1 na 0). Wskazano również, że programator może nie współpracować poprawnie z szybkim komputerem, co można obejść przez spowolnienie procesora PC za pomocą programów typu TSR. Brak funkcji weryfikacji w programatorze z PE utrudnia potwierdzenie poprawności zapisu. Ostatecznie problem może leżeć w programatorze, układzie testowym lub specyfice środowiska PC, na którym jest uruchamiany program do programowania.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA