Zadatak 1
Napraviti funkciju u C-u koristeći CCS v5, kojia će generisati sve DTMF tonove za numeričke tastere. Prototip funkcije treba da bude:
#define SR // Vi odabirate sample rate prema Nyquist-Shannon-ovoj teoremi
#define T 45 // Trajanje signala u ms: 40ms signal + 5ms pauza = 45ms
#define PI 3.141592
#define BR_ODBIRAKA
/*
* BR_ODBIRAKA Vi odabirate tako da odgovara:
* - raspolozivoj memoriji
* - trajanju signala - T
* - Sample rate-u (brzina odabiranja) - SR
*/
// Struktura signala
typedef struct signal_s {
int duzina;
int odbirci[MAX_DUZ];
} signal_t;
signal_t generisiDTMF(int taster);
// Parametar:
// taster - odgovara broju tastera od 0 do 9
// Funkcija vraca strukturu tipa signal_t
Funkcija za generisanje tonova treba da smesti u lookup tabelu potrebne dužine, odbirke izabranog tona i pauze, tako da tonovi traju po 40ms, a pauza između njih 5ms. Odbirke treba pripremiti za izbacivanje na 16-bitni unipolarni DAC u Q15 formatu. Voditi računa o brzini odabiranja, pogledati Nikistovu teoremu.
Zadatak 2
Realizovati funkciju koja za zadati signal računa njegov spektar. Na DTMF signalima iz zadatka 1 proveriti ispravnost rada funkcije.
Zadatak 3
Napraviti funkciju u C-u koristeći CCS v5, koji će dekodovati sve DTMF tonove. Prototip ove funkcije treba da bude:
int dekodujDTMF(signal_t signal);
// Parametri:
// signal - struktura/tip u kojoj se nalazi signal generisan funkcijom generisiDTMF().
// Signal je odredjen brojem odbiraka i njihovom pojedinacnov mrednoscu.
// Funkcija vraca broj koji odgovara tasteru koji je pritisnut.
Funkcija za dekodovanje DTMF-a treba, uz pomoć FFT-a ili DFT-a da odredi koji ton je generisan. Ton “čita” iz lookup tabele koju je generisala funkcija za generisanje DTMF (Zadatak 1).