Witam,
czy ktoś może spotkał się (i znalazł rozwiązanie) z problemem zawieszania ATmega32 (lub podobnego układu) przy czym ze stanu zawieszenia nie można wyjść nawet poprzez ręczne zwarcie wejścia RESET do masy.
Oczywiście na wejściu reset jest rezystor 4,7k + kondensator 10n, na zasilaniu procesora i większości układów kondensatory 100n, zasilanie stabilizuje przetwornica 52kHz (LM2574) co powinno eliminować przepięcia.
"Zwis" następuje w momencie impulsu napięcia wywołanego załączeniem innego urządzenia elektronicznego ( i nie jest to żadne urządzenie dużej mocy silnik, przekaźniki, elektrozaczep itp a zwykła elektronika 12V/0.5A).
Zawiesza się ok. połowa z urządzeń z próbki 10szt. ( identyczne co do wykonania, montażu, elementów itp). W sumie nie wnikam dlaczego się zawieszają, może źle wykonana elektronika - moja wina.
Ale dlaczego z tego stanu nie można wyprowadzić ATmegi poprzez zwarcie resetu do masy?. W programie uruchomiony jest watchdog - też nie działa gdy ATmega jest zawieszona. Pomaga tylko wyłączenie zasilania.
Zmiana procesora na inny z całkiem innej serii (kupionej rok wcześniej) też nie pomaga
Dodam że kiedy układ działa poprawnie ( tzn nie było żadnego impulsu który by go zawiesił) to zwarcie wejścia RESET powoduje reset a watchdog też powoduje reset gdy program się "zapętli"
Nie wiem czy problemem jest elektronika czy program bo kiedy zmienię program na najprostszy z możliwych tzn. cykliczna zmiana wyjścia na przeciwny to układu nie można zawiesić ( watchdog też jest wyłączony)
Po to żeby uniezależnić się od powiązań pomiędzy blokami układu stan pracy układu obserwuje w najprostszy sposób tzn. na oscyloskopie podglądając stan jednego pinu procesora które cyklicznie się zmienia (0V -> 5V ...). W momencie zawieszenia układu stan tego wyjścia ustala się na ok. 4.5V, ale pewnie tak powinno być bo jest to powtarzalny stan w momencie resetu układu kiedy wszystkie piny są skonfigurowane jako wejścia.
Podsumowując: wygląda na to że układ w momencie zawieszenia pozostaje w stanie resetu, był chyba jakiś problem z watchdogiem który powodował taki stan, pamięta ktoś ?
A może powód jest inny - proszę o pomoc ....
czy ktoś może spotkał się (i znalazł rozwiązanie) z problemem zawieszania ATmega32 (lub podobnego układu) przy czym ze stanu zawieszenia nie można wyjść nawet poprzez ręczne zwarcie wejścia RESET do masy.
Oczywiście na wejściu reset jest rezystor 4,7k + kondensator 10n, na zasilaniu procesora i większości układów kondensatory 100n, zasilanie stabilizuje przetwornica 52kHz (LM2574) co powinno eliminować przepięcia.
"Zwis" następuje w momencie impulsu napięcia wywołanego załączeniem innego urządzenia elektronicznego ( i nie jest to żadne urządzenie dużej mocy silnik, przekaźniki, elektrozaczep itp a zwykła elektronika 12V/0.5A).
Zawiesza się ok. połowa z urządzeń z próbki 10szt. ( identyczne co do wykonania, montażu, elementów itp). W sumie nie wnikam dlaczego się zawieszają, może źle wykonana elektronika - moja wina.
Ale dlaczego z tego stanu nie można wyprowadzić ATmegi poprzez zwarcie resetu do masy?. W programie uruchomiony jest watchdog - też nie działa gdy ATmega jest zawieszona. Pomaga tylko wyłączenie zasilania.
Zmiana procesora na inny z całkiem innej serii (kupionej rok wcześniej) też nie pomaga
Dodam że kiedy układ działa poprawnie ( tzn nie było żadnego impulsu który by go zawiesił) to zwarcie wejścia RESET powoduje reset a watchdog też powoduje reset gdy program się "zapętli"
Nie wiem czy problemem jest elektronika czy program bo kiedy zmienię program na najprostszy z możliwych tzn. cykliczna zmiana wyjścia na przeciwny to układu nie można zawiesić ( watchdog też jest wyłączony)
Po to żeby uniezależnić się od powiązań pomiędzy blokami układu stan pracy układu obserwuje w najprostszy sposób tzn. na oscyloskopie podglądając stan jednego pinu procesora które cyklicznie się zmienia (0V -> 5V ...). W momencie zawieszenia układu stan tego wyjścia ustala się na ok. 4.5V, ale pewnie tak powinno być bo jest to powtarzalny stan w momencie resetu układu kiedy wszystkie piny są skonfigurowane jako wejścia.
Podsumowując: wygląda na to że układ w momencie zawieszenia pozostaje w stanie resetu, był chyba jakiś problem z watchdogiem który powodował taki stan, pamięta ktoś ?
A może powód jest inny - proszę o pomoc ....
