logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

atmega ds18b20 - Odczyt temp z ds18b20, powerdown i reset po watchdog

noel200 20 Gru 2014 14:01 1641 3
  • #1 14239433
    noel200
    Poziom 26  
    Witam wszystkich,
    robię prosty układzik na uC atmega. Zadaniem go będzie odczyt temp z czujnika ds18b20 i ustawianie zewnętrznego przetwornika dac po spi.
    Wszystko praktycznie napisałem, bo części programu były wykorzystywane w innych układach, które pracują, z spi problemu nie ma, z odczytem ds też.
    Ale chodzi o to, żeby cały układ pobierał jak najmniej prądu, więc wymyśliłem tak, że będę robił odczyt z czujnika, przeliczał co trzeba, wysyłał dane po spi i na koniec komendą powerdown procka kładł spać. Watchdog ustawiony, więc po 2s go podniesie i ten zrobi znów to samo.
    Ale procesor mi się wiesza. Całość robię na płytce stykowej (bez paniki) z prockiem, połączeniami i całą resztą, na której zrobiłem już dużo projektów i nigdy nie było problemu. Kondensatory są, kwarc wymieniony, zasilanie podłączone przez multimetr w celu podglądu na ilość pobieranego prądu, czujnik sprawdzony w boju. Układ wiesza się czasami po 2s czasami po 5minutach. Poniżej zamieszczam kod:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Jak używam "jednodiodowego debuggera" i widzę na miliamperomierzu, że układ pobiera ponad 20mA (czyli powerdown nie wykonał) to nawet jeżeli linijka włączająca diodę siedzi po deklaracji prędkości układu to i tak się nie zaświeca.
    Program wieszający się jest właśnie w takiej postaci jak wyżej z tymi linijkami zakomentowanymi. Włączenie ich do kompilatora nic nie zmienia.
    Pytanie, które przede wszystkim, mnie nurtuje to czy można tak robić, że procesor wyłączam bezczelnie korzystając w watchdoga, niekulturalnie go budząc jednak bądź co bądź awaryjnym układem?
  • Pomocny post
    #2 14239650
    Konto nie istnieje
    Konto nie istnieje  
  • #3 14244490
    noel200
    Poziom 26  
    Dopiero dziś miałem czas usiąść znów do tego.
    Dzięki za odpowiedź.
    Zmiana
    Kod: text
    Zaloguj się, aby zobaczyć kod
    na
    Kod: text
    Zaloguj się, aby zobaczyć kod
    nie pomogła.
    Zmiana konfiguracji wyświetlacza na zaproponowana przez ciebie też nie pomogła.
    Myślałem przez chwilę, że usunięcie linijki
    Kod: text
    Zaloguj się, aby zobaczyć kod
    pomogła, ale jednak nie.
    Teraz testuję taką konfigurację lcd
    Kod: text
    Zaloguj się, aby zobaczyć kod

    no i na razie działa. Zostawię na noc i zobaczę jutro.
    Zauważyłem też, że gdy zadziałam na czujnik zmieniając temperaturę to następuje zawieszka. Jak się temperatura nie zmienia to poprzedni kod znacznie dłużej działa.
  • #4 14246779
    noel200
    Poziom 26  
    No i działa. Wygląda na to, że to linijki konfiguracji lcd i ta biblioteka jest niestabilna. Na kodzie powyżej działa cały czas już ponad dobę.
REKLAMA