Мазмұны:
- 1 -қадам: үзіліс өңдегіші
- 2 -қадам: Мерзімді уақыт аралығын орнатыңыз
- 3 -қадам: Үзіліс инициализациясы
- 4 -қадам: Кодты қайда қосуға болады
Бейне: Arduino - мерзімді үзіліс: 4 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:26
Бұл нұсқаулық Arduino бағдарламаларында уақыт бойынша үзілісті қолдану туралы. Бұл Arduino көп нәрсені жасай алатынын білетін, бірақ мұны қалай жасау керектігін білмейтін Arduino бағдарламашысының қадамы.
Егер өнімділік мәселесі болса, мен сіз бір немесе бірнеше delay () функцияларын қолданасыз деп ойлаймын. Кешіктіру () функциясынан құтылу және үзілісті ауыстыру. Delay () функциясы Arduino -ны кешіктіру () аяқталғанша күтіп тұрғанда ештеңе істеуге мәжбүр етеді. Үзілісті пайдалану сіздің бағдарламаңызға кешіктірудің аяқталуын күтіп, басқа нәрселерді жасауға мүмкіндік береді. Әдетте delay () функциясын қолданған кезде басқа нәрселерге пайдалануға болатын пайдаланылмаған өлі уақыттың үлкен көлемі бар. Үзілісті пайдалану бұл мәселені шешеді.
1 -қадам: үзіліс өңдегіші
1. Үзіліс өңдегішін бағдарламаға қосыңыз. Орнатудан жоғары бір жерге көшіріп, қойыңыз ();
const белгісіз ұзақ TIMER0_COUNT = 500; // 500 мс таймер аралығы
// TIMER0 үзу өңдегіші тұрақсыз боль уақыты = жалған; ISR (TIMER0_COMPA_vect) {статикалық белгісіз ұзақ санау = 0; if (++ count> TIMER0_COUNT) {count = 0; уақыт = ақиқат; // уақыт әрбір TIMER0_COUNT мс} мәніне шын мәнінде орнатылады // (уақытты негізгі тәртіпте тазалау қажет)}
2 -қадам: Мерзімді уақыт аралығын орнатыңыз
2. Уақыт аралығын орнатыңыз. Бұл әдеттегі пиггер TIMER0 үзілісіне оралады, ол әр ~ 1 мсек сайын күйіп тұрады.
Сіздің «интервал» - бұл өңдеуге арналған TIMER0 үзілістерінің саны. Әр интервал ~ 1 мс құрайды, сондықтан сіз интервалды қоспас бұрын қанша TIMER0 үзілісін санауға болатынын анықтайсыз. IOW, TIMER0_COUNT айнымалы мәнін қанша миллисекунд күткіңіз келетініне қойыңыз. Мысалы, секундтың жартысына 500 пайдаланыңыз. 3000 секундты 3 секундқа қолданыңыз.
3 -қадам: Үзіліс инициализациясы
3. «TIMER0 инициализациясы» кодын setup () әдісіне қосыңыз. Тағы да, setup () ішінде көшіріп, қойыңыз.
// *** TIMER0 инициализациясы ***
cli (); // барлық үзілістерді өшіру TIMSK0 = 0; // төменгі діріл үшін таймерді өшіру OCR0A = 0xBB; // ерікті үзіліс саны TIMSK0 | = _BV (OCIE0A); // piggy interrupt sei () -ға қайтып оралды; // бұрылу үзілістері қайта қосылады
4 -қадам: Кодты қайда қосуға болады
4. «Time check» кодын loop () әдісіне қосыңыз. Циклге көшіру және қою ().
егер (уақыт) {
уақыт = жалған; // мұнда бірдеңе жаса}
«Уақыт = жалған;» сызық маңызды. Бұл сызықсыз «мұнда бірдеңе істеу» жолдары бағдарлама циклды () орындаған сайын орындалады.
Әрине, сіз өзіңіздің жеке әрекеттеріңізді «мұнда бірдеңе істеу» жолында ауыстырасыз. Мәтінді басып шығарудан немесе жарық диодты жыпылықтаудан бастаңыз.
Бітті!
Ұсынылған:
1963 ж. Tele-LED комфорт туралы үзіліс: 4 қадам
1963 ж. Tele-LED комфорт туралы үзіліс туралы еске салғыш: Бұл ескі және әдеттен тыс телефон енді үй кеңсесінде әл-ауқат пен өнімділікті сақтауға көмектеседі! Винтаждық тордың астында неопиксельді сақина 24 светодиодты бір сағат бойы реттеп, кемпірқосақтың көз тартарлық дисплейіне ауысады
Arduino интерфейсіне арналған PS2 контроллерінің үзіліс адаптері: 10 қадам
PS2 Controller Breakout адаптері Arduino Interfacing үшін: PlayStation 2 контроллері робототехника жобалары үшін өте пайдалы геймпад. Бұл арзан, қол жетімді (екінші қолмен), көптеген түймелер бар және Arduino -мен үйлесімді! Оны пайдалану үшін сізге сымды қосатын арнайы қосқыш қажет
Үзіліс зертханасы (жұмыс жүріп жатыр): 3 қадам
Үзіліс зертханасы (жұмыс жүріп жатыр): Бұл зертхананың мақсаты - үзіліс көмегімен Arduino бағдарламасы. Бұл зертхана кодтау ақауларына байланысты дұрыс жұмыс істемейді. Сізге не қажет:- 1 Arduino Uno- 1 нан тақтасы- 1 түйме- 3 жарық диоды- 220 Ом резисторы- өтпелі сымдар
VHDL бағдарламаланатын үзіліс контроллерінің дизайны: 4 қадам
VHDL -де бағдарламаланатын үзіліс контроллерінің дизайны: Мен бұл блогтан алатын жауаптардың түріне таң қаламын. Балалар, менің блогыма кіріп, өз білімдерімді сіздермен бөлісуге ынталандырғаныңыз үшін рахмет. Бұл жолы мен барлық SOC -ларда көретін тағы бір қызықты модульдің дизайнын ұсынамын - Interrupt C
Crimson Fox: жұмыс кезінде үзіліс алу туралы хабардарлықты арттыру: 8 қадам (суреттермен)
Crimson Fox: Жұмыс кезінде үзіліс алу туралы хабардарлықты жоғарылату: Швециядағы KTH курсында біз пішінін өзгерте алатын артефакт жасауды тапсырдық. Біз сізге жұмыстан немесе оқудан үзіліс алуды ескертетін түлкі пішінді артефакт жасадық. Түлкі көрсететін жалпы түсінік