Differences

This shows you the differences between two versions of the page.

Link to this comparison view

patr:laboratoare:06 [2021/12/04 16:15]
alexandru.ionita99 [2. Instalarea FreeRTOS]
patr:laboratoare:06 [2022/01/09 14:27] (current)
alexandru.ionita99 [Laboratorul 06: Introducere Arduino]
Line 1: Line 1:
-====== Laboratorul 06Introducere Arduino ======+====== Laboratorul 06 Introducere Arduino ======
  
 ===== 1. Introducere ===== ===== 1. Introducere =====
  
-Pentru a lucra cu platforma Arudino, este necesar mediul de Dezvoltare Integrat (IDE) Arduino ​rulează într-o mașină virtuală Java. Pașii necesari instalării pe Windows sunt prezentați mai jos:+** INTRO ARDUINO DE COMPLETAT ** 
 + 
 +Pentru a lucra cu platforma Arudino, este necesar mediul de Dezvoltare Integrat (IDE) Arduino. Pașii necesari instalării pe Windows sunt prezentați mai jos:
 ===== 2. Instalarea Arduino IDE ===== ===== 2. Instalarea Arduino IDE =====
  
Line 27: Line 29:
 ==== Pasul 4: Rularea unui exemplu ==== ==== Pasul 4: Rularea unui exemplu ====
 Exemplul arată astfel: \\ Exemplul arată astfel: \\
-{{:​patr:​laboratoare:​lab1arduino:​4.png?​direct&​600|}} \\+{{:​patr:​laboratoare:​lab1arduino:​4.1.png?​direct&​600|}} \\
  
 După cum este specificat și în descriere, acest proiect va aprinde și va stinge LED-ul aflat pe placa Arudino. Acest LED este conectat la portul digital 13. După cum este specificat și în descriere, acest proiect va aprinde și va stinge LED-ul aflat pe placa Arudino. Acest LED este conectat la portul digital 13.
Line 47: Line 49:
 <note tip>**Ce este Serial Monitor?​**\\ Serial Monitor este o fereatră prin care putem vedea datele ce sunt transmise de la plăcuța Arudino. De asmenea, putem transmite valori sau alte inputs către Arudino. Pentru a accesa această fereastră, dați click pe lupa din colțul stânga sus sau folosiți tastele **CTRL + Shift + M** \\ {{:​patr:​laboratoare:​lab1arduino:​9.png?​direct&​500|}}</​note>​ <note tip>**Ce este Serial Monitor?​**\\ Serial Monitor este o fereatră prin care putem vedea datele ce sunt transmise de la plăcuța Arudino. De asmenea, putem transmite valori sau alte inputs către Arudino. Pentru a accesa această fereastră, dați click pe lupa din colțul stânga sus sau folosiți tastele **CTRL + Shift + M** \\ {{:​patr:​laboratoare:​lab1arduino:​9.png?​direct&​500|}}</​note>​
  
-Deschideți exemplul ** 04. Communication -> SerialEvent **. După cum este explicat și în descriere, datele ce ajung pe magistrala serială (în cazul nostru, cele trimise de pe PC) sunt puse într-un String, până la întâlnirea caracterului ​**\n**, moment în care șirul de caractere este trimis pe magistrală,​ către PC.+Deschideți exemplul ** 04. Communication -> SerialEvent **. După cum este explicat și în descriere, datele ce ajung pe magistrala serială (în cazul nostru, cele trimise de pe PC) sunt puse într-un String, până la întâlnirea caracterului ​//\n//, moment în care șirul de caractere este trimis pe magistrală,​ către PC.
  
 <note tip>​**setup() vs loop()**\\ <note tip>​**setup() vs loop()**\\
Line 60: Line 62:
  
 ===== 3. Instalarea FreeRTOS ===== ===== 3. Instalarea FreeRTOS =====
-În general, un sistem de operare controlează procesele și resursele hardware ale unui calculator, definind regulile care permit unui program să acceseze servicii și să interacționeze cu sistemul de calcul. \\ 
-Pentru a fi considerat //de timp real//, un sistem de operare trebuie să îndeplinească mai multe caracteristici,​ precum: 
-  * Respectarea limitelor de timp (hard și soft); 
-  * Utilizarea de algoritmi de planificare specializați și de priorități de execuție; 
-  * Asigurarea unui răspuns determinist la rularea succesivă a unei secțiuni de cod; 
-  * Utilizarea de mecanisme de comunicație între procese, multitasking,​ limitarea accesului mutual la resurse. 
  
-FreeRTOS reprezintă un kernel (doar baza unui sistem de operaredeoarece sistemele încorporate nu necesită toate caracteristicile unui OS generalizat),​ cu ajutorul căruia aplicațiile de timp real pot respecta limite de timp hardDe asemeneapoate fi utilizat conceptul de multitasking,​ unde schimbarea contextului de execuție pe un procesor cu un singur nucleu conduce la execuția cvasi-paralelă a mai multor secțiuni de cod din aplicațieFirul de execuție care are acces la resursele hardware este ales de către algoritmul de planificare,​ prin +În cadrul laboratorului următorvom detalia biblioteca FreeRTOS și funcționalitățile acesteiaPentru momenttrebuie să o instalăm
-asignarea de priorități și urmărirea perioadelor de timp în care un fir de execuție este suspendat\\+==== Pasul 1Library Manager ====
  
-FreeRTOS este open-source,​ ceea ce înseamnă că nu este necesară achiziționarea acestuia ​(după cum sugerează și numele) pentru utilizare în aplicații comercialeTotuși, există posibilitate achiziționării de garanții suplimentare din partea dezvoltatorului Real Time Engineers Ltd., +Fiind portat sub formă de bibliotecă, FreeRTOS pentru Arduino se instalează foarte ușor, accesând ** Library Manager ** (Tools -> Manage Libraries...). Căutați //​FreeRTOS// ​și instalați ultima versiuneTot din această fereastră puteți actualiza bibliotecaatunci când sunteți notificați despre noi variante disponibile. \\
-dacă situația din proiect o cere. Ca medii de dezvoltare compatibile,​ pot fi amintite familiile de microcontrolere ARM Cortex, Atmel SAM, Cypress PSoC, Microchip PIC etc. \\+
  
-Compatibilitatea cu unii dintre membrii familiei Arduino (Uno, Nano, Leonardo, Mega) vine tocmai din utilizarea microprocesoarelor amintite ulterior. În plus, kernel-ul a fost portat sub formă de bibliotecă,​ instalarea realizându-se din //Library Manager//. Trebuie specificat că toate funcțiile FreeRTOS pot fi utilizate pe Arduino, iar dintre acestea se pot aminti: +{{:​patr:​laboratoare:​lab1arduino:11.png?​direct&​600|}}
-  * Preempțiune pentru taskurile cu prioritate mai mare; +
-  * Asignarea și modificarea priorității taskurilor;​ +
-  * Mecanisme de notificare;​ +
-  * Cozi; +
-  * Semafoare și mutexuri; +
-  * Timere software.+
  
 +==== Pasul 2. Rularea unui exemplu cu taskuri ====
  
-Toate caracteristicile menționate anterior sunt utilizate cu ajutorul API-urilor specializate. Un Application Programming Interface (API) reprezintă un grup de funcții ce pot fi apelate, fiecare având un rezultat diferit. De exemplu, crearea semafoarelor și mutexurilor,​ ștergerea și +Primul ​exemplu pe care il vom rula poate fi accesat din ** File -> Examples -> FreeRTOS -> TaskStatus **\\
-modificarea acestora se realizează cu ajutorul Semaphore API. Toate aceste funcții sunt definite și prezentate detaliat în documentația FreeRTOS, disponibilă ​pe site-ul https://​www.freertos.org/​.+
  
 +După ce deschideți acest exemplu, urmăriți pas cu pas elementele din cod, pentru a înțelege modul de funcționare a FreeRTOS în Arduino.
  
-==== Pasul 1Library Manager ====+<note tip>​Observați funcția **void loop()**Spre deosebire de un program clasic Arduino, această funcție nu mai este necesară în FreeRTOS, întrucât toate instrucțiunile sunt scrise în **taskuri**. </​note>​
  
-Fiind portat sub formă de bibliotecă,​ FreeRTOS pentru Arduino se instalează foarte ușor, accesând ** Library Manager ** (Tools -> Manage Libraries...). Căutați //​FreeRTOS// ​și instalațultima versiuneTot din această fereastră puteți actualiza bibliotecaatunci când sunteți notificați despre noi variante disponibile\\+Așa cum ați observat, în acest proiect este exemplificat lucrul cu taskuri, dar și suspendarea șreluarea acestoraDupă ce încărcați proiectul pe placăutilizați Serial Monitor pentru a transmite literele //s// sau //r//. Veți vedea cum taskul de aprindere și stingere a LED-ului built-in este suspendat sau reluat
  
-{{:​patr:​laboratoare:​lab1arduino:​11.png?​direct&​600|}}+{{:​patr:​laboratoare:​lab1arduino:​12.png?​direct&​500|}} 
 + 
 +==== Pasul 3. Rularea unui exemplu cu un mutex ==== 
 + 
 +Ultimul exemplu din acest laborator este ** File -> Examples -> FreeRTOS -> Mutex **. \\
  
 +În acest exemplu, utilizăm un mutex pentru a accesa o resursă comună, în acest caz o variabilă globală.
  
patr/laboratoare/06.1638627335.txt.gz · Last modified: 2021/12/04 16:15 by alexandru.ionita99
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0