Բովանդակություն:
- Քայլ 1: Ընդհատել բեռնաթափողը
- Քայլ 2: Սահմանեք պարբերական ժամանակի միջակայք
- Քայլ 3: Ընդհատել սկզբնականացումը
- Քայլ 4: Որտեղ ավելացնել ձեր կոդը
Video: Arduino - Պարբերական ընդհատում. 4 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:49
Այս հրահանգը վերաբերում է Arduino ծրագրերում ժամանակի համար պարբերական ընդհատում օգտագործելուն: Սա քայլ է սկսնակ Arduino ծրագրավորողի համար, ով գիտի, որ Arduino- ն կարող է ավելին անել, բայց չգիտի, թե ինչպես դա իրականացնել:
Եթե կա աշխատանքի խնդիր, ես ենթադրում եմ, որ դուք օգտագործում եք մեկ կամ մի քանի ուշացման () գործառույթներ: Խնդիրն այն է, որ ազատվել ուշացման () գործառույթից (գործառույթներից) և փոխարինել ընդհատումը: Հետաձգման () գործառույթը ստիպում է Arduino- ին ոչինչ չանել, մինչ սպասում են ուշացման () ավարտին: Ընդհատման օգտագործումը թույլ է տալիս ձեր ծրագրին այլ բաներ անել ՝ սպասելով հետաձգման ավարտին: Սովորաբար գոյություն ունի չօգտագործված հսկայական ժամանակ, որը կարող է օգտագործվել այլ բաների համար `ուշացումն օգտագործելիս (): Ընդհատման օգտագործումը լուծում է այս խնդիրը:
Քայլ 1: Ընդհատել բեռնաթափողը
1. Ավելացրեք ընդհատումների կարգավորիչը ձեր ծրագրին: Պարզապես պատճենեք և տեղադրեք տեղադրման վերևում ();
const անստորագիր երկար TIMER0_COUNT = 500; // 500 մկվ ժմչփ ընդմիջում
// TIMER0 ընդհատում գործարկողի անկայուն bool time = false; ISR (TIMER0_COMPA_vect) {ստատիկ անստորագիր երկար հաշվարկ = 0; եթե (++ հաշվարկ> TIMER0_COUNT) {հաշվարկ = 0; ժամանակ = ճշմարիտ; // ժամանակը ճշգրիտ է սահմանվում յուրաքանչյուր TIMER0_COUNT մս.} // (ժամանակը պետք է մաքրվի հիմնական ռեժիմում)}
Քայլ 2: Սահմանեք պարբերական ժամանակի միջակայք
2. Սահմանեք ժամանակի միջակայքը: Այս սովորական խոզուկը վերադառնում է TIMER0 ընդհատմանը, որի վրա պետք է կրակվի յուրաքանչյուր 1 ֆունտ վրկ:
Ձեր «ընդմիջումը» TIMER0 ընդհատումների քանակն է, որոնք մշակվում են: Յուրաքանչյուր ընդմիջում m 1 վայրկյան է, այնպես որ դուք իսկապես սահմանում եք, թե քանի TIMER0 ընդմիջում կհաշվի ձեր ինտերվալը ակտիվացնելուց առաջ: IOW, սահմանեք TIMER0_COUNT փոփոխականը, այնքան միլիվայրկյան, որը ցանկանում եք սպասել: Օրինակ, օգտագործեք 500 -ը վայրկյանի կեսի համար: Օգտագործեք 3000 -ը 3 վայրկյան:
Քայլ 3: Ընդհատել սկզբնականացումը
3. Տեղադրման () մեթոդին ավելացրեք «TIMER0 սկզբնավորման» ծածկագիրը: Կրկին, պարզապես պատճենեք և տեղադրեք setup- ում ():
// *** TIMER0 նախաստորագրում ***
cli (); // անջատել բոլոր ընդհատումները TIMSK0 = 0; // անջատել ժամանակաչափը ցածր jitter- ի համար OCR0A = 0xBB; // կամայական ընդհատումների հաշվարկ TIMSK0 | = _BV (OCIE0A); // խոզուկ վերադառնալ ընդհատվող sei (); // անջատել նորից ընդհատումները
Քայլ 4: Որտեղ ավելացնել ձեր կոդը
4. Ձեր loop () մեթոդին ավելացրեք «ժամանակի ստուգում» ծածկագիրը: Պատճենեք և տեղադրեք օղակում ():
եթե (ժամանակ) {
ժամանակ = կեղծ; // ինչ -որ բան արա այստեղ}
«=ամանակ = կեղծ;» գիծը կարևոր է: Առանց այս տողի «ինչ -որ բան արա այստեղ» տողերը (ներ) ը կկատարվեին ամեն անգամ, երբ ծրագիրը կատարում է օղակ ():
Իհարկե, դուք փոխարինում եք ձեր սեփական գործունեությանը «այստեղ ինչ -որ բան անել» տողում: Սկսեք մի քանի տեքստ տպել կամ LED լուսարձակում:
Վերջացրել ես!
Խորհուրդ ենք տալիս:
Arduino մեքենայի հետադարձ կայանման ահազանգման համակարգ - Քայլ առ քայլ: 4 քայլ
Arduino մեքենայի հետադարձ կայանման ահազանգման համակարգ | Քայլ առ քայլ. Այս նախագծում ես նախագծելու եմ մի պարզ Arduino մեքենայի հետադարձ կայանման սենսորային միացում ՝ օգտագործելով Arduino UNO և HC-SR04 ուլտրաձայնային տվիչ: Այս Arduino- ի վրա հիմնված Car Reverse ազդանշանային համակարգը կարող է օգտագործվել ինքնավար նավարկության, ռոբոտների ռանգի և այլ տեսականու համար
Ձայնային թռիչք Arduino Uno- ի հետ Քայլ առ քայլ (8 քայլ) `8 քայլ
Ձայնային թռիչք Arduino Uno- ի հետ Քայլ առ քայլ (8 քայլ). Ուլտրաձայնային ձայնային փոխարկիչներ L298N Dc կանացի ադապտեր էներգիայի մատակարարում արական dc pin Arduino UNOBreadboard և անալոգային նավահանգիստներ ՝ կոդը փոխարկելու համար (C ++)
RC Tracked Robot- ը Arduino- ի միջոցով ՝ քայլ առ քայլ ՝ 3 քայլ
RC Tracked Robot- ը Arduino- ի միջոցով. Հուսով եմ, որ դուք անցել եք մեր նախորդ նախագծերի միջով `Spinel Crux V1 - The Gesture Controlled Robot, Spinel Crux L2 - Arduino Pick and Place Robot with Robotic Arms և The Badland Braw
Ընդհատում է լաբորատորիան (Աշխատանքը ընթացքի մեջ է). 3 քայլ
Ընդհատում է լաբորատորիան (Աշխատանքն ընթացքի մեջ է). Այս լաբորատորիայի նպատակն է իրականացնել Arduino ծրագիրը `օգտագործելով ընդհատումները: Այս լաբորատորիան լիովին չի աշխատում կոդավորման հետ կապված խնդիրների պատճառով: Այն, ինչ ձեզ հարկավոր կլինի
DIY Arduino Robotic Arm, Քայլ առ քայլ ՝ 9 քայլ
DIY Arduino Robotic Arm, Քայլ առ քայլ. Այս ձեռնարկը սովորեցնում է ձեզ, թե ինչպես ինքնուրույն կառուցել ռոբոտ -բազուկ