Muxammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti samarqand filiali



Download 0,58 Mb.
Sana20.06.2022
Hajmi0,58 Mb.
#683580
Bog'liq
1-amaliy ish


MUXAMMAD AL-XORAZMIY NOMIDAGI
TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
SAMARQAND FILIALI

KOMPYUTER TIZIMLARI KAFEDRASI

5330500 - Kompyuter injiniringi (“Dasturiy injiniringi”)
bakalavriatura ta’lim yo’nalishi

Real vaqt tizimlari” fanidan
Amaliy ish 1
Bajardi: ____________ Kenjaboyev Q


Guruh: ___________ 210-18DI


Qabul qildi: ___________ XUJAYAROV I. SH
Ishni bahosi: ___________ ball


Samarqand – 2022

Mavzu: FreeRTOS da vazifalar yaratish


O'rnatilgan qurilmalarda mavjud bo'lgan OT RTOS (Real-Time Operating System) deb ataladi. O'rnatilgan qurilmalarda real vaqtda vazifalar juda muhim, bu erda vaqt juda muhim rol o'ynaydi. Haqiqiy vaqtdagi vazifalar vaqtni deterministik bo'lib, har qanday hodisaga javob vaqti har doim doimiy bo'lishini anglatadi, shuning uchun har qanday muayyan hodisa belgilangan vaqtda sodir bo'lishini kafolatlash mumkin. RTOS juda aniq vaqt va yuqori darajadagi ishonchlilik bilan ilovalarni ishlatish uchun mo'ljallangan. RTOS shuningdek, bitta yadro bilan ko'p vazifalarni bajarishda yordam beradi.
RTOS qanday ishlaydi?
RTOS bilan ishlashni boshlashdan oldin, keling, vazifa nima ekanligini ko'rib chiqaylik. Vazifa - protsessorda bajarilishi rejalashtirilgan kod qismidir. Shunday qilib, agar siz biron bir vazifani bajarmoqchi bo'lsangiz, u yadro kechikishi yoki uzilishlar yordamida rejalashtirilishi kerak. Bu ish yadroda mavjud bo'lgan Scheduler tomonidan amalga oshiriladi. Bir yadroli protsessorda rejalashtiruvchi vazifalarni ma'lum bir vaqt oralig'ida bajarishga yordam beradi, lekin bir vaqtning o'zida turli xil vazifalar bajarilayotganga o'xshaydi. Har bir vazifa unga berilgan ustuvorlikka muvofiq amalga oshiriladi.

Keling, RTOS yadrosida nima sodir bo'lishini ko'rib chiqaylik, agar biz bir soniyalik interval bilan LED miltillashi uchun vazifa yaratmoqchi bo'lsak va bu vazifani eng yuqori ustuvorlikka qo'ysak.
LED vazifasidan tashqari, yadro tomonidan yaratilgan yana bir vazifa bo'ladi, u bo'sh ish sifatida tanilgan. Ishlamaydigan vazifa bajarish uchun hech qanday vazifa mavjud bo'lmaganda yaratiladi. Bu vazifa har doim eng past ustuvorlikda, ya'ni 0 ustuvorlikda ishlaydi. Yuqorida keltirilgan vaqt grafigini tahlil qiladigan bo'lsak, bajarish LED topshirig'i bilan boshlanishi va u ma'lum vaqt davomida, keyin qolgan vaqt davomida ishlamay qolgan vazifa belgining uzilishi sodir bo'lguncha ishlaydi. Keyin yadro vazifaning ustuvorligi va LED vazifasining umumiy o'tgan vaqtiga qarab qaysi vazifani bajarish kerakligini hal qiladi. 1 soniya tugagach, yadro bajarilish uchun boshqariladigan vazifani yana tanlaydi, chunki u bo'sh turgan vazifadan yuqoriroq ustuvorlikka ega, shuningdek, LED vazifasi bo'sh turgan vazifani oldini oladi, deb aytishimiz mumkin. Agar bir xil ustuvorlikka ega bo'lgan ikkitadan ortiq vazifalar mavjud bo'lsa, ular ma'lum vaqt davomida aylanma rejimda ishlaydi.
Arduino FreeRTOS kutubxonasini o'rnatish
1. Arduino IDE-ni oching va Sketch -> Include Library -> Manage Library-ga o'ting. FreeRTOS-ni qidiring va quyida ko'rsatilgandek kutubxonani o'rnating.

Arduino FreeRTOS kutubxonasi

Siz kutubxonani github'dan yuklab olishingiz va Sketch-> Include Library -> Add .zip faylida .zip faylni qo'shishingiz mumkin.

Endi Arduino IDE-ni qayta ishga tushiring. Ushbu kutubxona ba'zi misol kodlarini taqdim etadi, shuningdek, quyida ko'rsatilganidek, Fayl -> Misollar -> FreeRTOS bo'limida topish mumkin.
Bu erda biz ishni tushunish uchun kodni noldan yozamiz, keyinroq siz misol kodlarini tekshirishingiz va ulardan foydalanishingiz mumkin.

Elektr sxemasi
Quyida Arduino-da FreeRTOS-dan foydalanib miltillovchi LED vazifasini yaratish sxemasi keltirilgan:


Dastur kodi:
#include


void TaskBlink1( void *pvParameters );


void TaskBlink2( void *pvParameters );


void Taskprint( void *pvParameters );


void setup() {


// initialize serial communication at 9600 bits per second:


Serial.begin(9600);


xTaskCreate(


TaskBlink1


, "task1"


, 128


, NULL


, 1


, NULL );


xTaskCreate(


TaskBlink2


, "task2"


, 128


, NULL


, 1


, NULL );


xTaskCreate(


Taskprint


, "task3"


, 128


, NULL


, 1


, NULL );


vTaskStartScheduler();


}


void loop()


{


}


void TaskBlink1(void *pvParameters) {


pinMode(8, OUTPUT);


while(1)


{


Serial.println("Task1");


digitalWrite(8, HIGH);


vTaskDelay( 200 / portTICK_PERIOD_MS ); 


digitalWrite(8, LOW);


vTaskDelay( 200 / portTICK_PERIOD_MS ); 


}


}


void TaskBlink2(void *pvParameters)


{


pinMode(7, OUTPUT);


while(1)


{


Serial.println("Task2");


digitalWrite(7, HIGH);


vTaskDelay( 300 / portTICK_PERIOD_MS ); 


digitalWrite(7, LOW);


vTaskDelay( 300 / portTICK_PERIOD_MS ); 


}


}


void Taskprint(void *pvParameters) {


int counter = 0;


while(1)


{


counter++;


Serial.println(counter); 


vTaskDelay(500 / portTICK_PERIOD_MS); }


}

Download 0,58 Mb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish