eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaat90s2313 resety i zwisyRe: at90s2313 resety i zwisy
  • Path: news-archive.icm.edu.pl!news2.icm.edu.pl!opal.futuro.pl!news.internetia.pl!not-
    for-mail
    From: Wojciech Bartczak <o...@o...pl>
    Newsgroups: pl.misc.elektronika
    Subject: Re: at90s2313 resety i zwisy
    Date: Mon, 01 Feb 2010 00:04:10 +0100
    Organization: Netia S.A.
    Lines: 81
    Message-ID: <hk52hu$dtv$1@mx1.internetia.pl>
    References: <hk4aq3$i56$1@node1.news.atman.pl> <hk4fef$ljj$1@mx1.internetia.pl>
    <hk4nfa$ko7$1@node1.news.atman.pl>
    NNTP-Posting-Host: 81.219.112.236
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: mx1.internetia.pl 1264979326 14271 81.219.112.236 (31 Jan 2010 23:08:46 GMT)
    X-Complaints-To: a...@i...pl
    NNTP-Posting-Date: Sun, 31 Jan 2010 23:08:46 +0000 (UTC)
    In-Reply-To: <hk4nfa$ko7$1@node1.news.atman.pl>
    X-Tech-Contact: u...@i...pl
    X-Antivirus-Status: Clean
    X-Antivirus: avast! (VPS 091126-1, 2009-11-26), Outbound message
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.5) Gecko/20091204
    Thunderbird/3.0
    X-Server-Info: http://www.internetia.pl/news/
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:580830
    [ ukryj nagłówki ]

    W dniu 2010-01-31 21:01, tomekp pisze:
    > Dzięki za odpowiedź. Problem resetu może być rzeczywiście związany ze
    > słabą wydajnością zasilania. Zastosowałem do tego jakąś starą ładowarkę
    > od telefonu simensa. Przy starcie przekaźnika może rzeczywiście być
    > cienko z prądem i dochodzić do spadku napięcia i resetu. Jeśli chodzi o
    > podciąganie pinu resetu to ćwiczyłem to dość dokładnie, wniosek był
    > jeden: im więcej naczepiane tym gorzej. Dlatego zostawiłem po prostu
    > reset niepodłączony do niczego, tzn przez podstawkę zlutowany jest ze
    > ścieżka płytki.

    Jak dokładnie rozwiązałeś stabilizację zasilania
    dla układu ? LM317/LM7805 + "bateria" kondensatorów ?
    Ja bym zrobił tak. Poprawił zasilanie, może coś impulsowego bym
    dał, najlepiej jakiś step-down, wtedy da się odciążyć źródło, zapewne
    transformator :). To powinno rozwiązać problem zasilania.
    Ew, dać większe trafo, które uciągnie układ podczas załączania
    przekaźników.
    Ale ta ścieżka jest krótka, nie więcej niż 1cm albo coś
    > koło tego.

    Problem jest taki, że nie możesz zagwarantowac stałości potencjału tego
    kawałka ścieżki. Jego wartość będzie zależeć od tego co się dzieje w
    okół, może się zdarzyć, że będzie chwilowo mniejszy od progu przełączania.

    > Generalnie resetowanie się procka to problem dla mnie
    > drugorzędny i wolałbym nie dłubać w fusebitach bo wydaje mi się, że
    > gdyby procek nie robił resetu to by się zawieszał znacznie znacznie
    > częściej.

    Problem może być taki, że skoro przysiadał reset w testach, to zamiast
    tego, teraz przysiada zasilanie MCU. A w wyniku tego zaczynają się dziać
    dzikie rzeczy w całym układzie.

    To właśnie to zawieszanie mnie intryguje bo, z tego co wiem, w
    > stanach gdzie procek głupieje zaczyna działać watchdog. Jesli procek nie
    > odpowiada na pytania watchdoga to ten go resetuje.

    Watchdog restartuje procesor, gdy nie dostanie
    sygnału, że wszystko jest ok, czyli, np. długie pętle, intensywne
    obliczenia. Może wystarczy w pętlach które masz w programie wstawić
    takową instrukcję ?

    BYć może źle
    > rozumuję, nie wiem. U mnie w czasie zwiechy procesor zachowuje się
    > totalnie bez sensu, jak pociągne za sznureczek dioda zaczna migać w
    > przypadkowy sposób ale świeci ciągle. A wentylator albo nie pracuje
    > wcale albo pracuje non-stop. Konieczne jest wtedy odłączenie zasilania.

    Może być to wywołane tym, że masz dziwne wartości w rejestrach po
    restarcie. Zgodnie z dokumentacją, po restarcie wykonywane jest
    przerwanie o adresie 0, czyli instrukcja spod adresu 0x0000.
    Zobacz też czy nie masz uaktywnionych innych przerwań od innych
    urządzeń, np. ADC, komparator analogowy ?

    ja proponuje zrobić coś takiego (kod w asm)

    Adres instr. instr.:

    ;; obsługa tylko startu/resetu jeżeli wystąpi

    0x0000 rjmp start
    0x0001 reti
    0x0002 reti
    ....
    0x00a reti

    start: cli ;; blokuje przerwania
    <twoja inicjalizacja zmiennych>
    sei ;; odblokowuje przerwania
    <cała reszta programu>

    To powinno zagwarantować, że wystartujesz pewnie
    a procesor przejdzie pełny restart. Dodatkowo nawet jeżeli pojawi się
    jakieś niespodziewane przerwanie, to zostanie po prostu zignorowane.
    Jeżeli używasz jakichś przerwań (z kodu wnioskuje, że timery)
    to powinieneś pod odpowiednimi adresami mieć wpisane skoki do
    obsługi tych przerwań.

    Pozdrawiam,
    Wojtek.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: