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

Atmega16 TQFP - brak komunikacji po zmianie oscylatora na zewnętrzny

Jaco18 11 Paź 2005 20:23 1440 11
REKLAMA
  • #1 1890873
    Jaco18
    Poziom 26  
    Posty: 1122
    Pomógł: 7
    Ocena: 15
    Witam, mam całkiem spory problem z takowym prockiem - wgrałem do niego prosty program testowy do pewnego urządzenia i zmieniłem w Fusach ustawienia oscylatora z internal na external i po tym stracił komonukację z otoczeniem. :/

    Programator z bascoma przestał wykrywać typ układu, nic sie nie da zmienić, tak samo nie da sie zapisać flasha. Z tego co wyczytałem to pewnie wyłączył sie w jakis sposób interface ISP i trzeba go jakos inaczej zaprogramować - pytanie jak to zrobic i czym?? Dodam że procek jest wlutowany w płytkę i znajduje się w miniaturowej obudowie wiec raczej już z niej nie wyjdzie.... a jego wylutowanie wiązałooby się na 90% z uszkodzeniem scieżek i samego układu.
  • REKLAMA
  • #2 1891096
    hunterhouse
    Poziom 26  
    Posty: 893
    Pomógł: 84
    Ocena: 3
    po pierwsze to jesteś pewien że zablokowałeś ISP.
    pytam dlatego że jeśli przestawiałes zegar to może tu coś żle ustawiłeś.
    napisz dokładnie co zmieniałes a co nie

    jesli ustawiłeś niepoprawny sygnał zegarowy to byś miał te same objawy.
    1.napisz więc czy wgrany prgram działa?
    2.sprawdz czy kwarc jest dobrze podłączony?
    3.napisz (jesli pamiętasz) co ustawiłeś w fuse bitach?
    4.jaki masz kwarc (ile MHz)??
    5.jaki masz programtor??

    jak odpowiesz an te pytania to postaram ci pomóc.
  • #3 1891217
    Jaco18
    Poziom 26  
    Posty: 1122
    Pomógł: 7
    Ocena: 15
    Dzięki bardzo za pomoc, program sie nie wgrał do proca, przy odczycie danych wyskakują same FF. Jednak myślę że programator działa i miał komunikację z mikrokontrolerem. Jest to STK200, korzystam z bascomowego programu. Po wejściu w odczyt bezpieczników i bitów zabezpieczenia pokazało wszystkie ustawienia, zmieniłem tylko jedną opcję "Oscillator" z Internal 1Mhz na external.
    Do procesora podłączony jest kwarc 10 Mhz i 2 kondensatory 27p do masy. Po zmianie tej opcji nacisnałem przycisk Write FB i po tym procesor umarł :/ Nie jestem pewien czy nie działa ISP, w każdym razie programator teraz nie wykrywa ID procesora. Co z tym zrobić ..... ?
  • REKLAMA
  • Pomocny post
    #4 1892205
    hunterhouse
    Poziom 26  
    Posty: 893
    Pomógł: 84
    Ocena: 3
    ważna sprawa czy zmieniłeś na "external clock" czy na "external XTAL"
    bo jeśli external clock to procesor móci dostać sygnał zegarowy z zewnątrz a to znaczy że musisz mu podać sygnał z innego żródła na generator lub inny procek.
    jeżeli natomiast ustawiłeś zewnątrzny kwarc i nie dziłał to coć żle go podpiołeś. sprawdz jeszcze raz podłączenie kwarcu i kondensatorów.

    powodzenia i czekam na wyniki.
  • #5 1892478
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    Jeżeli kwarc i kondensatory są poprawnie podpięcie to zostały ci dwie a w zasadzie trzy możliwości.
    • 1. generator RC
      2. zewnętrzny generator
      3. programator równoległy

    Jedna z tych trzech możliwości na pewno Ci pomoże.
  • #6 1893018
    Jaco18
    Poziom 26  
    Posty: 1122
    Pomógł: 7
    Ocena: 15
    Witam ponownie,
    sprawdziłem kwarc i kondki - połącznia wygladają na ok chociaż na około jest pełno miniaturowych scieżek (musiałem troche upchać płytkę) i możliwe że cos ma jakiś upływ - musze to jeszcze raz przemierzyć.

    W fusach zmieniłem chyba na external clock - to by było najbardziej prawdopodobne bo po zmianie proc od razu przestał być wykrywany.. chociaż wydaje mi się że tam były tylko dwie opcje. Teraz pytanie - czy wystarczy jakiś zwykły generator zbudowany na bramkach Cmos żeby go odpowiednio podtaktować na czas zmiany fusów i jak wygląda ten programator równoległy ?

    Dzieki za pomoc..może uda mi sie jeszcze odratować płytkę bez całkowitej demolki i lutowania nowego proca na kabelkach :)
  • REKLAMA
  • #7 1893206
    hunterhouse
    Poziom 26  
    Posty: 893
    Pomógł: 84
    Ocena: 3
    możesz dać jakikolwiek generator ważne żeby częstotliwośc była w miare stała i o amplitudzie 0V do 5V(prostokąt).
    możesz zbudowac go na bramkach albo użyć innego procka.
    sygnał zegarowy podajesz na XTAL1.
  • #8 1894493
    Jaco18
    Poziom 26  
    Posty: 1122
    Pomógł: 7
    Ocena: 15
    Zrobiłem zewnętrzny generator na procku 8515, jego kod wygląda tak:

    $crystal = 8000000
    $regfile = "8515def.dat"

    Config Porta = Output
    Porta = &B00000000

    Wait 2

    Do
    Waitus 20
    Set Porta.0
    Waitus 20
    Reset Porta.0
    Waitus 20
    Loop

    odlutowałem kwarc i kondki od wejscia xtal1 i 2 atmegi, sygnał z generatora podałem na Xtal1 i nic :/ - to samo co było - programator nie wykrywa ID chipu i nie programuje przy próbie wymuszenia. Można coś jeszcze zrobić?
  • #9 1894585
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    Według mnie zacząłeś od niewłaściwej kolejności. Najpierw miałeś wykonać generator R-C a potem EXTERNAL bo odwrotnie mogło się ubić to wejście XTAL1. Z tego wynika że pozostał Ci tylko programator równoległy (wysokonapięciowy)
  • REKLAMA
  • #10 1894633
    Jaco18
    Poziom 26  
    Posty: 1122
    Pomógł: 7
    Ocena: 15
    Raczej niesądzę żeby wejście się ubiło - podałem tam tylko 5V a taki sygnał nie powinien zniszczyć wejścia - tak wynika z opisu a jak jest naprawdę to się okaże :( Spróbuje jeszcze dać rezonator RC ale ja nie ustawiałem tam takiej opcji - zmieniłem tylko jeden Fus na External i po tym przestał działać. Może problem tkwi w tym że procesor współpracuje teraz z za szybkim kwarcem - jak nabędę 4 Mhz to podłącze i sprawdzę.

    Ma może ktoś schemat równoległego programatora ? To jest skomplikowane ? Warto go zrobic czy lepiej wyrzucić procesor i kupić nowy ..... dawno bym to już zrobił ale nie chce niszczyć całej płytki a wylutowac sie go raczej nie da w domowych warunkach.

    Pozdrawiam i dzięki wszystkim za zainteresowanie :!:
  • Pomocny post
    #11 1894746
    hunterhouse
    Poziom 26  
    Posty: 893
    Pomógł: 84
    Ocena: 3
    jak masz inny procek z kwarcem to spróbuj połączyć pin XTAL2 z działającego układu na XTAL1 niedziałającego.
    wtedy soróbuj coś rzobić.
    kabelek którym zrobisz mostek musi być jak naj krótszy. 10cm.
    ja tak już raz robiłem. warto spróbować to i generator rc też możesz spróbować.
    co do programatora równoległego to napewno wilem ma taką opcje ale trzeba mieć przystawkę i niejestem pewien czy obsługuje tego chipa.
    pozatym chip jest w obudowie TQFP co dodatkowo utródnia sprawe.

    ja bym olał budowe takiego programatora tylko do jednego chipa.
  • #12 1895601
    Jaco18
    Poziom 26  
    Posty: 1122
    Pomógł: 7
    Ocena: 15
    :D:D Super procek ożył po podaniu sygnału zegarowego z 8515 :) Ma już kontakt z ISP, wszystko działa jak należy - miga sobie radośnie dwoma ledami - szkoda że rano kupiłem drugi egzemplaż - ale przyda się pewnie na przyszłość. Dzieki bardzo wszystkim za pomoc, temat uważam chwilowo za zakończony.

Podsumowanie tematu

✨ Problem dotyczył mikrokontrolera Atmega16 w obudowie TQFP, który po zmianie fuse bitów z ustawienia oscylatora wewnętrznego na zewnętrzny przestał komunikować się z programatorem ISP (STK200 z Bascomem). Po zmianie fuse na "external clock" procesor nie był wykrywany, a odczyt pamięci zwracał same wartości 0xFF. Podłączony był kwarc 10 MHz z kondensatorami 27 pF, jednak po zmianie ustawień i próbie programowania komunikacja została utracona. Sugerowano sprawdzenie poprawności podłączenia kwarcu i kondensatorów oraz rozróżnienie między "external clock" a "external XTAL" w fuse bitach, gdyż "external clock" wymaga podania sygnału zegarowego z zewnętrznego generatora. Zaproponowano podanie sygnału zegarowego prostokątnego o napięciu 0-5 V na pin XTAL1, co zostało zrealizowane za pomocą zewnętrznego generatora zbudowanego na mikrokontrolerze Atmega8515. Po podaniu sygnału zegarowego z 8515 Atmega16 odzyskała komunikację ISP i działała poprawnie. Wskazano, że alternatywą jest programator równoległy (wysokonapięciowy), jednak jego budowa jest skomplikowana, zwłaszcza dla układu w obudowie TQFP. Ostatecznie problem rozwiązano przez dostarczenie zewnętrznego sygnału zegarowego, co umożliwiło ponowne programowanie mikrokontrolera bez konieczności jego wymiany lub wylutowywania z płytki.
Wygenerowane przez model językowy.
REKLAMA