This shows you the differences between two versions of the page.
|
pm:lab:lab2-2023 [2026/03/08 12:10] irina.bradu [3. Exerciții] |
pm:lab:lab2-2023 [2026/03/09 10:53] (current) jan.vaduva [2.4. Lucrul cu Timer-ul] |
||
|---|---|---|---|
| Line 371: | Line 371: | ||
| { | { | ||
| TIMSK1 |= (1 << OCIE1A); | TIMSK1 |= (1 << OCIE1A); | ||
| + | // ... | ||
| } | } | ||
| int main() | int main() | ||
| { | { | ||
| - | sei(); // activăm primirea întreruperilor | ||
| init_timer1(); // apelăm funcția de inițializare | init_timer1(); // apelăm funcția de inițializare | ||
| + | sei(); // activăm primirea întreruperilor | ||
| // ... | // ... | ||
| } | } | ||
| Line 472: | Line 473: | ||
| Folosiți funcția ''uptime_ms()'' pentru a implementa un mini-scheduler cooperativ care execută mai multe taskuri periodice. Implementați în bucla principală un mecanism care verifică periodic momentul curent (''now = uptime_ms()'') și execută următoarele taskuri: | Folosiți funcția ''uptime_ms()'' pentru a implementa un mini-scheduler cooperativ care execută mai multe taskuri periodice. Implementați în bucla principală un mecanism care verifică periodic momentul curent (''now = uptime_ms()'') și execută următoarele taskuri: | ||
| - | * T1 – Heartbeat (periodă 100 ms) - Comută starea LED-ului albastru. | + | * T1 – Heartbeat (periodă 1000 ms) - Comută starea LED-ului albastru. |
| * T2 – Logger (periodă 500 ms) - Transmite pe USART mesajul: **t=<uptime_ms> ms** | * T2 – Logger (periodă 500 ms) - Transmite pe USART mesajul: **t=<uptime_ms> ms** | ||
| - | * T3 – Status (periodă 1000 ms) - Comută starea LED-ului roșu. | + | * T3 – Status (periodă 3000 ms) - Comută starea LED-ului roșu. |