Laboratoriya mashg‘ulot № 4
Mavzu: Taymerlarni boshqarishni o’rganish
Ishdan maqsad: Arduino qurilmasi taymerni ulash orqali qanday texnik qulay imkoniyatlarni va xayotimizda texnik ish unumdorligini oshirish uchun Arduino qurilmasini o‘rganib chiqamiz.
Kerakli jixozlar:
Arduino plata qurilmasi.
Breadboard.
USB Kabel.
Kerakli ehtiyot qismlari.
Jixozlarning vazifalari:
8 bitli AVR chipidagi standart Arduino taxtalarida bir vaqtning o'zida bir nechta taymer mavjud. Atmega168 va Atmega328 chiplarida uchta Timer0, Timer1 va Timer2 taymerlari mavjud. Shuningdek, ularda nosozlikdan himoya qilish yoki dasturni qayta tiklash mexanizmi sifatida foydalanish mumkin bo'lgan qo'riqchi taymeri mavjud. Har bir taymerning ba'zi xususiyatlari.
Taymer0:
Taymer0 - bu 8 bitli taymer, demak uning hisoblash registrida 255 tagacha raqamlar saqlanishi mumkin (ya'ni, imzosiz bayt). Timer0 standart Arduino vaqtinchalik funktsiyalari (masalan, kechikish () va millis () tomonidan ishlatiladi, shuning uchun oqibatlari haqida qayg'ursangiz, uni chalkashtirmaslik yaxshiroqdir.
Dasturdan foydalanish:
Ushbu taymerlardan foydalanish uchun AVR-da sozlash registrlari mavjud. Taymerlarda juda ko'p bunday registrlar mavjud. Ulardan ikkitasi - taymer / hisoblagichni boshqarish registrlari sozlama parametrlarini o'z ichiga oladi va TCCRxA va TCCRxB deb nomlanadi, bu erda x - taymerning raqami (TCCR1A va TCCR1B va boshqalar). Har bir registr 8 bitdan iborat va har bir bit konfiguratsion o'zgaruvchini saqlaydi. Atmega328 ma'lumotlar jadvalidan olingan tafsilotlar:
C++ dasturlash muhitda dastur yozish
// avr-libc kutubxonasi o'z ichiga oladi
# o'z ichiga oladi
# o'z ichiga oladi
# aniq LEDPIN 13
bo'sh joyni o'rnatish ()
{
pinMode (LEDPIN, OUTPUT);
// Timer1-ni ishga tushirish
cli (); // global uzilishlarni o'chirish
TCCR1A = 0; // TCCR1A registrini 0 ga o'rnating
TCCR1B = 0;
// to'xtatib qo'yish Timer1 toshishini yoqish:
TIMSK1 = (1 << TOIE1);
// CS10 bitini sozlang, shunda taymer soat tezligida ishlaydi:
TCCR1B | = (1 << CS10);
sei (); // global uzilishlarni yoqish
}
____
bo'sh joyni o'rnatish ()
{
pinMode (LEDPIN, OUTPUT);
// Timer1-ni ishga tushirish
cli (); // global uzilishlarni o'chirish
TCCR1A = 0; // registrlarni 0 ga sozlang
TCCR1B = 0;
OCR1A = 15624; // match registrini o'rnatish
TCCR1B | = (1 << WGM12); // CTC rejimida yoqish
// Bitlarni CS10 va CS12 ni 1024 ga bo'lish nisbati bilan sozlang
TCCR1B | = (1 << CS10);
TCCR1B | = (1 << CS12);
TIMSK1 | = (1 << OCIE1A); // tasodif bilan to'sib qo'yishni yoqish
sei (); // global uzilishlarni yoqish
}
Xulosa
Men ushbu labaratoriya ishini bajarish davomida Arduino qurilmasi taymerni ulash orqali qanday texnik qulay imkoniyatlarni va xayotimizda texnik ish unumdorligini oshirish uchun Arduino qurilmasini o‘rganib chiqdim
Do'stlaringiz bilan baham: |