Sleep zliczanie czasu włącz pin Attiny - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Programowanie w Arduino (https://forum.arduinopolska.pl/dzial-programowanie-w-arduino) +--- Wątek: Sleep zliczanie czasu włącz pin Attiny (/watek-sleep-zliczanie-czasu-w%C5%82%C4%85cz-pin-attiny) |
Sleep zliczanie czasu włącz pin Attiny - brendy - 07-02-2022 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ę RE: Sleep zliczanie czasu włącz pin Attiny - kaczakat - 07-02-2022 To co byś chciał jest spodziewanym zachowaniem, więc może po prostu pokaż schemat i kod, opisz jak powinno działać vs jak działa. Edit Przy drugim czytaniu dotarło do mnie więcej, że nic nie masz i że wybudzanie jest przez INT. Ustawiasz wybudzanie przez WDT z wyłaczonym INT0, za każdym wybudzeniem zwiększasz zmienną, jak osiągnie wymagany czas to usypiasz bez WDT, a tylko z INT0. http://www.gammon.com.au/forum/?id=11497 tu jest wiele użytecznych rzeczy opisanych. Pewnie są też inne sposoby, można nie wyłączać w uśpieniu timera sprzętowego, ale to większe zużycie energii, więc ja używałem tylko tych z WDT i INT0. RE: Sleep zliczanie czasu włącz pin Attiny - brendy - 07-02-2022 Kod: /* Sleep Pobór pradu 3.8 uA. Program działa dobrze Sam Procesor usypia się do 130nA. Wybudzanie asynchroniczne na dwóch przerwaniach PA2 i PA6 i zwykłe PA5. Jeśli chciałbym uruchamiać pin PB1 jak pisałem wcześniej wybudzenie z przerwania włącza Pin PB1 robi cos idzie spać i ponowne wybudzenie z przerwania nie uruchomi pinu PB1 przez najlbliższe 5min, tylko jak minie ten czas i nastapi kolejne wyzwolenie z przerwania to muszę zastosować WDT? Nigdy nie używałem WDT będe musiał o nim poczytać. Eprom by tu pomógł jakby zapisywać czas? Będę bardzo wdzieczny za jakieś wskazówki jak najprościej i skutecznie to zrobić. RE: Sleep zliczanie czasu włącz pin Attiny - kaczakat - 07-02-2022 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. RE: Sleep zliczanie czasu włącz pin Attiny - brendy - 08-02-2022 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. RE: Sleep zliczanie czasu włącz pin Attiny - kaczakat - 08-02-2022 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". |