trubka jako zvukovod

Halen na seznam.cz Halen na seznam.cz
Pátek Leden 6 07:54:16 CET 2017


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.

v cyklu projedu všechny nepoužívané piny a provedu:
pinMode(i, INPUT_PULLUP);

používané piny si potom nastavím extra, dle potřeby.


poté v loop pracuji s arduinem a v době kdy jej chci uspat a snížit odběr:

zavolám: sleepNow();

pozn. Je třeba mít definovanou globální proměnnou: bool usnulo = false;


void sleepNow() {
  usnulo = false;
  myDelay(200);

  attachInterrupt(0, my_interrupt_handler, LOW);
  sleep_enable();          // enables the sleep bit in the mcucr register
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);   // sleep mode is set here
  cli();
  sleep_bod_disable();
  usnulo = true;
  sei();
  sleep_cpu();
  // THE PROGRAM CONTINUES FROM HERE AFTER WAKING UP
  sleep_disable();
  power_all_enable();
}


potom už jenom definice procedur:

void my_interrupt_handler()
{
  if (usnulo) {
    detachInterrupt(0);
  }
}

void myDelay(unsigned long ms) {

  unsigned long plannedMillis = millis();
  plannedMillis = plannedMillis + ms;

  while (plannedMillis > millis())
  {

  }
}


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.

Honza



---------- Původní zpráva ----------
Od: Jaroslav Lukesh <lukesh na seznam.cz>
Komu: HW-news <hw-list na list.hw.cz>
Datum: 6. 1. 2017 2:37:21
Předmět: Re: trubka jako zvukovod

"Tak prosím o zveřejnění vašeho řešení upávání a probouzení. 

Já používám knihovnu LowPower, která mi zatím stačí (neřeším uA, ale mA) a 
probouzí se od časovače. 


----- Původní zpráva ----- 
Od: Halen na seznam.cz 

Arduino za mě OK. Jsem hrdý, že jsem si celé řešení naprogramoval sám a je 
plně funkční. Nejhorší zásek byl v usínání a probouzení Arduina, kdy aby 
Arduino nespotřebovávalo energii jsem přepínal režim procesoru. Všechny 
příklady, nebo ukázky použití interruptu vs usínání a probouzení jsou špatně

a Arduino se korektně neprobudí. Toto jsem vyřešil a Arduino bere opravdu 
minimum proudu a korektně se vždy na interrupt probudí. 

_______________________________________________ 
HW-list mailing list - sponsored by www.HW.cz 
Hw-list na list.hw.cz 
http://list.hw.cz/mailman/listinfo/hw-list 
"
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20170106/10e93ef4/attachment.html>


Další informace o konferenci Hw-list