Differences

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

Link to this comparison view

patr:laboratoare:06 [2021/12/04 16:11]
alexandru.ionita99
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 59: Line 61:
 {{:​patr:​laboratoare:​lab1arduino:​10.png?​direct&​600|}} {{:​patr:​laboratoare:​lab1arduino:​10.png?​direct&​600|}}
  
-===== 2. Instalarea FreeRTOS ===== +===== 3. Instalarea FreeRTOS ===== 
-În general, un sistem de operare controlează procesele și resursele hardware ale unui calculatordefinind 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: +În cadrul laboratorului următorvom detalia biblioteca FreeRTOS ​și funcționalitățile acesteia. Pentru ​moment, trebuie să o instalăm. 
-  * Respectarea limitelor ​de timp (hard și soft); +==== Pasul 1. Library Manager ==== 
-  ​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; +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 versiune. Tot din această fereastră puteți actualiza biblioteca, atunci când sunteți notificați despre noi variante disponibile. \\ 
-  * Utilizarea de mecanisme de comunicație între procese, multitasking,​ limitarea accesului mutual la resurse.+ 
 +{{:​patr:​laboratoare:​lab1arduino:​11.png?​direct&​600|}} 
 + 
 +==== Pasul 2. Rularea ​unui exemplu cu taskuri ==== 
 + 
 +Primul exemplu pe care il vom rula poate fi accesat din ** File -> Examples -> FreeRTOS -> TaskStatus **. \\ 
 + 
 +După ce deschideți acest exemplu, urmăriți pas cu pas elementele din cod, pentru ​înțelege modul de funcționare a FreeRTOS în Arduino.
  
-FreeRTOS reprezintă un kernel ​(doar baza unui sistem de operare, deoarece sistemele încorporate nu necesită toate caracteristicile unui OS generalizat), cu ajutorul căruia aplicațiile de timp real pot respecta limite de timp hardDe asemenea, poate fi utilizat conceptul ​de multitaskingunde 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ție. Firul de execuție care are acces la resursele hardware ​este ales de către algoritmul de planificareprin +<note tip>​Observați funcția **void loop()**Spre deosebire ​de un program clasic Arduinoaceastă funcție nu mai este necesară în FreeRTOSîntrucât toate instrucțiunile sunt scrise ​în **taskuri**</​note>​
-asignarea de priorități și urmărirea perioadelor de timp în care un fir de execuție este suspendat\\+
  
-FreeRTOS ​este open-sourceceea ce înseamnă că nu este necesară achiziționarea acestuia (după cum sugerează ​și numele) pentru utilizare în aplicații comerciale. Totuși, există posibilitate achiziționării de garanții suplimentare din partea dezvoltatorului Real Time Engineers Ltd.+Așa cum ați observat, în acest proiect ​este exemplificat lucrul cu taskuridar și suspendarea ​și reluarea acestora. După 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
-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:12.png?​direct&​500|}}
-  * Preempțiune pentru taskurile cu prioritate mai mare; +
-  * Asignarea și modificarea priorității taskurilor;​ +
-  * Mecanisme de notificare;​ +
-  * Cozi; +
-  * Semafoare și mutexuri; +
-  * Timere software.+
  
 +==== Pasul 3. Rularea unui exemplu cu un mutex ====
  
-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 +Ultimul exemplu din acest laborator este ** File -> Examples -> FreeRTOS -> Mutex **\\
-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/​.+
  
 +În acest exemplu, utilizăm un mutex pentru a accesa o resursă comună, în acest caz o variabilă globală.
  
patr/laboratoare/06.1638627116.txt.gz · Last modified: 2021/12/04 16:11 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