This shows you the differences between two versions of the page.
pm:lab:lab2-2023 [2024/03/17 09:55] florin.stancu |
pm:lab:lab2-2023 [2024/03/18 09:08] (current) florin.stancu add #include <avr/interrupt.h> to timer ISR example |
||
---|---|---|---|
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.** | + | **Task 1.1** |
* 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 ''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ă. | ||
Line 425: | Line 426: | ||
* 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. | ||
+ | |||
+ | **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.** | **Task 2.** |