Jump to content
ELFORUM - Forumul electronistilor

Cum generez un semnal FSK cu PIC ?


Recommended Posts

Ma gandeam la varianta fara PWM compare pentru ca trebuie un filtru trece josla iesire. As prefera varianta cu rezistente R/2R. Trebuie sa modulez adica in functie 1/0 la intrarea unui pin sa generez o sinusoidapentru 0 si alta pentru 1 logic si cand se face trecere intre sinusoide sa nu apara defazaj intre ele. Si problema de adaptare la o linie telefonica de 600 ohmi. Si amplificarea soft a sinusoidelor. Am PIC16F887 si PIC18F4455.

Link to comment
  • Replies 1
  • Created
  • Last Reply

Top Posters In This Topic

Popular Days

Top Posters In This Topic

Pai e destul de simplu. Se ia un timer cu o rezolutie mare, am vazut ca PIC18F445 are 4 timere. Se ia unu de 16 biti. Apoi se ia un cristal de frecventa cat de mare. Astfel obtinem o granulatie destul de fina in alegerea frecventei.De ex. pentru un ceas de 16MHz a reiesit o granulatie de +/-8Hz la frecventa de 2.5kHz, avand 20 esantioane pe sinusoida (adica frecventa intreruperilor generate de timer e de 50kHz).Dar daca n-ai de respectat cine stie ce standarde de frecvente (adica construiesti si receptoarele) acesti parametrii se mai pot relaxa.La fiecare intrerupere generata, se va citi dintr-un tabel de 20 de elemente valoarea curenta a sinusoidei si se trimite pe cei 8 pini de iesire, pointerul in tabel se incrementeaza, iar dupa aceea se verifica pinul de intrare pentru a vedea care din cele doua valori prestabilite (perioadele corespunzatoare frecventelor F0 si F1) trebuie incarcate in registrul de numarare al timerului.Totusi, aceasta prima varianta nu serveste decat in singur canal FSK. Pentru multe canale costul MCU-urilor creste.Ma gandesc ca o a doua varianta, cu mai multe canale pe MCU, are sa zicem 8 biti de intrare pentru 8 canale, si la iesire, pe langa portul paralel de 8 biti, mai foloseste un port de selectie a 8 latchuri 74HC373, conectate toate la acel port paralel, care ies in propriile lor retele R-2R.Intern, se foloseste o frecventa fixa a intreruperilor, sa zicem 50kHz, si un tabel SIN foarte mare, sa zicem cu 1024 elemente sau mai mare (slava Domnului, memoria flash e mare la astea). 8 pointere "tin minte" valoare curenta a sinusoidei pentru cele 8 canale, iar in functie de ce vine la intrare, se modifica doar valoarea ce trebuie adaugata pointerului (care se tin in 16 constante: 8 pentru logic 1 si alte 8 pentru logic 0). Cand pointerul depaseste acei 1024, se scade din el 1024.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines