Differences

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

Link to this comparison view

pm:lab:lab1-2023 [2024/03/11 18:48]
dan.tudose [3.1 Registre]
pm:lab:lab1-2023 [2025/03/11 19:32] (current)
cezar.zlatea [4. Exerciții]
Line 77: Line 77:
  
 <note warning>​Pentru ca două dispozitive,​ în cazul nostru PC-ul și placa de laborator, să poată comunica între ele prin USART în mod asincron, trebuie configurate **identic**. Dacă placa este configurată cu baud rate 115200, 9 biți de date, 1 bit de stop și fără paritate atunci PC-ul trebuie configurat **exact la fel** pentru a comunica.</​note>​ <note warning>​Pentru ca două dispozitive,​ în cazul nostru PC-ul și placa de laborator, să poată comunica între ele prin USART în mod asincron, trebuie configurate **identic**. Dacă placa este configurată cu baud rate 115200, 9 biți de date, 1 bit de stop și fără paritate atunci PC-ul trebuie configurat **exact la fel** pentru a comunica.</​note>​
 +
 +<note tip> **Video explicativ** (~10 min): [[https://​www.ti.com/​video/​6313217959112|UART protocol and error overview]] </​note>​
  
 ==== 3.1 Registre ==== ==== 3.1 Registre ====
Line 141: Line 143:
 ''​UBRRn''​ este registrul care selectează **baud rate**-ul și are 12 biți. Primii 4 se află în ''​UBRRnH'',​ ceilalți 8 în ''​UBRRnL''​. Valoarea pe care o scriem în ''​UBRRn''​ depinde de frecvența procesorului și de baud rate-ul dorit. ​ ''​UBRRn''​ este registrul care selectează **baud rate**-ul și are 12 biți. Primii 4 se află în ''​UBRRnH'',​ ceilalți 8 în ''​UBRRnL''​. Valoarea pe care o scriem în ''​UBRRn''​ depinde de frecvența procesorului și de baud rate-ul dorit. ​
  
-Tabelul de mai jos este folosit pentru ceasuri de 8Mhz, 11.0592MHz și 14.7456MHz. În cazul plăcii noastre, ceasul este de 12MHz și putem căuta valoarea pentru baud rate [[https://​cache.amobbs.com/​bbs_upload782111/​files_22/​ourdev_508497.html|aici]],​ sau o putem calcula folosind formula: **(F_CPU/​(UART_BAUD_RATE*16)-1)** +Tabelul de mai jos este folosit pentru ceasuri de 8Mhz, 11.0592MHz și 14.7456MHz. În cazul plăcii noastre, ceasul este de 12MHz și putem căuta valoarea pentru baud rate [[https://​cache.amobbs.com/​bbs_upload782111/​files_22/​ourdev_508497.html|aici]],​ sau o putem calcula folosind formula: **(F_CPU/​(UART_BAUD_RATE*16)-1)**, unde F_CPU este frecvența de ceas iar UART_BAUD_RATE este ales de noi (ex. 4800, 9600, 14400).
-Unde F_CPU este frecvența de ceas iar UART_BAUD_RATE este ales de noi (ex. 4800, 9600, 14400).+
  
 {{ pm:​lab:​brate324.png?​nolink |Tabel baud rate}} {{ pm:​lab:​brate324.png?​nolink |Tabel baud rate}}
Line 197: Line 198:
 {{:​pm:​lab:​lab1-usart.zip|Schelet}} {{:​pm:​lab:​lab1-usart.zip|Schelet}}
  
-**Task 1**+**Task 1 (3p)**
  
-Folosind scheletul de laborator configurează USART0 cu următorii parametri : baud rate 28800, 8 biți de date, bit de stop, fără ​paritate. Transmiteți către PC mesajul “Butonul 1 a fost apasat” dacă butonul 1 (PB2) este apăsat.+Folosind scheletul de laborator configurează USART0 cu următorii parametri: baud rate 19200, 8 biți de date, bit de stop, cu verificare de paritate. Transmiteți către PC mesajul “Butonul 1 a fost apasat” dacă butonul 1 (PB2) este apăsat.
  
 <note warning> <note warning>
Line 212: Line 213:
 Pentru a preciza baud rate-ul consolei seriale din VSCode cu PlatformIO, folosiți următoarea variabilă din ''​platformio.ini'':​ Pentru a preciza baud rate-ul consolei seriale din VSCode cu PlatformIO, folosiți următoarea variabilă din ''​platformio.ini'':​
 <​code>​ <​code>​
-monitor_speed = 28800+monitor_speed = 19200 
 +</​code>​ 
 +Pentru a vedea mesajul scris de la tastatura in serial monitor puteti adauga: 
 +<​code>​ 
 +monitor_echo = true
 </​code>​ </​code>​
 </​note>​ </​note>​
  
-**Task 2**+**Task 2 (3p)**
  
 Folosind scheletul de laborator, implementează o nouă funcție USART_exec(unsigned char command) care să accepte următoarele comenzi venite pe USART: Folosind scheletul de laborator, implementează o nouă funcție USART_exec(unsigned char command) care să accepte următoarele comenzi venite pe USART:
Line 229: Line 234:
   * Blue – PB3   * Blue – PB3
  
-**Task 3**+**Task 3 (4p)**
  
-Trimiteți numele ​vostru ​prin interfața serială. Folosind “morse_alphabet” din scheletul de laborator și buzzerul, ​generati ​codul Morse aferent acestuia.+Trimiteți numele ​distribuției voastre preferate de Linux prin interfața serială. Folosind “morse_alphabet” din scheletul de laborator și buzzerul, ​generați ​codul Morse aferent acestuia.
  
-**Bonus**+**Bonus ​(1p)**
  
 Implementează un semafor controlat pe USART. Folosește ledul RGB de la Task-ul 1. Culoarea led-ului va fi în permanență roșie, până când mesajul "​pieton"​ va fi primit pe USART. Când mesajul este primit, se va seta culoarea galbenă pentru 2 secunde, după aceasta culoarea verde pentru 5 secunde, revenindu-se la culoarea roșie până la primirea unui mesaj nou. În cazul în care se va primi un mesaj diferit de "​pieton",​ se va trimite pe USART mesajul "​cerere incorecta"​. În timpul execuției comenzii de schimbare a culorilor, mesajele pe USART vor fi ignorate. Implementează un semafor controlat pe USART. Folosește ledul RGB de la Task-ul 1. Culoarea led-ului va fi în permanență roșie, până când mesajul "​pieton"​ va fi primit pe USART. Când mesajul este primit, se va seta culoarea galbenă pentru 2 secunde, după aceasta culoarea verde pentru 5 secunde, revenindu-se la culoarea roșie până la primirea unui mesaj nou. În cazul în care se va primi un mesaj diferit de "​pieton",​ se va trimite pe USART mesajul "​cerere incorecta"​. În timpul execuției comenzii de schimbare a culorilor, mesajele pe USART vor fi ignorate.
pm/lab/lab1-2023.1710175692.txt.gz · Last modified: 2024/03/11 18:48 by dan.tudose
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