<html><body>Všechny piny, které nepoužívám jsou po startu nastavené jako input, aby byl zaručen jejich stav a nezvyšovaly odběr arduina.<br><br>v cyklu projedu všechny nepoužívané piny a provedu:<br>pinMode(i, INPUT_PULLUP);<br><br>používané piny si potom nastavím extra, dle potřeby.<br><br><br>poté v loop pracuji s arduinem a v době kdy jej chci uspat a snížit odběr:<br><br>zavolám: sleepNow();<br><br>pozn. Je třeba mít definovanou globální proměnnou: bool usnulo = false;<br><br><br>void sleepNow() {<br>  usnulo = false;<br>  myDelay(200);<br><br>  attachInterrupt(0, my_interrupt_handler, LOW);<br>  sleep_enable();          // enables the sleep bit in the mcucr register<br>  set_sleep_mode(SLEEP_MODE_PWR_DOWN);   // sleep mode is set here<br>  cli();<br>  sleep_bod_disable();<br>  usnulo = true;<br>  sei();<br>  sleep_cpu();<br>  // THE PROGRAM CONTINUES FROM HERE AFTER WAKING UP<br>  sleep_disable();<br>  power_all_enable();<br>}<br><br><br>potom už jenom definice procedur:<br><br>void my_interrupt_handler()<br>{<br>  if (usnulo) {<br>    detachInterrupt(0);<br>  }<br>}<br><br>void myDelay(unsigned long ms) {<br><br>  unsigned long plannedMillis = millis();<br>  plannedMillis = plannedMillis + ms;<br><br>  while (plannedMillis > millis())<br>  {<br><br>  }<br>}<br><br><br>Tímto způsobem mě arduino mini usíná a probouzí zcela bez problémů. To usínání jsem ladil možná týden, než to začalo korektně fungovat. Postupy co jsou na netu jakoby fungují, ale po několika probuzeních se cpu zasekne v nedefinovatelném stavu.<br><br>Honza<br><br><br><p>---------- Původní zpráva ----------<br>Od: Jaroslav Lukesh <lukesh@seznam.cz><br>Komu: HW-news <hw-list@list.hw.cz><br>Datum: 6. 1. 2017 2:37:21<br>Předmět: Re: trubka jako zvukovod</p><br><blockquote>Tak prosím o zveřejnění vašeho řešení upávání a probouzení.
<br>
<br>Já používám knihovnu LowPower, která mi zatím stačí (neřeším uA, ale mA) a 
<br>probouzí se od časovače.
<br>
<br>
<br>----- Původní zpráva ----- 
<br>Od: Halen@seznam.cz
<br>
<br>Arduino za mě OK. Jsem hrdý, že jsem si celé řešení naprogramoval sám a je 
<br>plně funkční. Nejhorší zásek byl v usínání a probouzení Arduina, kdy aby 
<br>Arduino nespotřebovávalo energii jsem přepínal režim procesoru. Všechny 
<br>příklady, nebo ukázky použití interruptu vs usínání a probouzení jsou špatně 
<br>a Arduino se korektně neprobudí. Toto jsem vyřešil a Arduino bere opravdu 
<br>minimum proudu a korektně se vždy na interrupt probudí.
<br>
<br>_______________________________________________
<br>HW-list mailing list  -  sponsored by www.HW.cz
<br>Hw-list@list.hw.cz
<br>http://list.hw.cz/mailman/listinfo/hw-list
<br></blockquote></body></html>