mircang9 Postat Noiembrie 1, 2011 Partajează Postat Noiembrie 1, 2011 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 spre comentariu
10vid Postat Noiembrie 2, 2011 Partajează Postat Noiembrie 2, 2011 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 spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum