Orodha ya maudhui:

Arduino - Usumbufu wa Mara kwa Mara: Hatua 4
Arduino - Usumbufu wa Mara kwa Mara: Hatua 4

Video: Arduino - Usumbufu wa Mara kwa Mara: Hatua 4

Video: Arduino - Usumbufu wa Mara kwa Mara: Hatua 4
Video: РАДУЖНЫЕ ДРУЗЬЯ — КАЧКИ?! НЕЗАКОННЫЕ Эксперименты VR! 2024, Julai
Anonim
Arduino - Kukatizwa kwa Mara kwa Mara
Arduino - Kukatizwa kwa Mara kwa Mara

Agizo hili linahusu kutumia usumbufu wa mara kwa mara kwa muda katika programu za Arduino. Hii ni hatua kwa mtayarishaji chipukizi wa programu ya Arduino ambaye anajua kwamba Arduino anaweza kufanya zaidi, lakini hajui kabisa jinsi ya kufanya hivyo.

Ikiwa kuna shida ya utendaji nadhani kuwa unatumia kazi moja au zaidi ya kuchelewesha (). Ujanja ni kuondoa kazi za kuchelewesha () na kubadilisha usumbufu. Ucheleweshaji () kazi inalazimisha Arduino kufanya chochote wakati inasubiri kuchelewesha () kukamilisha. Kutumia usumbufu kunaruhusu programu yako kufanya vitu vingine wakati unasubiri mwisho wa ucheleweshaji. Kawaida kuna idadi kubwa ya wakati uliokufa usiotumiwa ambao unaweza kutumika kwa vitu vingine unapotumia kuchelewesha (). Kutumia usumbufu hutatua shida hii.

Hatua ya 1: Usumbufu Kushughulikia

1. Ongeza kidhibiti cha kusumbua kwenye programu yako. Nakili tu na ubandike mahali hapo juu juu ya usanidi ();

Const unsigned muda mrefu TIMER0_COUNT = 500; // Kipindi cha kipima muda cha 500 msec

// TIMER0 kukatiza kishikizi wakati wa bool = ya uwongo; ISR (TIMER0_COMPA_vect) {static unsigned long count = 0; ikiwa (++ count> TIMER0_COUNT) {count = 0; wakati = kweli; Wakati umewekwa kuwa kweli kila TIMER0_COUNT ms} // (wakati unahitaji kufutwa katika utaratibu kuu)}

Hatua ya 2: Weka muda wa muda wa muda

2. Weka muda wa muda. Njia hii ya kawaida ya nguruwe yenyewe kwenye usumbufu wa TIMER0, ambayo imewekwa moto kila ~ 1 msec.

"Muda" wako ni idadi ya vipingamizi vya TIMER0 ili kuchakata. Kila vipindi ni ~ 1 msec, kwa hivyo unaweka ni kweli ngapi TIMER0 hukatiza kuhesabu kabla ya kuwezesha muda wako. IOW, weka TIMER0_COUNT ya kutofautisha hata kwa milisekunde nyingi unayotaka kusubiri. Kwa mfano, tumia 500 kwa nusu moja ya sekunde. Tumia 3000 kwa sekunde 3.

Hatua ya 3: Kuanzisha Usumbufu

3. Ongeza msimbo wa "TIMER0 initialization" kwa njia yako ya kuanzisha (). Tena, nakili tu na ubandike katika usanidi ().

// *** TIMER0 uanzishaji ***

cli (); // zima kila usumbufu TIMSK0 = 0; // zima timer0 kwa jitter ya chini OCR0A = 0xBB; // usumbufu wa kukatiza hesabu TIMSK0 | = _BV (OCIE0A); // nguruwe kurudi kwenye usumbufu sei (); // zamu inarudi nyuma

Hatua ya 4: Mahali pa Kuongeza Nambari yako

4. Ongeza nambari ya "kuangalia muda" kwa njia yako ya kitanzi (). Nakili na ubandike kwenye kitanzi ().

ikiwa (saa) {

wakati = uongo; // fanya kitu hapa}

"Wakati = uwongo;" line ni muhimu. Bila mstari huu "fanya kitu hapa" (s) zitatekelezwa kila wakati programu inafanya kitanzi ().

Kwa kweli, unabadilisha shughuli zako mwenyewe kwenye mstari wa "fanya kitu hapa". Anza na kuchapisha maandishi au kuwasha LED.

Umemaliza!

Ilipendekeza: