Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Atmega32][ZL3AVR] - Nieprogramowalna Atmega

kiabonov 12 Sie 2012 21:11 2010 17
  • #1 12 Sie 2012 21:11
    kiabonov
    Poziom 9  

    Dopiero zaczynam swoją przygodę z mikrokontrolerami i mogę brzmieć nieco niezrozumiale. Napisałem kilka programów typu: świecenie diody i po wgraniu bardziej skomplikowanego programu atmega przestała odpowiadać. Wgrywałem uprzednio działające programy, programator pokazuję że program jest wgrany do pamięci flash ale niestety nie działa. Co więcej, zaczął płynąć prąd na liniach PC (0-3) i PD (0-1). Przeprogramowałem fusbit JTAGEN i zniknął prąd na lini PC2 i PC3 ale na innych liniach pozostał. Korzystam z programatora KamPROG, programator po weryfikacji lock bitów wskazuje że się różnią a wszystkie próby przeprogramowania kończą się fiaskiem.
    Wszystkie problemy zaczęły się od jednego programu, który może nie mieć sensu (był jedną z moich prób z językiem C) ale mógł być przyczyną :

    Kod: C
    Zaloguj się, aby zobaczyć kod
    Proszę na przyszłość używać tagu [syntax=C]Kod tu...[/syntax].
    Poprawiłem, LordBlick

    0 17
  • #2 12 Sie 2012 21:55
    mickpr
    Poziom 39  

    Jeśli komunikujesz się z mikrokontrolerem (np. odczytujesz sygnaturę) - podaj fusebity jakie ustawiłeś oraz schemat (z wartością rezonatora kwarcowego).

    0
  • #3 12 Sie 2012 22:15
    kiabonov
    Poziom 9  

    Cały układ z Atmegą to zestaw uruchomieniowy ZL3AVR z rezonatorem kwarcowym 16MHz. Fusebity to SPIEN i JTAGEN którego wyłączyłem.

    Cały schemat na stronie 2: http://www.btc.pl/pdf/zl3avr.pdf

    0
  • #4 12 Sie 2012 22:51
    mickpr
    Poziom 39  

    Wyłączyłeś SPIEN - pożegnaj ISP (programowanie szeregowe).
    Teraz pomoże tylko programator równoległy.
    Taki już urok AVR.
    Jeśli nie masz - kup nową ATMEGę i przelutuj na tej płytce.

    0
  • #5 12 Sie 2012 23:04
    kiabonov
    Poziom 9  

    Wyłączyłem JTAGEN a nie SPIEN, przepraszam może mój ostatni post zabrzmiał niejednoznacznie.

    0
  • #6 12 Sie 2012 23:05
    mickpr
    Poziom 39  

    Jeśli działa Ci SPI, to ponowię pytanie - podaj CAŁE fusebity (LOW i HIGH byte).
    Być może masz przestawione coś innego.
    Jeszcze mała uwaga - używasz F_CPU zdefiniowanego w kodzie programu.
    Zmienna F_CPU powinna być zdefiniowana jako parametr kompilatora.
    Kto wie co tam domyślnie "siedzi" i w jaki sposób zadziała (albo nie) twoje opóźnienie.

    0
  • #7 12 Sie 2012 23:13
    kiabonov
    Poziom 9  

    [Atmega32][ZL3AVR] - Nieprogramowalna Atmega

    Tak wygląda cały interfejs z programatora, wszystko powinno być, tylko że lock bity są zupełnie inne i nie dają się zaprogramować

    0
  • #8 12 Sie 2012 23:16
    mickpr
    Poziom 39  

    Popatrz: #define F_CPU 16000000

    W kodzie (zresztą błędnie) masz 16MHz
    W fusebitach (domyślnych) 1MHz
    Z tego co wiedzę, JTAG nie jest wyłączony.
    Działa w ogóle programowanie (samego flash'a)?
    Co dokładnie działa, a co nie?
    Weryfikacja czegokolwiek działa?

    0
  • #9 12 Sie 2012 23:20
    kiabonov
    Poziom 9  

    Zmieniłem za 1MHz i dalej Atmega nie odpowiada, programator podaję że program został zapisany w pamięci flash ale nie działa. Co gorsza nawet zwykły program do zapalenia diody nie działa, a był sprawdzony i działał.

    Mówiąc krótko nie jestem w stanie zaprogramować Atmegi, działa wszystko oprócz samego mikrokontrolera w którym moge zmieniać fusebity, wgrywać programy do pamięci flash, kasować pamięć ale programy nie są wykonywane. Atmega żyje swoim życiem.

    Weryfikacja działa ale nic nie zmienia, a co najważniejsze lock bity nie dają się zmienić jedyne co dostaję to kod 0x3F.

    0
  • #10 13 Sie 2012 00:17
    mickpr
    Poziom 39  

    Sprawdź w jakim stanie jest pin RESET.
    Być może mikrokontroler w ogóle nie startuje po zaprogramowaniu.

    0
  • #11 13 Sie 2012 00:33
    kiabonov
    Poziom 9  

    Ten pin jest trochę dziwny, sprawdziłem czy płynie przez niego prąd i wygląda jakby ledwo przez niego płynął. Nie mam amperomierza ale prądu wystarcza by dioda ledwo się żarzyła.

    0
  • #12 13 Sie 2012 00:54
    mickpr
    Poziom 39  

    Nie rozumiem jak to płynie. Przez co?
    PIN reset powinien być podłączony przez rezystor do plusa (i tak jest, jak widzę w schemacie).
    W stanie pracy MCU powinien być nieaktywny (H). Reset następuje z chwilą jego uaktywnienia czyli np. zwarcia do masy.
    Pin ten nie służy do sterowania diodą (poza specjalną jego konfiguracją, kiedy wyjatkowo może do tego służyć).
    Bez miernika i konwersacji w stylu "jest L, (albo 0V), co mam zrobić? " możemy sobie gadać i gadać i nic z tego nie wyniknie.
    Amperomierz nie jest w tym przypadku potrzebny. Wystarczy woltomierz.

    0
  • #13 13 Sie 2012 01:11
    kiabonov
    Poziom 9  

    Nie wiem czy dokładnie o to chodziło ale ja zrobiłem w ten sposób, sprawdziłem czy płynie prąd przy pinie RESET dokładnie przy Atmedze, poprzez przystawienie przewodu połączonego do diody. Dioda zaświeciła słabym światłem, (to nie jest stan wysoki , przynajmniej mi się tak zdaje) więc uznałem że o to chodziło. Na schemacie fajnie jest to pokazane ale w rzeczywistości mogę sprawdzić( słaba dostępność ) tylko przy samym przycisku reset i przy atmedze. W obu przypadkach dioda się zaświeciła. Dopiero zaczynam przygodę z mikrokontrolerami więc nie jestem pewien ale chyba muszę kupić woltomierz by przynajmniej to naprawić i cokolwiek dalej próbować programować na tej płytce .

    0
  • Pomocny post
    #14 13 Sie 2012 01:18
    mickpr
    Poziom 39  

    Myślę, że powinieneś. Prosty multimetr kupisz za 20 zł.
    Dioda led świeci (w zależności od koloru) od napięcia powyżej 2 V z kawałkiem, więc to już jest stan logiczny H. Z tego wynika, że RESET jest nieaktywny (dobrze).
    Skoro programowanie działa (programowanie z weryfikacją, jak napisałeś), to moje pomysły się powoli wyczerpują. Być może ktoś jeszcze będzie w stanie ci podpowiedzieć.
    Upewnij się jeszcze, że wgrywasz właściwy "hex".

    0
  • #15 13 Sie 2012 01:23
    kiabonov
    Poziom 9  

    Co do plików .hex to jestem pewny że wgrywam dobrze, bo robię to tak jak wtedy gdy wszystko działało. W każdym razie dzięki za dobre chęci :) Może ktoś inny z czymś takim się spodkał.

    0
  • Pomocny post
    #16 13 Sie 2012 02:16
    Tomasz Gumny
    Poziom 27  

    1. Odepnij od procesora wszystko poza programatorem;
    2. Sprawdź ustawienia dip-switch/zworek (jeśli są);
    3. Zrób uczciwy ChipErase[F8] i od razu zaptaszkuj "Erase chip before flash programming";
    4. Odczytaj FuseBity i je pokaż;
    5. Jeśli ten programator jest z czymś zgodny, to pokaż również wartości odczytane przez AVRStudio.

    0
  • #18 13 Sie 2012 13:17
    kiabonov
    Poziom 9  

    Wymontowałem Atmegę podłączyłem samo zasilanie i programator i wszystko działało, po zamontowaniu z powrotem do płytki hula jak nowy. Programy działają i nie ma już żadnego problemu, dzięki za pomoc.

    0