This shows you the differences between two versions of the page.
|
pm:prj2026:victor.stoica0203:andrei.popa0810 [2026/05/07 16:28] andrei.popa0810 |
pm:prj2026:victor.stoica0203:andrei.popa0810 [2026/05/12 09:05] (current) andrei.popa0810 [Pinout] |
||
|---|---|---|---|
| Line 9: | Line 9: | ||
| Sistemul este format din 2 plăcuțe cu microcontroler ATmega328P: | Sistemul este format din 2 plăcuțe cu microcontroler ATmega328P: | ||
| - | * plăcuța 1 joacă rolul unui GPU: va fi responsabilă să deseneze scena pe un ecran LCD într-un timp cât mai scurt. | + | * plăcuța 1 joacă rolul unui GPU: va fi responsabilă să deseneze scena pe un ecran LCD într-un timp cât mai scurt. |
| - | * plăcuța 2 joacă rolul unui CPU: va ține cont despre obiectele din scenă și despre cameră și va transmite informațiile relevante către "GPU" și va procesa inputul de la keypad (utilizator). | + | * plăcuța 2 joacă rolul unui CPU: va ține cont despre obiectele din scenă și despre cameră și va transmite informațiile relevante către "GPU" și va procesa inputul de la keypad (utilizator). |
| Motivul pentru care am ales acest proiect este interesul meu față de modul de funcționare a procesoarelor video și modul prin care acestea interacționează cu restul sistemului de calcul pentru a prezenta/desena informații pe un display. | Motivul pentru care am ales acest proiect este interesul meu față de modul de funcționare a procesoarelor video și modul prin care acestea interacționează cu restul sistemului de calcul pentru a prezenta/desena informații pe un display. | ||
| Line 16: | Line 16: | ||
| Scopul meu principal este de a învăța prin experiență cum se implementează un pipeline grafic (chiar dacă este un model software foarte limitat și simplificat) și totodată, ca scop secundar, să scriu de mână un "driver" simplu pentru ecranul LCD. | Scopul meu principal este de a învăța prin experiență cum se implementează un pipeline grafic (chiar dacă este un model software foarte limitat și simplificat) și totodată, ca scop secundar, să scriu de mână un "driver" simplu pentru ecranul LCD. | ||
| - | Ca utilitate pentru mine (și alții), vreau ca proiectul să servească ca un exemplu de compromisuri ce trebuie făcute pentru a obține un pipeline grafic 3D funcțional, dar și utilizabil (cu framerate decent) pe un sistem foarte limitat hardware. | + | Ca utilitate pentru mine (și alții), vreau ca proiectul să servească ca un exemplu de compromisuri ce trebuie făcute pentru a obține un pipeline grafic 3D funcțional, dar și utilizabil (cu framerate decent) pe un sistem hardware foarte limitat. |
| ===== Schemă bloc ===== | ===== Schemă bloc ===== | ||
| - | + | {{:pm:prj2026:victor.stoica0203:popa_andrei_333caschema_bloc.png|}} | |
| ===== Hardware Design ===== | ===== Hardware Design ===== | ||
| Line 35: | Line 34: | ||
| ==== Schema electrică ==== | ==== Schema electrică ==== | ||
| + | {{:pm:prj2026:victor.stoica0203:schematic_proiectpm_popa_andrei.png?600|}} | ||
| ==== Pinout ==== | ==== Pinout ==== | ||
| + | **Display LCD:** | ||
| + | ^Pin Display ^Pin Arduino ^Pin ATmega328p ^ | ||
| + | |BL |5V | | | ||
| + | |RST |5V | | | ||
| + | |DC |D10 |PB2 | | ||
| + | |CS |GND | | | ||
| + | |CLK |D13 |PB5 / SCK | | ||
| + | |DIN |D11 |PB3 / MOSI | | ||
| + | |GND |GND | | | ||
| + | |VCC |5V | | | ||
| + | |||
| + | Deoarece există doar un singur periferic conectat prin SPI, am conectat pinul de CS (chip select) la GND, astfel acesta este selectat continuu. | ||
| + | Pinul de RST (reset) este conectat la 5V (acesta funcționează în logică negată), deoarece nu am nevoie să resetez software display-ul. | ||
| + | |||
| + | **Keypad 4x4:** | ||
| + | ^Pin Keypad ^Pin Arduino ^PinATmega328p ^ | ||
| + | |1 (Column) |D6 |PD6 / OC0A | | ||
| + | |2 (Column) |D5 |PD5 / OC0B | | ||
| + | |3 (Column) |D9 |PB1 / OC1A | | ||
| + | |4 (Column) |D10 |PB2 / OC1B | | ||
| + | |5 (Row) |D2 |PD2 / PCINT18 | | ||
| + | |6 (Row) |D3 |PD3 / PCINT19 | | ||
| + | |7 (Row) |D4 |PD4 / PCINT20 | | ||
| + | |8 (ROW) |D7 |PD7 / PCINT23 | | ||
| + | |||
| + | Ținând doar câte o coloană a keypad-ului pe high la un moment dat, în funcție de care rând este pe low, obținem ce buton a fost apăsat. | ||
| + | Am ales pinii pentru coloană pentru a putea schimba eventual coloana activă prin timere. | ||
| + | Am ales pinii pentru rând pentru a primi întreruperi în momentul apăsării unui buton. | ||
| + | |||
| + | **ATmega328P:** | ||
| + | ^Pin Arduino (1) ^Pin ATmega(1) ^Pin Arduino(2) ^Pin ATmega (2) ^ | ||
| + | |D0 |PD0 / RXD |D1 |PD1 / TXD | | ||
| + | |D1 |PD1 / TXD |D0 |PD0 / RXD | | ||
| + | |||
| + | Pinii aleși sunt pinii pentru USART și sunt legați RX <-> TX. | ||
| ===== Software Design ===== | ===== Software Design ===== | ||