Wpis z mikrobloga

Help :| Bawię się usypianiem #atmega 328P i wybudzaniem jej watchdogiem. Wszystko fajnie działa, jak śpi to pobiera ~22uA, wybudza się co 2 sekundy, mryga led, i idzie spać dalej. Fajnie. Kod: http://pastebin.com/3iB2GHVG

Problem zaczyna się, gdy chcę by led dłużej świeciła, aktualnie jest tam 1ms, przy 10ms nadal jest ok, ale jeśli jest tam np. 100ms to atmega wchodzi w endless loop. Dioda mryga może co 20ms non stop. Nawet wgranie programu nie pomaga, trzeba odciąć na chwilę zasilanie.

Szukałem, sporo, i natknąłem się tylko na to: http://www.pocketmagic.net/avr-watchdog/ "Simple is not enough", pisze tam że w nowszych prockach watchdog działa nawet podczas resetowania, ale to się tyczy gdy jest ustawiony np. na 15ms a nie na 2s :P Próbowałem dawać na początku programu wdt_reset(); ale nic to nie zmienia.

#arduino #avr #programowanie #elektronika
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@m8se: Wewnętrzny 8Mhz, na zewnętrznym 16Mhz też próbowałem i nic to nie zmienia. Problem nie leży w delay, nawet jeśli delay by w jakikolwiek sposób działało źle, to i tak procek zresetował by się dopiero po 2 sek, bo na tyle jest ustawiony watchdog, a zamiast tego zaczyna się ciągle resetować, bez czekania.

Szukam na necie cały czas rozwiązania, bez skutku, wygląda to tak jakby odliczanie watchdoga nie zerowało się
  • Odpowiedz
@m8se: Uff, udało się naprawić ( ͡° ͜ʖ ͡°) Okazuje się że na nowszych ATmegach przy resecie watchdog nie zostaje wyłączony, zaczyna nam resetować procek non stop. Aby temu zapobiec, trzeba wyłączyć watchdog nie przed, nie po, ale podczas uruchamiania :P

Działający kod: http://pastebin.com/H6xEMUwK

Zrobili tylko zamęt, po co komu watchdog przy resecie? Zawsze jest od tego fusebit :P
  • Odpowiedz
@skew: AVR to jeden wielki zamęt ;) W Xmegach się wzięli za naprawianie tego, ale niestety to już trochę odgrzewany kotlet. Polecam przesiadkę na jakieś ARMy. Te niewielkie są równie proste co AVR a możliwości mają dużo większe. No i zazwyczaj są tańsze.
  • Odpowiedz
@skew: W DIPie nie ma chyba za dużo ARMów - raczej TQFP albo QFN. Zawsze możesz sobie kupić/zrobić jakąś przejściówkę PCB. Polecam gotowe zestawy Nucleo (50-60zł). Dobre procesory, wbudowany debugger i wsparcie mbed.org.

Z innej firmy, to np. Tiny Gecko od firmy SiliconLabs (dawniej EnergyMicro), bardzo energooszczędne, tanie, świetne środowisko programistyczne i całkiem niezłe biblioteki.
  • Odpowiedz