Liczba postów: 128
Liczba wątków: 17
Dołączył: Jul 2019
Reputacja:
5
Witam
Układ zasilany z baterii
Czy mógłby ktoś podpowiedzieć jak uzyskać taką funkcję w sleep:
Attiny wybudzanie z przerwania włącz pin zrób coś i spać. Ponowne wybudzanie z przerwania nie uruchamia pinu przez najbliższe 5min dopiero po tym czasie jeśli wystąpi przerwanie.
Z góry dziękuję
Liczba postów: 2,364
Liczba wątków: 0
Dołączył: Oct 2017
Reputacja:
240
Przeczytaj i potrenuj kody w linku. Ja Ci nic innego nie dopowiem, bo moja wiedza jest w tym zakresie stamtąd.
A niestety nie będzie to do końca rozwiązaniem Twojego problemu. Masz nowy uC, a to co napisałem opiera się na doświadczeniach z Atmega328p i Attiny 85 (i podobnych z ich epoki).
I tu nie było tak, że z WDT nic nie wybudzi uC przez godzinę bo tak oczekujesz mieć czas ignorowania przerwań zewnętrznych. WDT można ustawić w AVR typowo na max 8s, typowe wybranie czasu wygląda tak:
wdt_enable(WDTO_4S);
// WDTO_15MS
// WDTO_30MS
// WDTO_60MS
// WDTO_120MS
// WDTO_250MS
// WDTO_500MS
// WDTO_1S
// WDTO_2S
// WDTO_4S
// WDTO_8S
Czyli przy uśpieniu np. na 120s wybierasz największy dzielnik tej liczby, tu 4s, wyłączasz wybudzenie od przerwania zewnętrznego usypiasz uC, po wybudzenie zliczasz cykle uśpień i usypiasz ponownie, przy 30 wybudzeniu wyłączasz WDT i usypiasz z już aktywnym wybudzeniem od przerwania zewnętrznego, przy pierwszym takim wybudzenie ponawiasz cykl zerując zmienne i znowu przełączając na WDT. Czas można też zmieniać, można ustawić x *8 + y *4 + z *1s. Ten czas jest przybliżony, zależny od temperatury i dokładności oscylatora WDT.
I z WDT zużycie energii jest większe. Jak masz zewnętrzny timer to może on jest w stanie wybudzać uC nawet rzadziej, a przy okazji pobór prądu w uśpieniu bez WDT będzie mniejszy.
Natomiast zestaw dostępnych opcji może być nieco inny w tym Attiny, niestety pozostaje wertowanie forów o tym konkretnym uC lub wgryzanie się w 500 stronicowy datasheet tego procka. Pobieżne przejrzenie tego PDF insynuuje podobne opcje, też jest zakres WDT do 8s, Ale nie wiem czy te funkcje są w ogóle dostępne w Arduino. Nawet jeśli, to nie miałbym jak tego zweryfikować i przetestować, bo go nie mam.
Liczba postów: 128
Liczba wątków: 17
Dołączył: Jul 2019
Reputacja:
5
08-02-2022, 00:27
(Ten post był ostatnio modyfikowany: 08-02-2022, 00:31 przez brendy.)
kaczakat dzięki za podpowiedzi.
To prawda proc jest nowy i jest mało informacji na ten temat używam go od jakiegoś czasu i uważam że to jest rewelka powoli wgryzam się w temat nowych fajnych możliwości ma full długo by pisać. Datasheet już czytałem cały po kilka razy?
Chyba sam sobie odpowiem posiada wbudowany RTC. Spr i działa wybudza proc z uśpienia, kiedy zadeklaruje programowo RTC to pobór prądu z 130nA wzrasta tylko do 930nA w trybie sleep. Nie użyłem tego zegara że względu wiadomego że jest nie dokładny bo wiadomo korzysta z wew oscylatora, ale jeśli chcemy żeby wybudził się np co 3dni cyklicznie to jak najbardziej wtedy czas będzie się rozjeżdżał, ale zegar będzie wybudzal proc cyklicznie pobierając przy tym 930nA w trybie sleep.
Licznik czasu rzeczywistego jest jak WDT w trybie przerwań, który jest w klasycznym AVR. W tych nowych seriach WDT może tylko zresetować urządzenie. Przerywanie w określonym czasie odbywa się teraz za pomocą RTC i PIT.
Dziala tak jak chciałem rejestr RTC PIT załatwił sprawę.Trzeba używać PIT, ponieważ jest to jedyne przerwanie czasowe, którego możemy użyć w trybie Power Down.
Liczba postów: 2,364
Liczba wątków: 0
Dołączył: Oct 2017
Reputacja:
240
Dzięki za podanie rozwiązania. Też tu wszedłem szukając pomocy i samo spisanie problemu pomaga na tyle, że jak dotąd to wystarczało. Czasami rozwiązanie przychodzi do głowy samo tuż po kliknięciu przycisku "opublikuj post".