This shows you the differences between two versions of the page.
pm:lab:lab3-2023-2024 [2025/03/23 22:30] dan.tudose [3. Exerciții] |
pm:lab:lab3-2023-2024 [2025/03/23 22:35] (current) dan.tudose [3. Exerciții] |
||
---|---|---|---|
Line 124: | Line 124: | ||
===== 3. Exerciții ===== | ===== 3. Exerciții ===== | ||
- | Descărcați schelet codului și analizați-l: | + | Descărcați schelet codului și analizați-l: {{:pm:lab:lab3-skel.zip|schelet}} |
Ce timer calculează numărul de systick-uri? | Ce timer calculează numărul de systick-uri? | ||
Line 137: | Line 137: | ||
* Folosind întreruperi (cu debouncing), configurați butoanele PB2 și PD6 pentru a regla intensitatea LED-urilor roșu și albastru. | * Folosind întreruperi (cu debouncing), configurați butoanele PB2 și PD6 pentru a regla intensitatea LED-urilor roșu și albastru. | ||
- | + | * Inițial, ambele LED-uri pornesc cu un factor de umplere de 0%. | |
- | Inițial, ambele LED-uri pornesc cu un factor de umplere de 0%. | + | * La fiecare apăsare a butonului PB2, LED-ul roșu își crește factorul de umplere cu 25%. |
- | + | * La fiecare apăsare a butonului PD6, LED-ul albastru își crește factorul de umplere cu 25%. | |
- | La fiecare apăsare a butonului PB2, LED-ul roșu își crește factorul de umplere cu 25%. | + | * Factorul de umplere va evolua astfel: 0% → 25% → 50% → 75% → 100% → revenire la 0%. |
- | + | ||
- | La fiecare apăsare a butonului PD6, LED-ul albastru își crește factorul de umplere cu 25%. | + | |
- | + | ||
- | Factorul de umplere va evolua astfel: 0% → 25% → 50% → 75% → 100% → revenire la 0%. | + | |
* Deoarece timerul 1 este folosit pentru numărarea milisecundelor (systicks), acesta nu poate fi configurat în Fast PWM. Vom învăța să implementăm PWM manual folosind întreruperi: | * Deoarece timerul 1 este folosit pentru numărarea milisecundelor (systicks), acesta nu poate fi configurat în Fast PWM. Vom învăța să implementăm PWM manual folosind întreruperi: | ||
* Timerul 1 are două comparatoare; folosiți comparatorul B (COMPB) pentru a genera o întrerupere (TIMER1_COMPB) la o valoare între 0 și 1500 (valoarea medie pentru 50% fiind 750). | * Timerul 1 are două comparatoare; folosiți comparatorul B (COMPB) pentru a genera o întrerupere (TIMER1_COMPB) la o valoare între 0 și 1500 (valoarea medie pentru 50% fiind 750). | ||
Line 152: | Line 147: | ||
**Task 3 (2 puncte):** | **Task 3 (2 puncte):** | ||
- | Redați melodia din scheletul de laborator folosind speaker-ul conectat la PD4. | + | * Redați melodia din scheletul de laborator folosind speaker-ul conectat la PD4. |
- | Nu se poate folosi timerul pentru că acesta e folosit la număratul systick-urilor. | + | * Nu se poate folosi timerul pentru că acesta e folosit la număratul systick-urilor. |
- | Reconfigurați timerul 0 pentru a fi folosit în modul CTC și schimbați valoarea pinului PD4 în cadrul întreruperii COMPA | + | * Reconfigurați timerul 0 pentru a fi folosit în modul CTC și schimbați valoarea pinului PD4 în cadrul întreruperii COMPA |
- | Folosiți vectorii predefini: | + | * Folosiți vectorii predefiniți: |
- | + | * surprise_notes: note cu frecvențele (în Hertz) corespunzătoare. | |
- | + | * durations: duratele fiecărei note. | |
- | surprise_notes: note cu frecvențele (în Hertz) corespunzătoare. | + | * La fiecare notă, frecvența va fi setată folosind registrul OCR0A |
- | durations: duratele fiecărei note. | + | **Bonus (1 punct):** |
- | La fiecare notă, frecvența va fi setată folosind registrul OCR0A | + | * Redați melodia cu o viteză cu 25% mai mare decât cea inițială. |
- | Bonus (1 punct): | + | |
- | Redați melodia cu o viteză cu 25% mai mare decât cea inițială. | + | |
===== 4. Linkuri utile ===== | ===== 4. Linkuri utile ===== | ||
Line 175: | Line 167: | ||
===== 5. Responsabili laborator ===== | ===== 5. Responsabili laborator ===== | ||
- | * [[florin.stancu@upb.ro|Stancu Florin]] | + | * Iancu Ivasciuc |
- | * [[dicu.teodor@gmail.com|Teodor Dicu]] | + | * Andrei Zamfir |