Laboratorium Układów Mikroprocesorowych |
||||||
Rok akademicki |
Termin |
Rodzaj studiów |
Kierunek |
Prowadzący |
Grupa |
Sekcja |
2008/2009 |
Czwartek 18:00-21:00 |
wieczorowe |
INF |
GB |
2 |
1 |
Sprawozdanie z ćwiczenia numer 18-19
Data wykonania ćwiczenia: 2008-10-30
Temat ćwiczenia:
Procesory sygnałowe
Skład podsekcji: |
Rafał Pacan |
Wojciech Szymoszek Robert Uszok Ireneusz Zydroń |
|
|
|
|
|
|
|
|
1. TEMAT ĆWICZENIA
Tematem ćwiczenia było zaprojektowanie i napisanie programu generującego częstotliwości o zadanym przebiegu oraz nałożenie na ten przebieg obwiedni.
Wykres funkcji częstotliwości. Obwiednia
2. ROZWIĄZANIE PROBLEMU
Kod programu:
void Process_Data(void)
{
static TABLICA[1000];
static TABLICA2[1000];
static int i=0; //zmienna statyczna - licznik wywołań przerwania
int ampl = 200000; //amplituda
int nuta = 1000*48 ; //czas trwania 1 nuty w taktach = ([ms]*48)
int p; //wyliczana wartość próbki
int tab_cz[8]; //odgrywane częstotliwości
tab_cz[0] = 100;
tab_cz[1] = 200;
tab_cz[2] = 400;
tab_cz[3] = 600;
tab_cz[4] = 800;
tab_cz[5] = 1000;
tab_cz[6] = 2000;
tab_cz[7] = 3000;
//Ustawienie częstotliwości
int cz = tab_cz[ (i/nuta)%8 ]; //częstotliwość
int T = 48000/cz; //okres w taktach na pdst. cz
int in; //zmienna pomocnicza = i % szer_fragmentu_wykresu
if( In = T/8 ) in = i % in ; // if - aby nie dzielić przez zero
switch( ( i%T ) * 8 / T ) //wybrana ósma część sinusoidy przyjmuje:
//0,1,2,3,4,5,6 lub 7
{
case 0:
p = ampl*((in*70*4)/T )/100;
break;
case 1:
p = 60000;
break;
case 2:
p = ampl*(((T/8-in)*70*4)/T)/100;
break;
case 3:
p = 10;
break;
case 4:
p = ampl*((in*70*4)/T )/100;
break;
case 5:
p = 70000;
break;
case 6:
p = ampl*(((T/8-in)*70*4)/T)/100;
break;
case 7:
p=10;
break;
default:
p=10;
}
in = i%( nuta/2 );
int o = 1000; // obwiednia
if( in < nuta/4 ) o = (in * 8000 )/nuta;
else o = 4000 - (in * 8000 )/nuta;
i++;
p = (p*o)/1000;
iChannel0LeftOut = p;
iChannel0RightOut = p;
iChannel1LeftOut = p;
iChannel1RightOut = p;
if(i<1000) TABLICA[i] = p;
if(i/100<1000) TABLICA2[i/100] = p;
}
3. WYNIK DZIAŁANIA KOMPILATORA
Po wielu próbach program wygenerował wyniki zaakceptowane przez prowadzącego, które są przedstawione na poniższych wykresach.
Wykres funkcji częstotliwości.
Obwiednia
4. WNIOSKI
Początkowo wykonanie zadania przysporzyło trudności z napisaniem funkcji generującej odpowiednie wykresy. Podczas prób poprawnego napisania programu pojawiały się ciekawe oraz zaskakujące wyniki w postaci wykresów oraz dźwięków. Po wielu modyfikacjach programu udało się uzyskać wyniki zaakceptowane przez prowadzącego.