Mikrokontroller dasturlash. 10-qism

|
Mikrokontroller dasturlash. 10-qism
|
bet | 2/3 | Sana | 17.02.2024 | Hajmi | 76,59 Kb. | | #158170 |
Bog'liq 15-mavzu Mikrokontrollerlarni ishga tushirishda qo‘riqchi taymerning roli.Mikrokontroller dasturlash. 10-qism
2018 yil 12 fevral
841 o'qildi
Qo'riqchi taymer
U yoki bu sababga ko'ra mikrokontrollerdagi dastur muzlatib qo'yishi va qurilma normal ishlashini to'xtatadigan holatlar mavjud. Bunday holatda, faqat qurilmani qo'lda tiklash yordam beradi. Ammo bu har doim ham mumkin emas. Shuning uchun mikrokontrollerni qayta o'rnatishi mumkin bo'lgan qo'riqchi taymer ixtiro qilindi.
Qo'riqchi taymer - bu tizimning muzlashini boshqarish uchun apparat tomonidan amalga oshirilgan sxema. Bu boshqariladigan tizim tomonidan vaqti-vaqti bilan tiklanadigan taymer. Agar ma'lum vaqt ichida qayta tiklash sodir bo'lmasa, tizimni qayta ishga tushirishga majbur bo'ladi. Ba'zi hollarda qo'riqchi taymer tizimni qayta ishga tushirish uchun signal berishi mumkin ("yumshoq" qayta yuklash), boshqalarida esa qayta yuklash apparatda amalga oshiriladi (RST signal simini yoki shunga o'xshashlarni qisqartirish orqali).
Ushbu taymer, asosiy dasturdan qat'i nazar, o'z-o'zidan yonadi. Mohiyat shundan iboratki: asosiy dasturda ma'lum vaqt oralig'ida ushbu taymerni qayta tiklaydigan kod kiritiladi. Taymer doimiy ravishda qayta o'rnatilganda, dastur muammosiz ishlaydi. Ammo, agar u qayta o'rnatilmagan bo'lsa, bu asosiy dasturdagi kodning bir qismi bajarilmaganligini va qotib qolganligini anglatadi, bu holda taymer ma'lum bir qiymatga hisoblab, mikrokontrollerni to'liq qayta tiklaydi. Dastur boshidanoq ishlay boshlaydi.
Watchdog taymerining xususiyatlari:
Alohida soat generatori (128 kHz)
Uzilishlar va tizimni qayta tiklash qobiliyati
16 millisekunddan 8 soniyagacha tanlash mumkin bo'lgan qayta o'rnatishni yaratish rejimi
Failsafe rejimi faqat sug'urta dasturlash orqali o'chirilganda
Kuzatuv taymerida faqat bitta registr mavjud** WDTCSR**.
WDIF bit (7) - qo'riqchi taymeridan uzilishni olish bayrog'i (1 - agar uzilish olingan bo'lsa (bayroqqa 1 yozish orqali qayta o'rnatiladi)).
WDIE bit (6) - unga 1 yozishda qo'riqchi taymeridan uzilishga ruxsat
WDCE bit (4) - qo'riqchi taymerining ish rejimini o'zgartirishga ruxsat (ish rejimini yoki oldindan o'lchovni o'zgartirishdan oldin, siz 1 yozishingiz kerak).
WDE bit (3) - unga 1 yozishda kuzatuvchi taymer tomonidan tizimni qayta o'rnatishga ruxsat.
WDP3 bit (5) va WDP2-WDP0 bitlari (2 - 0) qayta o'rnatish yoki kuzatuvchidan uzilish sodir bo'lgan vaqtni nazorat qiladi taymer qabul qilinadi:
0000 - 2048 tsikl (16 ms)
0001 - 4096 tsikl (32 ms)
0010 - 8192 tsikl (64 ms)
0011 - 16384 tsikl (0,125 s)
0100 - 32768 tsikl (0,25 s)
0101 - 65536 tsikl (0,5 s)
0110 - 131072 tsikl (1 s)
0111 - 262144 tsikl (2 s)
1000 - 524288 tsikl (4 s)
1001 - 1048576 tsikl (8 s)
1010 - 1111 - zaxira
Shuni ham ta'kidlash joizki, ish rejimida (qayta tiklash va uzilish) birinchi navbatda uzilish amalga oshiriladi, keyin esa qayta o'rnatiladi. Agar WDTCR registrining WDE va WDIE bitlaridan qat'i nazar, WDTON sug'urta biti 0 ga o'rnatilgan bo'lsa , taymer sozlangan vaqt tugaganidan keyin tizimni qayta o'rnatadi.
Shuningdek, tizimni kuzatuvchi taymer bilan qayta o'rnatish uchun MCUSR registrining WDRF bitiga (3) 1 yozish kerak (u majburiy ravishda yoki mikrokontroller yoqilganda 0 ga qayta o'rnatiladi).
Watchdog Timer dasturlash
Qo'riqchi taymer bilan ishlash buyruqlari:
#include - qo'riqchi taymer bilan ishlash uchun kutubxonani ulash
wdt_reset() - qo'riqlash taymerini qayta o'rnatish
wdt_enable() - qo'riqlash taymerini yoqish
wdt_disable() - qo'riqchi itni o'chirish taymer
Kuzatuvchi taymer bilan ishlash uchun birinchi navbatda " wdt.h " kutubxonasini ulashingiz kerak , bu kutubxona taymer bilan ishlash uchun barcha asosiy buyruqlarni tavsiflaydi. Namuna dasturi №1 qo'riqlash taymerini o'z ichiga oladi, u o'z navbatida har 4 soniyada mikrokontrollerni qayta o'rnatadi. 2-sonli misol dasturi yanada rivojlangan funksiyalarga ega bo'ladi: agar mikrokontroller javob berishni to'xtatsa, u qayta o'rnatiladi; agar u normal ishlayotgan bo'lsa, har 8 soniyada qo'riqchi taymeridan uzilish qabul qilinganda, qo'riqchi taymer qayta o'rnatiladi va vaqtni yana hisoblashni boshlaydi. Bu sizga butun vaqt davomida qurilmaning ishlashini kuzatish imkonini beradi.
№1 dasturga misol:
#include //standart kiritish-chiqarish kutubxonasini qo'shing
#include //qo'riqlash taymeri bilan ishlash uchun kutubxonani qo'shing
int main(void)
{
wdt_enable(WDTO_4S); //hozirgi taymerni 4 soniyadan so'ng asl holatini tiklash bilan yoqing
(1); // har qanday foydalanuvchi dasturi
}
№2 dasturga misol:
#include //standart kiritish-chiqarish kutubxonasini qo'shing
#include //qo'riqchi taymer bilan ishlash uchun kutubxonani qo'shing
#include //o'z ichiga oladi uzilishlar bilan ishlash kutubxonasi
ISR(WDT_vect) //qo'riqchi taymer uzilishlarini qayta ishlash uchun quyi dastur
{
wdt_reset(); //watchdog taymerini tiklash
WDTCSR = 1 << WDIE; //qo'riqlash taymerining uzilishlarini yoqish (qo'riqchi taymer qayta o'rnatilganda avtomatik ravishda o'chiriladi)
}
int main(void)
{
sei(); //global uzilishlarni yoqish
wdt_enable(WDTO_8S); // 4 soniyadan keyin asl holatini tiklash bilan kuzatuvchi taymerni yoqing
WDTCSR = 1 << WDIE; //watchdog taymer uzilishlarini yoqish
while(1); // har qanday foydalanuvchi dasturi
}
Wdt_enable() funktsiyasi parametrlari kuzatuv taymerining qachon tiklanishini aniqlaydi:
WDTO_15MS
WDTO_30MS
WDTO_60MS
WDTO_120MS
WDTO_250MS
WDTO_500MS
WDTO_1S
WDTO_2S
WDTO_4S
WDTO_8S
Mikrokontroller dasturlash:
|
| |