Mundarija:
- 1 -qadam: Interrupt Handler
- 2 -qadam: davriy vaqt oralig'ini o'rnating
- 3 -qadam: Initiallashtirishni uzish
- 4 -qadam: Kodni qaerga qo'shish kerak
Video: Arduino - davriy uzilish: 4 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
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:
IRFZ44N MOSFET bilan simli uzilish signallari davri: 11 qadam
IRFZ44N MOSFET bilan simli uzilish signallari davri: Bugun biz ushbu maqolada IRFZ44N MOSFET bilan simli uzilish signalining afzalliklarini muhokama qilish uchun to'rtburchaklar o'lchashga intilamiz. IRFZ44N-bu NOS-kanalli shirinliklarni davolash bo'yicha assotsiatsiya, MOSFET-bu yuqori mahsuldorlikni ta'minlaydi
DIY SnapIno (Arduino uzilish sxemalari bilan uchrashadi) + chizish: 3 qadam
DIY SnapIno (Arduino Snap Circuits bilan uchrashadi) + Scratch: Men 4 yil oldin o'g'limga Snap Circuits sotib olganman, men Arduino bilan o'ynaganimda. Endi biz Arduino va Arduino uchun Scratch bilan ishlashni boshlaymiz, lekin men SnapIno -ni ajoyib g'oya deb topdim … uning tug'ilgan kuni yoki Rojdestvoga yaqin bo'lgani uchun men qaror qilaman
Avtomatik uzilish sxemasini qanday qilish kerak: 9 qadam
Avtomatik uzilish sxemasini qanday qilish kerak: Salom do'stim, bugun men 2N2222A tranzistoridan foydalanib avtomatik uzilish sxemasini tuzmoqchiman, bu sxema juda oddiy. Keling, boshlaylik
STM32CubeMX tugmasi uzilish bilan o'chiriladi: 5 qadam
STM32CubeMX tugmachasi uzilish bilan o'chiriladi: Salom, men bu darslikda tugmachalarning sakrashini oldini olish uchun o'zimning oddiy echimimni berishga harakat qilaman, bu juda jiddiy muammo. Internetda bu muammoning echimini taklif qiladigan ko'plab videolar bor, lekin ularning hech biri tashqi uzilishlar uchun emas. Bu videolarning barchasida tugma
DB410 -dan chekilgan uzilish sifatida uzoqdan joylashgan fayl tizimiga kirish: 6 qadam
DB410 -dan chekilgan uzilish sifatida uzoqdan joylashgan fayl tizimiga kirish: Maqsadlar: USB Ethernet CDC gadjetini qo'llab -quvvatlash uchun asboblar zanjirini o'rnating va yadroni qayta kompilyatsiya qiling; USB Ethernet CDC -ni yuklash uchun Linaro -dan boot.img -ni qayta yarating; Ildiz fayl tizimini joylashtirish uchun NFS serverini yarating; DEVICE va HOST -da IP konfiguratsiyasi