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 program nie wykonuje się po dłuższej przerwie

lukmac 12 Gru 2007 07:15 1482 7
REKLAMA
  • #1 4578730
    lukmac
    Poziom 10  
    Posty: 30
    Witam

    Mam procesor Atmega16 oraz programator ISP 200 (na lpt). Po zaprogramowaniu procesora wszystko działa (jeśli program jest ok oczywiście), ale odłączenie go od zasilania na dłuższą przerwę (np. na noc) powoduje że po ponownym włączeniu procesora do zasilania, program nie wykonuje się. Dopiero po zaprogramowaniu procka lub odczytaniu/weryfikacji programu, program samoczynnie zaczyna wykonywać się. Czy spotkał się ktoś z was z podobnym przypadkiem ?

    Programuję ten procesor za pomocą ponyprog, fusebity mam ustawione na korzystanie z zewnętrznego kwarcu.

    Pozdrawiam
    lukmac
  • REKLAMA
  • #2 4578748
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    Moze problem z pojemnością przy kwarcu?
    Program uzywa przerwań/stosu?
    Jakiś schemacik elektryczny?
    Mierzyłeś napięcie zasilania?
    Za małe pojemności przy Vcc... dużo możliwości :)
    Pozdrawiam
  • REKLAMA
  • #3 4578770
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    Jak wygląda układ resetu? Włączyłeś BODEN?
  • REKLAMA
  • #4 4580230
    lukmac
    Poziom 10  
    Posty: 30
    Boden mam wyłączony a co do kondensatorów to wydaje mi się że są prawidłowe (20 pF). Program nie używa żadnych przerwań ani stosu (dla celów testowych program miga diodą).

    Tablica fusebitów:
    Atmega16 program nie wykonuje się po dłuższej przerwie

    Przed chwilą odkryłem pewną prawidłowość w działaniu/nie działaniu układu. Układ z procesorem mam podpięty do programatora stk200 na lpt. Gdy wyłączę komputer to procesor przestaje wykonywać swój program i jeśli odłączę wtyczkę z programatora to procesor zaczyna wykonywać program. Gdy znowu podłączę układ do programatora (komputer jest cały czas wyłączony) to procesor zamiera. Po ponownym włączeniu komputera procesor zaczyna wykonywać swój program.

    Wygląda na to że problem jest związany z programatorem. Jaki jest jego powód ? Kolejna sprawa że komunikuję się z pamięcią za pomocą ISP i programator tez działa na ISP. Może jest jakiś konflikt pomiędzy tymi dwoma układami. Na razie nie programowałem komunikacji pomiędzy uP a pamięcią na ISP i tak podejrzewam że będą znowu jakieś konflikty z programatorem. Czy ktoś z Was spotkał się z takimi problemami ?
    Załączniki:
    • powitalnik.pdf (102.16 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #5 4581243
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    lukmac napisał:
    odłączenie go od zasilania na dłuższą przerwę (np. na noc) powoduje że po ponownym włączeniu procesora do zasilania, program nie wykonuje się. Dopiero po zaprogramowaniu procka lub odczytaniu/weryfikacji programu, program samoczynnie zaczyna wykonywać się.


    A program uruchamia się bez problemu zaraz po odłączeniu i włączeniu zasilania (przerwa ~10-30sek)?
    Cytat:

    Gdy wyłączę komputer to procesor przestaje wykonywać swój program i jeśli odłączę wtyczkę z programatora to procesor zaczyna wykonywać program. Gdy znowu podłączę układ do programatora (komputer jest cały czas wyłączony) to procesor zamiera. Po ponownym włączeniu komputera procesor zaczyna wykonywać swój program.


    To akurat jest normalne, sterowanie STK "wisi" w powietrzu więc pewnie reset jest aktywny i dlatego podłączony programtor bez PC'ta blokuje Ci program :wink:.
  • #6 4584585
    lukmac
    Poziom 10  
    Posty: 30
    Jeśli przerwa w zasilaniu układu jest krótka to układ od razu wykonuje swój program po włączeniu do zasilania. A jeśli układ jest całkowicie odłączony od programatora to po kilkudziesięciu godzinach układ nie wykonuje swojego programu (dopiero reset pomaga). Jeśli układ mam natomiast podłączony do programatora to dopiero odczytanie pamięci przez programator pomaga.
  • #7 4585547
    maxiu25
    Poziom 16  
    Posty: 190
    Pomógł: 16
    Ocena: 3
    Mozna spróbować uruchomić watchdog'a (glodny pies jezeli sie go nie dokarmia resetuje program i odpala go od początku :) ) Jeżeli cały program wykonuje sie w miarę szybko można raz go "dokarmiać" na samym początku jeżeli nie to trzeba to robić kilka razy.
  • REKLAMA
  • #8 4586717
    markus_wolff
    Poziom 13  
    Posty: 51
    Pomógł: 4
    maxiu25 napisał:
    Mozna spróbować uruchomić watchdog'a (glodny pies jezeli sie go nie dokarmia resetuje program i odpala go od początku :) ) .

    A ja się pytam w tym przypadku po cholerę.

    Cytat:
    (dopiero reset pomaga).

    Na mój gust winny jest zasilacz.
    C4 lub C5 zostaw tylko jeden.
    Dlaczego AREF masz zwarty do masy?

Podsumowanie tematu

✨ Problem dotyczy mikrokontrolera Atmega16 programowanego przez programator ISP 200 (na LPT), gdzie po dłuższym odłączeniu zasilania (np. na noc) program przestaje się wykonywać po ponownym włączeniu zasilania. Program działa poprawnie zaraz po zaprogramowaniu lub po odczytaniu/weryfikacji pamięci przez programator. Fusebity są ustawione na zewnętrzny kwarc, a program nie korzysta z przerwań ani stosu. Zaobserwowano, że podłączenie układu do programatora STK200 przy wyłączonym komputerze powoduje zatrzymanie programu, co sugeruje, że linia resetu jest aktywna przez programator. Krótkie przerwy w zasilaniu nie powodują problemu, natomiast dłuższe odłączenie wymaga resetu lub interakcji z programatorem, by program zaczął działać. Proponowano sprawdzenie układu resetu, kondensatorów przy kwarcu (20 pF), napięcia zasilania oraz włączenie funkcji watchdog, który może wymusić reset i ponowne uruchomienie programu. Zwrócono uwagę na możliwe problemy z zasilaniem, konfiguracją fusebitów (BODEN wyłączony) oraz nieprawidłowe połączenia, np. zwarty AREF do masy. Problem może wynikać z konfliktu sygnałów resetu generowanych przez programator oraz niewłaściwego układu zasilania i resetu mikrokontrolera.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA