This shows you the differences between two versions of the page.
| pm:lab:lab1 [2020/02/29 12:17] ana.constantinescu | pm:lab:lab1 [2020/03/03 14:31] (current) daniel.berbece [5. Resurse] | ||
|---|---|---|---|
| Line 26: | Line 26: | ||
| Transmisia asincronă de date se face la nivel de **cadre**(frames), fiecare cadru fiind format din mai mulți biți, având formatul descris în figură. | Transmisia asincronă de date se face la nivel de **cadre**(frames), fiecare cadru fiind format din mai mulți biți, având formatul descris în figură. | ||
| - | {{ .:lab1:seriala.png | Transmisia serială }} | + | {{ .:lab1:uart_ctranca.png | Transmisia serială }} | 
| Line 101: | Line 101: | ||
| ''UBRRn'' este registrul care selectează **baud rate**-ul. 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. În tabelul următor găsiți valorile pentru frecvența de 16 Mhz. | ''UBRRn'' este registrul care selectează **baud rate**-ul. 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. În tabelul următor găsiți valorile pentru frecvența de 16 Mhz. | ||
| - | {{ .:lab1:baud_rate.png?nolink |}} | + | <note tip> | 
| + | Pentru valorile UBRR pentru 12MHz cautati valorile in acest {{https://cache.amobbs.com/bbs_upload782111/files_22/ourdev_508497.html | link}} | ||
| + | </note> | ||
| + | {{ pm:lab:lab1:pm-lab01-baudrate.png?nolink |}} | ||
| ==== 2.2 Exemplu de utilizare ==== | ==== 2.2 Exemplu de utilizare ==== | ||
| Line 107: | Line 110: | ||
| void USART0_init(unsigned int baud) { | void USART0_init(unsigned int baud) { | ||
| /* setează baud rate */ | /* setează baud rate */ | ||
| - | UBRR0H = (unsigned char)(baud>>8); | + | UBRR0 = baud; | 
| - | UBRR0L = (unsigned char)baud; | + | /* UBRR0 este un registru pe 16 biți, la nivel de compilator se vor face doua scrieri de 8 biti */ | 
| - | /* UBRR0 este un registru pe 16 biți | + | |
| - | Alternativ se poate scrie UBRR0 = baud, pentru că la nivel de compilator  | + | |
| - | se vor face două scrieri de 8 biți */ | + | |
| /* pornește transmițătorul */ | /* pornește transmițătorul */ | ||
| Line 342: | Line 342: | ||
| * secțiunea 19.11 este referința pentru registrele I/O | * secțiunea 19.11 este referința pentru registrele I/O | ||
| - | ** Task 0 **(1.5p) | + | ** Task 0 **(1p) | 
| Rulați exemplul pentru USART. Pentru configurările serialei, vedeți fisierul usart.c din schelet. | Rulați exemplul pentru USART. Pentru configurările serialei, vedeți fisierul usart.c din schelet. | ||
| **Task 1 **(3p) | **Task 1 **(3p) | ||
| - | Configurați USART0 cu următorii parametri: baud rate 19200, 8 biți de date, 1 bit de stop, paritate pară. Transmiteți către PC câte un mesaj pentru fiecare eveniment de apăsare/lăsare a unui buton (ex: se apasă PD6, se transmite “PD6 apăsat”, se lasă PD6, se transmite “PD6 lăsat”, câte o singură dată pe apăsare). | + | Configurați USART0 cu următorii parametri: baud rate 19200, 8 biți de date, 2 bit de stop, fara paritate. Transmiteți către PC câte un mesaj pentru fiecare eveniment de apăsare/lăsare a unui buton (ex: se apasă PD6, se transmite “PD6 apăsat”, se lasă PD6, se transmite “PD6 lăsat”, câte o singură dată pe apăsare). | 
| - | **Task 2 **(2.5p) | + | **Task 2 **(2p) | 
| Comandați prin serială generarea in cod Morse a numelui vostru, folosind buzzer-ul.  | Comandați prin serială generarea in cod Morse a numelui vostru, folosind buzzer-ul.  | ||
| <note> | <note> | ||
| Line 354: | Line 354: | ||
| </note> | </note> | ||
| - | **Task 3 **(1.5p) | + | **Task 3 **(1p) | 
| Rulați exemplul pentru LCD. | Rulați exemplul pentru LCD. | ||
| - | **Task 4** (2.5p) | + | **Task 4** (3p) | 
| Implementați funcțiile din bibliotecă: | Implementați funcțiile din bibliotecă: | ||
| * LCD_putCharAt  | * LCD_putCharAt  | ||
| Line 363: | Line 363: | ||
| Puteți folosi funcțiile LCD_writeInstr și LCD_writeData. | Puteți folosi funcțiile LCD_writeInstr și LCD_writeData. | ||
| - Utilizați funcțiile implementate pentru a afișa un mesaj pe prima linie a LCD-ului.  | - Utilizați funcțiile implementate pentru a afișa un mesaj pe prima linie a LCD-ului.  | ||
| + | - Folositi implementarea anterioara pentru a afisa un mesaj trimis pe USART. | ||
| <note > | <note > | ||
| Mesajul trebuie să poată fi deplasat la stânga cu butonul PB2 și la dreapta cu butonul PD6. Limitați deplasarea mesajului astfel încât acesta să nu iasă de pe ecran. | Mesajul trebuie să poată fi deplasat la stânga cu butonul PB2 și la dreapta cu butonul PD6. Limitați deplasarea mesajului astfel încât acesta să nu iasă de pe ecran. | ||
| </note> | </note> | ||
| - | - Folositi implementarea anterioara pentru a afisa un mesaj trimis pe USART. | ||
| <note tip> | <note tip> | ||
| Line 373: | Line 373: | ||
| - | **Task 3: **Bonus USART (1p) | + | **Task 5: **Bonus USART (1p) | 
| Configurați printf astfel încât să printeze direct pe USART0. Refaceți exercițiul 1 folosind printf. | Configurați printf astfel încât să printeze direct pe USART0. Refaceți exercițiul 1 folosind printf. | ||
| Line 413: | Line 413: | ||
| ===== 5. Resurse ===== | ===== 5. Resurse ===== | ||
| - | * {{.:lab1:lab1_skel.zip | Schelet laborator}} | + | * {{:pm:lab:lab1_skel2020.zip | Schelet laborator}} | 
| <hidden>  * {{.:lab1:lcd_schema.zip| Schemă simulare}} ({{.:lab1:lcd_schema_2012.zip| varianta 2012}}, cu ATmega16, pentru versiunile de Proteus vechi)</hidden> | <hidden>  * {{.:lab1:lcd_schema.zip| Schemă simulare}} ({{.:lab1:lcd_schema_2012.zip| varianta 2012}}, cu ATmega16, pentru versiunile de Proteus vechi)</hidden> | ||
| * {{.:lab1:hd44780_datasheet.pdf| Datasheet Hitachi 44780}} | * {{.:lab1:hd44780_datasheet.pdf| Datasheet Hitachi 44780}} | ||
| * {{:pm:doc8272.pdf | Datasheet ATmega324}} | * {{:pm:doc8272.pdf | Datasheet ATmega324}} | ||
| + | * {{https://cache.amobbs.com/bbs_upload782111/files_22/ourdev_508497.html | AVR Baud Rate Tables}} | ||
| <hidden>  * <html><a class="media mediafile mf_pdf" href="/wiki/pm/lab/lab1?do=export_pdf">PDF laborator</a></html></hidden> | <hidden>  * <html><a class="media mediafile mf_pdf" href="/wiki/pm/lab/lab1?do=export_pdf">PDF laborator</a></html></hidden> | ||
| * Responsabili: [[dorin_marian.ionita@cs.pub.ro | Dorin Ionita]] [[ Ana Dragan ]] | * Responsabili: [[dorin_marian.ionita@cs.pub.ro | Dorin Ionita]] [[ Ana Dragan ]] | ||