Differences

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

Link to this comparison view

pm:lab:lab2-2023 [2024/03/17 13:08]
aungureanu1002
pm:lab:lab2-2023 [2025/03/16 22:36] (current)
andrei.batasev [3. Exerciții]
Line 362: Line 362:
  
 <file c > <file c >
 +#include <​avr/​interrupt.h>​
  
 ISR(TIMER1_COMPA_vect) ISR(TIMER1_COMPA_vect)
Line 418: Line 419:
 ===== 3. Exerciții ===== ===== 3. Exerciții =====
  
-**Task 1.1**+**Task 1. (2p)**
  
-  * Implementați o funcție asemănătoare cu ''​millis()''​ din biblioteca Arduino. Aceasta ar trebui să returneze intervalul de timp trecut de la pornirea (sau ultimul reset) al uC-ului. Configurați interfața USART0 cu aceeași parametri folosiți în laboratorul trecut și transmiteți către PC un mesaj ales de voi la intervale de 1 secundă.+  * Implementați o funcție asemănătoare cu ''​delay(int ms)''​ din biblioteca Arduino. Aceasta ar trebui să oprească execuția programului pentru numărul de milisecunde dat. Implementarea se va face folosind întreruperi.
  
-HINTS:+<note tip>
   * Frecvența de ceas a uC-ului este de 12MHz. Folosiți formulele prezentate anterior pentru a obține valorile potrivite pentru prescaler și registrul de comparație ale timer-ului ales astfel încât întreruperile generate de acesta să se declanșeze la intervalul de timp dorit.   * Frecvența de ceas a uC-ului este de 12MHz. Folosiți formulele prezentate anterior pentru a obține valorile potrivite pentru prescaler și registrul de comparație ale timer-ului ales astfel încât întreruperile generate de acesta să se declanșeze la intervalul de timp dorit.
   * Timer2 poate fi utilizat cu un număr mai mare de valori ale prescaler-ului.   * Timer2 poate fi utilizat cu un număr mai mare de valori ale prescaler-ului.
 +</​note>​
  
-**Task 1.2** 
-  * Pentru a putea citi în mod corect apăsări scurte ale butoanelor este necesară o metodă de debouncing. Cum ar putea fi rezolvată problema citirilor eronate cu ajutorul funcției ''​millis()''?​ Concepeți o funcție (în pseudocod) care să ilustreze soluția găsită. 
- 
-**Task 2.** 
- 
-  * Reluați exercițiul 3 din primul laborator și implementați-l folosind timer-e și întreruperi pentru citirea butoanelor și efectul de clipire al LED-urilor. 
- 
-<spoiler **Reminder Ex. 3, lab 0**> 
-  * La apăsarea succesivă a BTN1, LED-ul RGB trebuie să își schimbe culoarea (Red -> Green -> Blue -> Red) 
-  * BTN2 trebuie să controleze efectul de clipire al LED-ului aprins 
-</​spoiler>​ 
  
-**Task ​3.** +**Task ​2. (2p)**
-  * Folosiți butoanele ''​PD6''​ și ''​PB2''​ pentru a controla buzzer-ul:​ +
-    * Unul dintre butoane selectează frecvența sunetului generat de buzzer ​(dintre 3 valori, de ex. 100Hz, 200Hz, 300Hz) +
-    ​Buzzer-ul funcționează doar când mențineți al doilea buton apăsat +
-    ​Puteți folosi LED-ul RGB pentru a indica frecvența aleasă+
  
-**Task 4. (BONUS)**+  ​Citiți ''​PD6''​ folosind întreruperi și trimiteți un mesaj prin ''​USART0'' ​(configurată ca la laboratorul anterior).
  
-  ​Funcția implementată la primul exercițiu va acumula o anumită eroare din cauza faptului că frecvența de ceas nu poate fi divizată perfect+**Task 3(3p)** 
-    * Încercați să calculați după câte cicluri de funcționare ​timer-ului eroarea devine semnificativă ​(peste 1 ms). +  * Folosind buzzer-ul, transmiteți un cuvânt cu literele codificate in alfabetul Morse astfel: 
-    * Propuneți o metodă prin care se poate reduce această eroare +    * Un simbol (''​.''​ sau ''​-''​) va dura 500 ms, iar durata dintre simboluri va fi tot 500 ms. Pentru a diferenția între ''​.''​ ș''​-'',​ alterați frecvența buzzer-ului (de exemplu, 500 Hz versus 1500 Hz). 
-    * Încercați implementarea metodei propuse+    * La fiecare apăsare a butonului ''​PB2''​ transmiteți următoarea literă.
  
  
 +**Task 4. (3p)**
  
 +  * Implementați pentru exercițiile anterioare debouncing la buton folosind întreruperi.
  
pm/lab/lab2-2023.1710673694.txt.gz · Last modified: 2024/03/17 13:08 by aungureanu1002
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