Table of Contents

Diana DELIU (332CA), Alexandru CONSTANTIN (333CB)

Advanced Music Player

Autorii pot fi contactati la adresele:

Login pentru adresa

Login pentru adresa

Introducere

Advanced Music Player se traduce intr-un music shuffler, actionat printr-un buton, care reda muzica pe un difuzor PWM de 6cm.

Dupa conectarea la o sursa de curent, redarea unei melodii aleatorie incepe automat, iar in cazul in care se doreste o noua melodie, se apasa butonul. Niciodata nu stii ce-ti pregateste soarta. (I'm feeling lucky Music Player)

Proiectul se constituie din placuta de baza standard si o placuta suplimentara, cu materialele personalizate. In final, el trebuie sa redea muzica in format .wav, melodiile putand fi schimbate cu ajutorului butonului USER SWITCH. Se vor folosi un socket card SD, un difuzor si, bineinteles, un card SD care va contine melodii.

  • ne inspira muzica
  • ce poate fi mai actual decat un player audio?

Descriere generală

Pe langa componentele standard (folosite de toata lumea), am mai conectat un socket pentru card SD, un card SD (pentru stocarea melodiilor in format .wav) si un difuzor de 3cm pentru redarea melodiilor.

Am folosit SPI pentru comunicare seriala (Serial Peripheral Interface), un standard sincron ce opereaza in mod full-duplex (master-slave), unde master-ul initiaza transferul de date, iar slave-ul raspunde.

Comunicatia se intampla in felul urmator:

  • master-ul trimite un bit pe linia MOSI, iar slave-ul il citeste de pe aceeasi linie
  • slave-ul trimite un bit pe linia MISO, iar master-ul il citeste de pe aceeasi linie

SPI Control Register (SPCR)

  • SPE - SPI Enable - cand este 1, SPI este pornita
  • DORD - Data Order - cand este 1, bitul cel mai putin semnificativ este transmis primul
  • MSTR - Master/Slave Select - 1 inseamna ca interfata functioneaza in modul master si in modul slave, cand e 0
  • CPOL, CPHA, SPR1, SPR0 pentru linia SCLK

SPI Status Register (SPDR)

  • registrul din care citim datele pe care le-am primit sau in care scriem datele pe care vrem sa le trimitem

Hardware Design

Am folosit :

  • Condensator 100uF 35V1x buc
  • Rezistenta 3K3 x3 buc
  • Rezistenta 1K8 x3 buc
  • Dioda 1N4004 x2 buc
  • Bareta de pini x1 buc
  • Fire conectare x8 buc
  • Difuzor 3cm x1 buc
  • Socket card SD x1 buc

Software Design

Am lucrat in Programmer’s Notepad si am folosit WinAVR.

Headers

  • <avr/io.h>
  • <avr/interrupt.h>
  • <util/delay.h>
  • <avr/sleep.h>
  • <avr/wdt.h>
  • <string.h>
  • <stdio.h>
  • <stdlib.h>

Functii :

  • SPI_init()
  • SPI_receive()
  • SPI_transmit(BYTE data)
  • static void SPI_release () → comunicare
  • pentru trimitere comanda spre cardul SD, am folosit static BYTE send_command(BYTE cmd, DWORD arg)
  • pentru initializare disk – DSTATUS disk_initialize()
  • pentru citire sector partial DRESULT disk_readp(BYTE *buf, DWORD lba, WORD offset, WORD cnt)
  • pentru scriere sector partial – DRESULT disk_writep(const BYTE *buf, DOWRD sa)
  • ISR(PCINT2_vect)
  • ISR(TIMER0_COMPA_vect)
  • ISR(TIMER2_COMPA_vect)
  • void Timer0_init(void)
  • void Timer1_init(void)
  • void Timer2_init(void)
  • void IO_init(void)
  • DWORD load_header(void) – incarca header-ul unui fisier
  • UINT play (const char *path) – functie care reda un fisier audio
  • void getWavs(const char *dir) – citeste primele 2 fisiere si le memoreaza pentru a putea fi folosite

Surse:

  • sd.h
  • diskio.h
  • sd.c
  • diskio.h
  • integer.h
  • adv_music.c
  • Makefile
  • pff.c
  • pff.h

ARHIVA PROIECT

adv_music_player2014.zip