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

AT89S52 - układ nie startuje po zaprogramowaniu, reset nie działa

ReeZ 12 Cze 2006 13:05 1800 14
REKLAMA
  • #1 2722022
    ReeZ
    Poziom 11  
    Posty: 5
    Witam!
    Szukam szukam i znalezc na forum nie moge.
    Mam taki problem.
    Zaprogramowano uklad AT89S52, programator pokazuje ze wszystko ok, mozna zgrac kod programu na komputer, ale uK nie chce wystartowac.

    Reset kombinowalem juz z kondensatorem, dioda, rezystorem i przelacznikiem, podlaczalem sam rezystor 8k2 i kondensator 10uF i tez nic.

    Jakis pomysl dlaczego nie chce dzialac?

    Moze schemat ukladu resetujacego, ktory napewno dziala i jest sprawdzony.

    Pod uK podlaczone sa kwarc, kondensatory pod xtal, Vcc pod ~EA no i reset przez kondensator do Vcc (zwierane przelacznikiem).

    Wgrany program ktory ma zerowac porty (tak sprawdzam czy dziala).

    Z gory thx za pomoc ;)
  • REKLAMA
  • #2 2722090
    serwisant_tel_fax_ksero
    Poziom 11  
    Posty: 16
    Ocena: 1
    jaki plik wgrywasz i czym ? podeślij plik i napisz czym to programujesz ewentualnie dołącz listing .
  • REKLAMA
  • #4 2722466
    szymtro
    Poziom 30  
    Posty: 1421
    Pomógł: 101
    Ocena: 59
    Mam takie trzy - kupuj następny. I sprawdź dobrze gdzie jest zasilanie ( i jakie) zanim wetkniesz nowego.
  • #5 2722483
    bolek
    Poziom 35  
    Posty: 4099
    Pomógł: 86
    Ocena: 299
    a pamięc programu masz wybraną jako zewnętrzna, czy wew.?
  • REKLAMA
  • #6 2722524
    ReeZ
    Poziom 11  
    Posty: 5
    wewnetrzna - ~EA podpiete do Vcc

    mozliwe ze sa az tak slabe i strzelaja ??
  • #7 2722710
    szymtro
    Poziom 30  
    Posty: 1421
    Pomógł: 101
    Ocena: 59
    One nie są słabe tylko słabo znoszą nieprawidłowe zaislanie.
    Nie napisałeś czy czasami nadmiernie sie nie nagrzewa.
    O tym że P0 nie ma pull-up to chyba wiesz.

    Zrób jeszcze taki numer że od programatora odepnij kabelek resetu i spróbuj odczytać sygnaturę - zadziała = do kosza.

    Co do sygnału oscylatora to jeżeli ISP działa to znaczy że oscylator też musi poprawnie startować.

    Co do programu to najprostszy:
    reset:
    mov p0,#0
    mov p2,#0
    mov p3,#0
    mov p1,#0
    ljmp reset
    

    Kompiloujemu bez żadnych ustawień (lub tłumaczymy ręcznie na bajty) i wpisujemy do procka, Jeżeli nie zadziała procek jest do kosza.

    A tak prywatnie:
    Kup ze dwa nowe, to tylko dwa razy tyle (za sztuke) co przecyzyjna 40'tka.
  • #8 2723041
    Bigfoot
    Poziom 25  
    Posty: 982
    Pomógł: 74
    Ocena: 13
    Kiedys mialem problem, ze uklad mi sie resetowal bo kabel programowania robil za antene sciagajaca rozne smieci. Czy po zaprogramowaniu go odlaczasz?
  • #9 3413309
    Xgrzyb
    Poziom 11  
    Posty: 11
    Ocena: 1
    mam to samo, procek się nie grzeje, zasilanie stabilizowane 5V,
    reset switch+kondensator, kwarc na 2 kondensatorach 33 pF,

    wgrywa pierwszą linijkę programu i koniec.

    program zmienia stan wyjścia podłączonego do diody.

    w zależności od tego, jak ustawię początkowy stan w programie to świeci lub nie.

    pamięć wewnętrzna

    programuje się bez problemu, można odczytać (poprawnie) zapisany wcześniej program
  • REKLAMA
  • #10 3413576
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    Podłączenie RST.
    Vcc<-10u<-RST->10kΩ->GND.
    Jak uP jest sprawny to program musi wystartować.
    uP resetujemy podając stan wysoki (5V), normalna praca to stan niski.
  • #11 3416089
    Xgrzyb
    Poziom 11  
    Posty: 11
    Ocena: 1
    niestety nic się nie zmieniło :/ w takim razie muszę wymienić uP.
    dzięki za pomoc
  • #12 3419275
    daro2012
    Poziom 11  
    Posty: 52
    Ocena: 1
    Byl czas, ze musialem przesiasc sie z C51 na S51 i zaczely sie problemy. Jezeli sterujesz czyms pradozernym to musisz wiedziec, ze S51 nie pusci wiecej pradu z pina (w stanie wysokim) niz 110uA, a wiec leda tym nie wysterujesz. Natomiast przy stanie niskim jest ok. 10mA na pin, wiec jesli mozesz to steruj zerem.
    poza tym zwroc uwage na kwarce. Ja puszczam S51/52 przy 24MHz i okazuje sie ze nie wszystkie egzemplarze kwarcow startuja. Pomijam juz kwestie odpowiednich harmonicznych kwarcu, choc tu uklad bedzie dzialal, ale 3 razy wolniej.
    Jesli miedzy pin RESET a VDD dasz kondziora wiekszego od 200nF to nie ma bata zeby procek nie ruszyl.
    pozdr.
  • #13 3422154
    Xgrzyb
    Poziom 11  
    Posty: 11
    Ocena: 1
    jak na razie to nie ma bata, żeby ruszył :/

    dzięki za pomoc, chyba muszę kupić nowy,

    daro z jakich "esek" korzystasz?

    bo mnie s52 doprowadza do białej gorączki
  • #14 3422691
    daro2012
    Poziom 11  
    Posty: 52
    Ocena: 1
    Oczywiscie korzystam z atmeli 89s51 24PU, oraz 89s52 24PU.
    Poprobuj z roznymi kwarcami np 4MHz-12MHz
    EA/VPP --> VDD
    RESET --> 470nF --> VDD
    no i oczywiscie jakis sofcik w srodku ;)
    To tyle zeby ruszyl, inaczej procek do kosza.
  • #15 3663646
    Xgrzyb
    Poziom 11  
    Posty: 11
    Ocena: 1
    ostatnio wznowiłem działania,
    Między VDD a RST mam kontensator 300nF i nic.

    To samo mimo wymiany procka, wgrywa początkowy stan wyjścia.
    Oto kod:

    #include <at89x52.h>         // zbiór definiujący rejestry procesora
    
    //----------------------------------------------------------------
    void main(void) {
    
    BYTE i;
    
    P0_0=1;
    
    while(1){
    
    P0_0=!P0_0;
    
    for(i=0;i<0xFFFF;i++){};
    
    }
    
    }
    


    Kwarc 4 MHz na dwóch 33pF.
    Czyta ispprog'iem sygnaturę i zapisuje program (można go potem odczytać poprawnie). Ale nie startuje.

    Może coś źle zrobiłem, błagam was oświećcie mnie :/



    PO PROBLEMIE!! Wszystkim dziękuję. Zostawiam wiadomość, bo może ktoś się na moich błędach nauczy.

    Zły kod !! nie BYTE tylko WORD!!!

Podsumowanie tematu

✨ Problem dotyczy mikrokontrolera AT89S52, który po zaprogramowaniu nie uruchamia się, a reset nie działa prawidłowo. Programator wskazuje poprawne zaprogramowanie i możliwość odczytu kodu, jednak układ nie startuje. W dyskusji poruszono kwestie poprawnego podłączenia resetu (różne konfiguracje z kondensatorami i rezystorami), zasilania, kwarcu (częstotliwości 4 MHz, 12 MHz, 24 MHz oraz kondensatory 33 pF), oraz pamięci programu (wewnętrzna z ~EA podłączonym do Vcc). Zwrócono uwagę na brak pull-up na porcie P0, konieczność stosowania odpowiedniego sygnału resetu (stan wysoki na RST), oraz możliwe uszkodzenie mikrokontrolera. Sugerowano testowanie prostego programu zerującego porty, odłączanie resetu od programatora podczas testów, oraz wymianę układu na nowy. Wskazano także, że błędy w kodzie (np. użycie BYTE zamiast WORD) mogą powodować brak działania programu. Ostatecznie problem rozwiązano poprzez poprawę kodu źródłowego.
Wygenerowane przez model językowy.
REKLAMA