AVR i standby - czy da si? wybudzi? "programowo"?

Czy z trybów standby, power down itp. procesorów AVR da się wyjść inna metodą niż pobudzenie zewnętrznym przerwaniem? Potrzebuję zrobić coś, co będzie się samoistnie budziło np. co minutę, sprawdzało stan innego urządzenia (konkretnie termometru DS1620) i jeśli nie stwierdzi czegośtam, to ma dalej spać i ograniczać pobór prądu do minimalnej możliwej wartości. Idealne byłoby dla mnie, gdyby proc był w stanie się obudzić sam z siebie, np. po zadanym czasie "spania" - czy coś takiego jest możliwe?

Jeśli nie, to... no właśnie, to co? Logiczne byłoby wykorzystać sam DS1620, żeby po przekroczeniu zadanej temperatury "budził" procesor, ale jego pobór prądu wg datasheeta wynosi 1mA, co dla mnie jest niedopuszczalne (urządzenie ma być w założeniach zasilane raczej niewymienną bateryjką litową). Owszem, w datasheecie DS1620 jest linijka mówiąca, że pobór prądu w "standby mode" wynosi 1uA, co podoba mi się o wiele bardziej, ale nie znalazłem w tymże datasheecie ani słowa więcej na temat tego standby - jak jest uzyskiwany i wreszcie czy da się jakoś pogodzić ten stan z mierzeniem co jakiś czas temperatury.

Zostaje jeszcze rozwiązanie "młotkowe": jakiś generator "low power" wystawiający co minutę impuls, który będzie budził procesor, ale wydaje mi się to strasznie nieeleganckie...

J.

Reply to
Jarek P.
Loading thread data ...

------- Czy z trybów standby, power down itp. procesorów AVR da się wyjść inna metodą niż pobudzenie zewnętrznym przerwaniem? Potrzebuję zrobić coś, co będzie się samoistnie budziło np. co minutę, sprawdzało stan innego urządzenia (konkretnie termometru DS1620) i jeśli nie stwierdzi czegośtam, to ma dalej spać i ograniczać pobór prądu do minimalnej możliwej wartości. Idealne byłoby dla mnie, gdyby proc był w stanie się obudzić sam z siebie, np. po zadanym czasie "spania" - czy coś takiego jest możliwe?

--------

Jedna z możliwości to taka że zapinasz do procka kwarc zegarkowy 32.768kHz i ustawiasz preskaler licznika (Timer 0) na max. dostajesz wówczas przerwanie które budzi procesor co 8sek. Do tego kawałek kodu który sprawdzi który to raz z kolei i co minutę wykona stosowne operacje, a jeśli nie to wejdzie w stan uśpienia ponownie.

Opisane to jest na stronie atmela :

AVR134: Real Time Clock (RTC) using the

Asynchronous Timer

Oczywiście można pewnie i inaczej, ale tak to będzie chyba najprościej.

Myślę że tą metodą średni prąd jaki można osiągnąć jest na poziomie 10uA Do tego dojdzie większy prąd na pomiar układem DS ale to co 1 min.

Reply to
Zibias

OK, dzięki

Swoją drogą - może ktoś podpowie, o co chodzi Dallasowi z tym trybem standby w DS1620?

J.

Reply to
Jarek P.

U?ytkownik "Jarek P." snipped-for-privacy@gmail.com napisa? w wiadomo?ci news: snipped-for-privacy@i29g2000prf.googlegroups.com...

Tak - wathdogiem

Reply to
William

Zibias pisze:

Jeżeli chodzi o minimalny prąd to najlepsze wydaje się zastosowanie zewnętrznego układu RTC. Dobre współczesne scalaki (a nie stary PCF8583) ciągną około 1uA i mogą wygenerować np. cominutowy alarm. Wtedy procka budzisz zewnętrznym przerwaniem i jest OK. Zużyjesz pewnie mniej prądu niż wykorzystując wewnętrzny timer asynchroniczny procesora z doczepionym kwarcem 32k.

BTW: A może od razu użyj układu termometru z ustawianymi progami termostatu? Wtedy procek podczas śledzenia temperatury może cały czas spać - a obudzisz go dopiero po zmianie stanu wyjścia termostatu.

Reply to
Adam Dybkowski

Pisałem o tym wyżej - tak jest taka możliwość, ale ten termometr ciągnie 1mA - non stop to dla mnie nie do przyjęcia. Póki co najrozsądniejszy wydaje mi się pomysł kol. Wiliama z wykorzystaniem watchdoga.

J.

Reply to
Jarek P.

Jarek P. pisze:

Chciałeś co minutę a watchdog w nowych AVRach może resetować procesor najrzadziej co 8 sekund. Obawiam się też (zobacz sam w PDFie), że włączony watchdog w procesorze ciągnie 10x tyle prądu, co zewnętrzny układ RTC.

Reply to
Adam Dybkowski

A gdyby procesor pogonić z kwarca zegarkowego? Na jego prędkości mi nie zależy

Sprawdzałem, nie pamiętam dokładnie wartości, ale dla ATTINY13 stan power down z włączonym WD to pobór pradu chyba 3uA - do przyjęcia.

J.

Reply to
Jarek P.

Niestety watchdog ma wlasny generator niezależny od zegara procka. Wiec max kolo 8 sek dostaniesz, a wydaje mi sie ze nawet mniej, cos kolo

4sek ale to zależy pewnie od konkretnego modelu procka. Generalnie najprościej wydaje mi się z zewnętrznym zegarkowym zrobić ew. możnaby zrobić na cmosie generator do kwarca zegarkowego + dzielnik i to podać do procesora, tak dobierając ustawienia, żeby go budziło koło 1min Pamiętaj że i tak będziesz brał prąd na pomiar co jedną minutę, nie pamiętam ile czasu trwa przetwarzanie w tym dallasie, ale w DS1820 trwa mniej więcej 1sek. Wię i tak co minutę będziesz ciągnął przez 1sek 1mA co daje średnio 1/60mA=16uA A tyle średnio spokojnie zrobisz dla procka z kwarcem zegarkowym.
Reply to
Zibias

Zibias pisze:

Dlatego warto wziąć inny scalak termometru - jeżeli oczywiście nie każdy pomiar musi być z max. rozdzielczością. Taki np. DS1722 (na SPI) przy wybraniu rozdzielczości 1 stopnia (8 bitów) mierzy temperaturę kilka razy szybciej, niż DS1820. Dodatkowo komunikacja z nim przez SPI też zajmie znacząco mniej czasu, niż z DS1820 magistralą 1Wire.

Reply to
Adam Dybkowski

To, ?e procesor zresetuje sie co 8 sekund nie oznacza, ?e np. siedem razy nie mo?e i?? spa? a tylko za ósmym razem co? zrobi?. Wystarczy np. w jedym rejestrze zrobi? licznik cyklu "u?pienia". Co wi?cej trzeba napisa? tak oprogramowanie, ?eby dobrze pracowa?o niezale?nie od tego czy jest to "reset" zamierzony czy przypadkowy. Nie twierdz?, ?e jest to propozycja najlepsza tylko najta?sza.

Reply to
William

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.