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:53]
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 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 473: 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ă ​3000 ms) - Comută starea LED-ului roșu.
- +
-  ​T3 – Status (periodă ​1000 ms) - Comută starea LED-ului roșu.+
pm/lab/lab2-2023.1772747613.txt.gz · Last modified: 2026/03/05 23:53 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