Arduino-da taymerlar - Reja kirish bob. Arduino bilan ishlashni boshlash

|
Reja kirish bob. Arduino bilan ishlashni boshlash
|
bet | 7/10 | Sana | 13.02.2024 | Hajmi | 52,35 Kb. | | #155674 |
1.5.2 Arduino-da taymerlar
Arduino uchta ATMega168 taymeridan foydalanadi:
1) Taymer 0 (tizim vaqti, PWM 5 va 6)
Dasturning ish vaqti hisoblagichini saqlash uchun foydalaniladi. Millis() funksiyasi dastur 0 taymerining global ISR o'sishidan foydalanishni boshlaganidan beri millisekundlar sonini qaytaradi. Taymer 0 5 va 6 pinlarida PWMni amalga oshirish uchun ham ishlatiladi.
) 1-taymer (PWM 9 va 10)
9 va 10 raqamli pinlar uchun PWMni amalga oshirish uchun foydalaniladi.
) 2-taymer (PWM 3 va 11)
Raqamli pinlar 3 va 11 uchun PWM chiqishlarini boshqarish uchun ishlatiladi.
Barcha taymerlar ishlatilsa-da, faqat 0 taymerida taymerga tayinlangan ISR mavjud. Bu shuni anglatadiki, siz 1-taymer va/yoki 2-taymerni ehtiyojlaringizga mos ravishda sozlashingiz mumkin. Biroq, natijada siz ba'zi kiritish/chiqarish portlarida PWM-dan foydalana olmaysiz. Agar siz PWM dan foydalanishni rejalashtirmoqchi bo'lsangiz, buni yodda tutishingiz kerak.
1.5.3 Mikrokontrollerni uzilishlar bilan yuklash
Effekt haqida tasavvurga ega bo'lish uchun ISR taymerini har 20 mksda ishga tushirgan deb taxmin qiling. 16 MGts chastotada ishlaydigan protsessor har 63 ms ga yaqin mashina ko'rsatmalarini yoki har bir uzilish davri (20 mks) uchun taxminan 320 ta mashina ko'rsatmalarini bajarishi mumkin. Faraz qilaylik, C dasturining har bir satrini bajarish ko'plab mashina ko'rsatmalarini olishi mumkin. ISRda qo'llaniladigan har bir ko'rsatma boshqa har qanday dasturni bajarish uchun mavjud vaqtni oladi. Agar ISR 150 ga yaqin mashina tsiklidan foydalansa, mavjud protsessor vaqtining yarmi behuda ketadi. Faol uzilishlar bilan asosiy dastur aks holda kerak bo'ladigan vaqt taxminan ½ kechiktiriladi. 150 ta mashina ko'rsatmalari juda katta C dasturi emas, shuning uchun ehtiyot bo'lishingiz kerak.
Agar ISR juda uzun bo'lsa, asosiy dastur juda sekin ishlaydi, lekin agar ISR taymer siklining davomiyligidan uzoqroq bo'lsa, sizning asosiy dasturingiz deyarli hech qachon bajarilmaydi va bundan tashqari, tizim stegi oxir-oqibat ishdan chiqadi. .
1.5.4 Yukni o'lchashni uzish
Juda tez ISR taymeriga ega bo'lishingiz kerakligi sababli, mavjud resurslar qanchalik bandligini o'lchashingiz kerak. Buning uchun qandaydir usul kerak.
Taymer avtomatik ravishda qayta ishga tushadigan rejimga o'rnatilmagan. Bu shuni anglatadiki, ISR keyingi hisoblash oralig'i uchun taymerni qayta o'rnatishi kerak. Avtomatik qayta yuklangan taymerga ega bo'lish to'g'riroq bo'lardi, lekin bu rejimdan foydalanib, ISRda sarflangan vaqtni o'lchash va shunga mos ravishda taymerga yuklangan vaqtni sozlash mumkin. Muhimi shundaki, ushbu tuzatish yordamida biz ISRda qancha vaqt sarflaganimizni ko'rsatadigan raqamni ham olamiz.
Usul shundaki, taymer to'lib toshgan va uzilib qolgan bo'lsa ham vaqtni ushlab turadi. ISR oxirida taymer hisoblagichining joriy qiymatini olish mumkin. Bu qiymat ishlab chiquvchiga dasturning keyingi nuqtasiga yetgan vaqtini bildiradi. Bu ISRda uzilish tartibiga kirish va dasturni bajarish uchun sarflangan umumiy vaqt. Kichkina xatolik bo'ladi, chunki taymerni qayta o'rnatish buyrug'iga sarflangan vaqt hisoblanmaydi, ammo bu xato empirik tarzda tuzatilishi mumkin. Aslida, shuning uchun yuklash qiymatini hisoblash formulasida 256 o'rniga 257 ishlatiladi. Bu yaxshiroq natija berishi eksperimental ravishda aniqlandi. Qo'shimcha soat aylanishi taymerni tiklash buyrug'ini qoplaydi.
|
| |