This shows you the differences between two versions of the page.
|
pm:prj2026:florin.stancu:cosmin.strugariu [2026/05/26 00:28] cosmin.strugariu [Hardware Design] |
pm:prj2026:florin.stancu:cosmin.strugariu [2026/05/26 01:23] (current) cosmin.strugariu [Cod sursă și alte resurse ce trebuie să existe pe GitHub] |
||
|---|---|---|---|
| Line 91: | Line 91: | ||
| - | ===== Software Design ===== | + | ==== Software Design ==== |
| - | <note tip>Descrierea codului aplicației (firmware): | + | Proiectul a fost dezvoltat folosind mediul **PlatformIO**. |
| - | * mediu de dezvoltare (if any) (e.g. AVR Studio, PlatformIO) | + | |
| - | * biblioteci și surse 3rd-party folosite (e.g. Procyon AVRlib) | + | |
| - | * algoritmi și structuri pe care plănuiți să le implementați | + | |
| - | * (etapa 3) surse și funcții implementate | + | |
| - | </note> | + | |
| - | ===== Rezultate Obținute ===== | + | Arhitectura aplicației este de tip **Interrupt-Driven** (bazată pe întreruperi) și folosește **Mașini de Stări (State Machines)** pentru logica principală. Sistemul este împărțit în următoarele module cheie: |
| - | <note tip>Care au fost rezultatele obținute în urma realizării proiectului vostru.</note> | + | * **Managementul Timpului:** **Timer0** este configurat să genereze o întrerupere la exact 1 milisecundă. Aici se incrementează un contor global (''systicks''), folosit ulterior pentru calculul BPM-ului din sequencer și pentru debouncing-ul clapelor. |
| + | * **Generarea Audio (Hardware PWM):** Sunetul este generat folosind **Timer1** setat în modul Fast PWM. Frecvența notelor este calculată dinamic pe baza butoanelor apăsate, ajustând regiștrii ''ICR1'' și ''OCR1A'' pentru a obține nota dorită direct pe pinul de output, fără intervenția procesorului. | ||
| + | * **Citirea Senzorilor (ADC non-blocant):** Conversia analog-digitală pentru butoane și potențiometre se face prin întreruperi (''ADC_vect''). ADC-ul scanează ciclic canalele și salvează valorile într-un buffer, lăsând bucla principală (''main'') liberă să proceseze doar logica. | ||
| + | * **Logica Sintetizatorului și Sequencer-ului:** | ||
| + | * **Clapele:** Fiecare "canal" analogic trece prin stările ''IDLE'', ''SETTLING'' și ''PLAYING'' pentru a elimina zgomotul (noise floor) și a stabiliza nota. | ||
| + | * **Sequencer-ul:** Implementează stările ''FREE_PLAY'', ''RECORDING'' și ''PLAYBACK''. Permite înregistrarea unei secvențe de note într-un array și redarea acestora pe baza unui BPM ajustabil în timp real printr-un potențiometru. | ||
| - | ===== Concluzii ===== | + | Codul sursă complet și detaliile de implementare pot fi găsite pe repository-ul de GitHub asociat proiectului. |
| - | ===== Cod sursă și alte resurse ce trebuie să existe pe GitHub ===== | + | ===== Cod sursă ===== |
| - | Codul sursă trebuie urcat într-un repo public, recomandăm GitHub. | + | https://github.com/strugariu/proiect-pm/tree/main |
| - | <note important>Structurați-vă pagina de GitHub a proiectului pe mai multe directoare. De exemplu, creați un director numit **src** în care țineți tot codul sursă. Alt director **hardware** în care să țineți schemele și diagramele și alt director numit **images** în care să puneți toate fotografiile cu proiectul vostru, pe care le link-ați în README.md | ||
| - | Pagina de GitHub a proiectului vostru trebuie să conțină **toate** fișierele relevante pentru realizarea proiectului vostru. Dacă există resurse externe pe care le-ați folosit, vă rugăm să le link-ați în README.md</note> | ||
| - | <note important>Sunteți încurajați să filmați un demo cu proiectul vostru și să îl încărcați pe YouTube. Faceți embed la video în README.md și în pagina de wiki OCW a proiectului vostru.</note> | ||
| - | ===== Jurnal ===== | ||
| - | <note tip>Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.</note> | ||
| ===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
| - | <note>Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** și **Resurse Hardware**.</note> | + | [[https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf]] |
| + | |||
| + | [[https://www.ti.com/lit/ds/symlink/lm358.pdf]] | ||
| + | |||
| + | [[https://www.ti.com/lit/ds/symlink/tl072.pdf]] | ||
| + | |||
| + | [[https://www.ti.com/lit/ds/symlink/ua78.pdf?ts=1779730004215]] | ||
| + | |||
| + | [[https://analogoutputblog.wordpress.com/2022/05/04/how-to-vactrol/]] | ||
| + | |||
| + | [[https://www.ti.com/lit/an/sboa226/sboa226.pdf?ts=1779690038815]] | ||
| + | |||
| + | [[https://synthnerd.wordpress.com/2016/04/06/envelope-circuits-a-simple-ar-design-using-op-amps/]] | ||
| + | |||
| + | Placa de PM | ||