Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 10 odgovora
  • 5.213 pregleda

Najnovija ↓

Arduino izvrsavanje instrukcija 09.12.2014. u 19:36 · pre 144 meseca #1
Pozdrav svima!

Skoro sam radio jedan projekat sa Arduinom i bilo mi je neophodno da u razlicitim vremenskim intervalima obavljam izvesne radnje. Npr., da ocitavam temperaturu svakih 5 minuta i da ocitavam vreme sa DS1302 svakih 5 sekundi. To sam uradio na sledeci nacin:

loop():

//----------------------------------------------------------
// za ocitavanje temperature
const unsigned long interval = 5 * 60 * 1000UL;
static unsigned long last_sample_time = 0 - interval;

unsigned long now = millis();
if ((now - last_sample_time) >= interval)
{
last_sample_time = now;

temperature();
}
//---------------------------------------------------------
// za ocitavanje vremena
const unsigned long clock_interval = 5000UL;
static unsigned long last_sample_time_clock = 0 - clock_interval;

unsigned long now_clock = millis();
if ((now_clock - last_sample_time_clock) >= clock_interval)
{
last_sample_time_clock = now_clock;

clock();
}
//----------------------------------------------------------

Ono sto me zanima je: Ako bi se nekada desilo da se vremena semplovanja temperature i sata poklope, ili npr. kada bih bilo koje 2 stvari semplovao u isto vreme, da li bi se obe stvari korektno semplovale ili bi nesto bilo izostavljeno?

Hvala.
Re: Arduino izvrsavanje instrukcija 09.12.2014. u 19:50 · pre 144 meseca #2
Ne možeš ti softverski ništa semplovati u isto vreme, jer mikrokontroler može da izvršava samo jednu po jednu instrukciju redom.
"U isto vreme" u tvom primjerju može da znači da će mikrokontroler u nekom trenutku očitati jedno, a odmah u najbližem sledećem mogućem taktu procesora drugu.
Tebi je to možda "u isto vreme", ali na nivou mikrokontrolera jedno se uvijek desi par mili/mikro/nano...sekundi (zavisi od brzine procesora) poslije onog prethodnog.
Re: Arduino izvrsavanje instrukcija 09.12.2014. u 19:57 · pre 144 meseca #3
Hvala na odgovoru!

Znam da moje "isto vreme" i njegovo nisu ista vremena.
Hteo sam samo da proverim da li ce se sve odvijati kako treba.

Pozdrav!
Re: Arduino izvrsavanje instrukcija 14.12.2014. u 01:36 · pre 144 meseca #4
U ovom slucaju se najcesce koriste interruptovi, pogledaj malo o njima.

http://arduino.cc/en/Reference/Interrupts

Ima vise nacina kako mozes da ih koristis, vremenski, sa nekim okidacima, itd... Ovo ti je u sustini neki "multitasking" kod Arduina.
Potpis
THE ONLY EASY DAY WAS YESTERDAY
Re: Arduino izvrsavanje instrukcija 03.01.2015. u 17:08 · pre 144 meseca #6
Da li neko ima ideju kako da napravim neki pseudo multi-threading kod Arduina?

Konkretno mi treba resenje sledeceg problema:
Napravio sam tajmer koji okida releje u zavisnosti od vremena koje se ucita putem daljinskog upravljaca (sve se ispisuje na LCD). Sad, da bih uneo vreme koje koristi tajmer, moram da stavim beskonacnu petlju, a ona mi blokira sve ostale stvarcice koje se izvrsavaju u pozadini.
Re: Arduino izvrsavanje instrukcija 03.01.2015. u 17:45 · pre 144 meseca #8
U redu, interapti ..

Hardverske verovatno ne bih mogao da iskoristim jer hocu da mi sve radi na daljinac.
Sad, za softverske ... Nesto sam citao da se mogu pozajmiti neka 3 tajmera u te svrhe, ali i to da moze doci do konflikta ako se oni vec koriste.
Re: Arduino izvrsavanje instrukcija 03.01.2015. u 18:24 · pre 144 meseca #9
Ne poznajem Arduino platformu ali dovoljan ti je jedan interapt za
daljinac, a sta se tacno desilo obradjujes kad se dogodi interapat i
onda izvrsavas sta si zamislio.
Potpis

Re: Arduino izvrsavanje instrukcija 03.01.2015. u 23:53 · pre 143 meseca #10
Citat:
intelisense: Da li neko ima ideju kako da napravim neki pseudo multi-threading kod Arduina?


SoftTimer
Potpis
History, in general, only informs us what bad government is.
Thomas Jefferson
Re: Arduino izvrsavanje instrukcija 04.01.2015. u 02:13 · pre 143 meseca #11
pazi sa tim pitanjem je jasno da ne razumes kako interapti rade :(

elem, ako ne umes sam, onda uzmi neki gotov rtos za arduino

https://github.com/greiman/NilRTOS-Arduino
https://code.google.com/p/duinos/
https://github.com/PeterVranken/RTuinOS

ako se dobro secam duinos podrzava preemtive mutlitasking, baziran na
freertos, moguce najbolji od ta tri koja sam ti linkovao, no pogledaj
sam pa odluci
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme