Primer 3 - Zbir dve sinusoide

Generisati lookup tabelu za signal koji je nastao zbirom dva sinusna signala frekvencija 70Hz i 1500Hz. Dužina tabele je 500 odbiraka, a učestanost odabiranja je 6kHz. Odbirci signala treba da budu u Q15 formatu spremni za izbacivanje na 16 bitni unipolarni DA.

Rešenje

#include <math.h>
#include <stdlib.h>

#define DUZINA 500 // u zadatku se trazi tabela duzine 500 odbiraka

unsigned int signal[DUZINA];  // trazi se da signal bude unipolaran

// Obratiti paznju na razliku ove funkcije i iste funkcije iz prethodnog zadatka
void generisi_signal(unsigned int s[], int n, int f1, int f2, int fs, int offset, int ampl ) {
    int i;

    for (i=0; i<n; i++) {
        s[i] = offset + (ampl>>1)*sin((6.28*f1*i)/fs) + (ampl>>1)*sin((6.28*f2*i)/fs);
        // Siftovanje za jedno mesto udesno (ampl>>1) je jednako deljenju sa 2
    }
}

int main(void) {

    // u bafer koji se zove "signal" i duzine je "DUZINA"
    // smestiti odbirke zbira sinusnih signala frekvencija 70Hz i 1500Hz
    // frekvencija odabiranja je 6kHz
    // posto se trazi da signal bude unipolaran, njegov ofset je 32767
    // i amplituda je 32767
    generisi_signal(signal, DUZINA, 70, 1500, 6000, 32767, 32767);

    while(1);  // mrtva petlja
}

Rezultat

results matching ""

    No results matching ""