Differences

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

Link to this comparison view

pm:lab:lab2-2023 [2026/03/05 23:50]
irina.bradu
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 427: Line 428:
   * la fiecare întrerupere incrementați un contor global   * la fiecare întrerupere incrementați un contor global
  
-  * funcția uptime_ms() trebuie să returneze valoarea acestui contor+  * funcția ​''​uptime_ms()'' ​trebuie să returneze valoarea acestui contor
  
 <note tip> <note tip>
Line 450: Line 451:
 Configurați ​ **pin change interrupt** pentru butonul BTN1 (PB2). Configurați ​ **pin change interrupt** pentru butonul BTN1 (PB2).
  
-Implementați rutina de tratare a întreruperii ''​ISR(PCINT0_vect)''​. In ISR setați un flag atunci când butonul este apăsat. In ''​main()''​ detectați flag-ul și transmiteți pe USART mesajul: "​**PRESS**"​.+Implementați rutina de tratare a întreruperii ''​ISR(PCINT<​n>​_vect)''​. In ISR setați un flag atunci când butonul este apăsat. In ''​main()''​ detectați flag-ul și transmiteți pe USART mesajul: "​**PRESS**"​.
  
 **Task 2.2 Debouncing (1p)** **Task 2.2 Debouncing (1p)**
Line 462: Line 463:
 Folosiți buzzer-ul și butoanele: Folosiți buzzer-ul și butoanele:
  
-* BTN1 (''​PB2'''​) schimbă frecvența sunetului generat de buzzer. Frecvența poate avea 3 valori diferite (200 Hz, 400 Hz, 800 Hz). +  ​* BTN1 (''​PB2''​) schimbă frecvența sunetului generat de buzzer. Frecvența poate avea 3 valori diferite (200 Hz, 400 Hz, 800 Hz).  
- +  * BTN2 (''​PD6''​) este „gate”: buzzerul sună doar cât timp BTN2 este ținut apăsat.
-* BTN2 (''​PD6''​) este „gate”: buzzerul sună doar cât timp BTN2 este ținut apăsat.+
  
 (generați semnalul pentru buzzer folosind un timer și întreruperi) (generați semnalul pentru buzzer folosind un timer și întreruperi)
Line 471: Line 471:
 **Task 4. Mini scheduler (2p)** **Task 4. Mini scheduler (2p)**
  
-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. +
-  +
-  - T2 – Logger (periodă 500 ms) - Transmite pe USART mesajul: **t=<​uptime_ms>​ ms**+
  
-  - T3 – Status (periodă ​1000 ms) - Comută starea LED-ului roșu.+  ​*  T1 – Heartbeat (periodă 1000 ms) Comută starea LED-ului albastru. 
 +  *  T2 – Logger (periodă 500 ms) - Transmite pe USART mesajul: **t=<​uptime_ms>​ ms** 
 +  *  ​T3 – Status (periodă ​3000 ms) - Comută starea LED-ului roșu.
pm/lab/lab2-2023.1772747455.txt.gz · Last modified: 2026/03/05 23:50 by irina.bradu
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