Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Atmega8][c] - zawieszanie procesora

stasiu2323 04 Maj 2011 01:31 2520 10
  • #1 04 Maj 2011 01:31
    stasiu2323
    Poziom 13  

    Witam.

    Buduje sterownik do bramy wjazdowej. Co kilka godzin "wariuje" atmega8. Przestaje działać przerwanie INT1, a PWM (OC2) ma jakąś dziwną wartość. Główna pętla programu działa. Wymieniałem atmege na inną sztuką, używałem wewnętrznego oscylatora, włączyłem BOD i watchdog. Nic nie pomogło. W załączniku schemat i pcb bez wartości elementów postaram się je dodać jutro. Co może być przyczyną?

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Pozdrawiam

  • #2 04 Maj 2011 02:03
    dondu
    Moderator Mikrokontrolery Projektowanie

    Pierwsze drobne uwagi i pytania:

    1. kondensator filtrujący zakłócenia na zasilaniu Procesora - nie widzę go przy pinie Vcc.

    2. co to znaczy że INT1 przestaje działać? Konkretnie - procesor się resetuje, czy inny powód - to możesz sprawdzić tylko Ty. Ustaw jakąś diodę sygnalizacyjną która po resecie będzie informować o jego przyczynie.

    3. Co znaczy, że Watchdog czy BOD nie pomagają? One wyeliminują przyczyny tylko pozwalają zresetować procesor mając nad tym kontrolę i świadomość faktu ich zadziałania.

    4. Jak wygląda układ podający sygnał na INT1 (nie widzę na schemacie).


    Dla programu o tak małym stopniu skomplikowania watchdoga, bym wyłączył, przynajmniej na etapie szukania przyczyny.

    Generalnie o zakłóceniach (czasami można zapomnieć o jakiejś pierdółce):
    Zakłócenia w pracy mikrokontrolerów

    Kiedyś miałem przypadek, że system alarmowy w sklepie wzbudzał się w losowych momentach. Wiele godzin spędzonych na szukaniu przyczyny. Wymiana centralki na ten sam typ nic nie dawała.

    Okazało się, że jedna z lodówek (sklep AGD) generowała zakłócenia w czasie włączania i wyłączania, co przenosiło się po sieci na centralkę. Ten typ centralki nie potrafił sobie z tym poradzić. Skończyło się na zmianie typu i problem został rozwiązany :)

  • #3 04 Maj 2011 02:24
    stasiu2323
    Poziom 13  

    1. Kondensatory są przed i za stabilizatorem 7805. Mogę dołożyć dodatkowy tylko gdzie i jakie?

    2. Funkcja hamuj() powinna: ustawić wypełnienie PWM na zero, wyłączyć przekaźniki i wyłączyć lampę sygnalizacyjną. Czasami wypełnienie PWM nie jest ustawiane na zero, przekaźniki i lampa są wyłączane, sterownik przestaje reagować na pilota, dlatego wydaje mi się że coś dzieje z INT1 albo TIMER0 ale tego nie jestem pewien. Główna pętla programu działa ponieważ po przerwaniu bariery zapala się LED1.

    3. Procesor sie nie resetuje, bo główna pętla cały czas działa.

    4. Sygnał na INT1 pochodzi z odbiornika radiowego 433MHz z modulacją ASK.

    Po wyłączeniu zasilania wszystko wraca do normy. Wydaje mi się że problem najczęściej występuje w momencie wyłączenia silnika napędu albo przekaźnika. Trudno dokładnie zaobserwować bo dzieje się tak co kilka godzin.

  • #4 04 Maj 2011 02:29
    dondu
    Moderator Mikrokontrolery Projektowanie

    stasiu2323 napisał:
    Kondensatory są przed i za stabilizatorem 7805. Mogę dołożyć dodatkowy tylko gdzie i jakie?

    1. Jak najbliżej nóżek procka: http://mikrokontrolery.blogspot.com/2011/04/zasilanie-mikrokontrolera.html

    2. OK

    3. OK ale:
    średniki w IF-ach masz pełno takich:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    4. Czyli sygnał jest poprawny elektrycznie?

  • #5 04 Maj 2011 02:54
    stasiu2323
    Poziom 13  

    1. Zasilanie poprawie jutro. Ustawię też nieużywane porty jako wyjścia.

    3. IF'y są ok. Bez średnika gcc wywala błąd. Mogę co najwyżej zrobić tak

    Kod: c
    Zaloguj się, aby zobaczyć kod
    ale to niczego nie zmienia

    4. Bez oscyloskopu trudno powiedzieć na 100%, odbiornik jest podłączony według schematu dostarczonego przez sprzedawcę. Jutro sprawdzę czy reset samego procka pomaga.

  • #7 04 Maj 2011 03:06
    stasiu2323
    Poziom 13  

    3. Poprawie ale to nic nie zmienia.
    4. Sprawdzę ale wydaje mi się że problemem jest atmega bo oprócz tego że sterownik przestaje reagować na pilota, wypełnienie PWM nie jest ustawiane na zero. A odbiornik radiowy nie ma nic wspólnego z PWM.

  • #8 04 Maj 2011 03:09
    dondu
    Moderator Mikrokontrolery Projektowanie

    4. Generalnie szukanie problemu w samym procesorze zostaw na moment w którym będziesz pewien , że wszystko inne już jest OK. Ale to jeszcze nie ten moment.

    Powodzenia, jutro zaglądnę w Twój temat.
    Teraz idę lu lu.

  • #9 04 Maj 2011 08:42
    94075
    Usunięty  
  • #11 05 Maj 2011 12:52
    stasiu2323
    Poziom 13  

    Procesor przestał się zawieszać. Dołożyłem kondensator 100nF w pobliżu pinu VCC procesora. Problemy powodował zasilacz który miał zbyt małą wydajność, podczas przełączania przekaźników i krańcówek napięcie skakało o kilka wolt co czasami powodowało dziwne zachowanie atmegi. Po wymianie zasilacza wszystko jest ok. Dzięki za pomoc.
    Pozdrawiam

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME