Mundarija:

Arduino - davriy uzilish: 4 qadam
Arduino - davriy uzilish: 4 qadam

Video: Arduino - davriy uzilish: 4 qadam

Video: Arduino - davriy uzilish: 4 qadam
Video: Mendeleyev davriy jadvalini yodlash. Abuturiyentlar va maktab o'quvchilari uchun juda foydali 2024, Iyul
Anonim
Arduino - davriy uzilish
Arduino - davriy uzilish

Bu ko'rsatma Arduino dasturlarida vaqtni aniqlash uchun davriy uzilishlardan foydalanish haqida. Bu Arduino ko'proq narsani qila olishini biladigan, lekin buni qanday amalga oshirishni bilmaydigan yangi boshlanuvchi Arduino dasturchisi uchun qadam.

Agar ishlash muammosi bo'lsa, men bir yoki bir nechta delay () funktsiyasidan foydalanayapman deb o'ylayman. Hiyla - kechiktirish () funksiyalaridan xalos bo'lish va uzilishni almashtirish. Delay () funktsiyasi Arduino -ni kechiktirish () tugashini kutish bilan hech narsa qilishga majburlamaydi. Tanaffusdan foydalanish sizning dasturingizga kechikish tugashini kutib boshqa ishlarni bajarishga imkon beradi. Odatda, kechiktirish () dan foydalanilganda boshqa narsalar uchun ishlatilishi mumkin bo'lgan juda ko'p ishlatilmagan o'lik vaqt bor. To'xtatishdan foydalanish bu muammoni hal qiladi.

1 -qadam: Interrupt Handler

1. O'z dasturiga uzilish ishlovchilarini qo'shing. O'rnatish () ustidagi joyga nusxa ko'chiring va joylashtiring;

const imzosiz uzun TIMER0_COUNT = 500; // 500 msn taymer oralig'i

// TIMER0 interrupt ishlovchisi o'zgaruvchan bool time = false; ISR (TIMER0_COMPA_vect) {statik belgisiz uzun hisob = 0; agar (++ soni> TIMER0_COUNT) {hisoblash = 0; vaqt = haqiqiy; // vaqt har TIMER0_COUNT ms} ga to'g'ri o'rnatiladi // (vaqtni asosiy tartibda tozalash kerak)}

2 -qadam: davriy vaqt oralig'ini o'rnating

2. Vaqt oralig'ini o'rnating. Bu odatdagi cho'chqachilik har ~ 1 msda yonib ketadigan TIMER0 uzilishiga qaytadi.

Sizning "intervalingiz" - bu ishlov berish uchun TIMER0 uzilishlar soni. Har bir interval ~ 1 msnni tashkil qiladi, shuning uchun siz intervalni yoqishdan oldin qancha TIMER0 uzilishlarini hisoblashni aniqlaysiz. IOW, TIMER0_COUNT o'zgaruvchisini qancha millisekund kutishni xohlasangiz, o'rnating. Masalan, sekundning yarmiga 500 dan foydalaning. 3000 soniyadan 3 soniya davomida foydalaning.

3 -qadam: Initiallashtirishni uzish

3. "TIMER0 ishga tushirish" kodini setup () usulingizga qo'shing. Shunga qaramay, setup () da nusxa ko'chiring va joylashtiring.

// *** TIMER0 ishga tushirilishi ***

cli (); // barcha uzilishlarni o'chirish TIMSK0 = 0; // pastki chayqalish uchun taymer0ni o'chiring OCR0A = 0xBB; // ixtiyoriy uzilishlar soni TIMSK0 | = _BV (OCIE0A); // cho'chqa orqaga qaytish sei (); // burilish uzilishlari qaytadan yoqiladi

4 -qadam: Kodni qaerga qo'shish kerak

4. "Vaqtni tekshirish" kodini loop () usulingizga qo'shing. Loop () dan nusxa ko'chiring va joylashtiring.

agar (vaqt) {

vaqt = noto'g'ri; // bu erda biror narsa qiling}

"Vaqt = noto'g'ri;" chiziq muhim ahamiyatga ega. Bu satrsiz "bu erda biror narsa qil" satrlari dastur har safar loop () bajarilganda bajariladi.

Albatta, siz o'zingizning faoliyatingizni "bu erda biror narsa qiling" qatoriga qo'yasiz. Matnni bosib chiqarish yoki LEDni yoqish bilan boshlang.

Ishingiz tugadi!

Tavsiya: