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:
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?
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
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?
