Jump to content
ELFORUM - Forumul electronistilor

Variabila contor vs Timer


Recommended Posts

Salutari *Intrucat clock-ul la Timer0,1,2,3 este Fosc/4 nu vad care este mai avantajos. Un cicluinstructiune este Fosc/4. Astfel incrementarea unei variabile tip "unsigned int"se face astfel: ( citind din fisierul cu extensia lst ): 250 ;EmFSKPIC18F4455.c: 71: index_table++; 251 00088A 4A51 infsnz _index_table,f,c 252 00088C 2A52 incf _index_table+1,f,cAici pentru o incrementare instructiunea infsnz poate lua 1(2) cicluri de ceas iarincf 1 ciclu de ceas. Asta inseamna ca o operatie de incrementare poate luachiar si 3 cicluri de ceas adica 3*(Fosc/4). Pe cand la Timer0,1,2 sau 3clock-ul este constant si o incrementare la registrul timer-ului dureaza INTOTDEAUNA 1/(Fosc/4). De aici rezulta ca implementarea unei intarzieri sau temporizari este recomandata a se face cu Timer0,1,2 sau 3 si NU cu o variabila de tip contor.Ce ziceti ? :jytuiyu

Link to comment
  • Replies 35
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Da asa este, am uitat sa zic. Cu Timer se pot face delay-uri mai scurte decatprin variabile contor. Aici am vrut sa ajung. Vreau sa folosesc la generarea cat mai exact a unei sinusoide cu rezistente R-2R pe 8 biti de la un PIC18F4455 ce ruleaza la maxim 48 MHz. Vreau sa folosesc 255 valoriadica toate valorile posibile pentru 2^8 pentru ca sinusoida sa fie cat mai continua ( sa nu apara acei trepti asa mari ). Defapt vreau sa fac unmodulator FM cu PIC18F4455. Pentru 0 sa scoata o sinusoida de 1470 Hzsi pentru 1 sa scoata o sinusoida de 1530 Hz. Am aflat care e diferenta intremodulatie FM si FSK desi fac acelasi lucru. Modulatia FM scoate semnaleanalogice ( in general sinusoide ) pe cand modulatia FSK scoate semnale digitale ( dreptunghiulare ) nemaifiind nevoie de convertordigital-analog. Pentru astea am nevoie de o stabilitate buna la oscilatorulextern cu quartz. Am luat niste condensatori de 22p,18p, 15p dar cand i-am masurat cel de 15p avea defapt 22p, iar cel de 22p avea defapt 33p.Poate si multimetrul meu e defect. Apropo, cati amperi scoate o baterie 1.5V R20. Am citit undeva ca ar trebui sa scoata cam 3A. Intr-un tabel am vazut ca scoate cam 650 mA depinzand si din ce materiale e folosita bateria. Vorbesc de o baterie obisnuita R20. :dans:

Link to comment

La intrebarea cati amperi scoate o baterie R20?Depinde de limitarea exterioara care o ai.Curentul e limitat de rezistenta care o ai in circuit. Daca pui direct un ampermetru conectat la baterie o sa ai curent U/Ri,unde U este tensiunea bateriei, Ri este rezistenta bateriei in circuit(care difera de la constuctor la constructor).

Link to comment

Vreau sa folosesc in loc de baterii ( 2 baterii R20 de 1.5 ) un redresor de 12V alimentatla 220V alternativ pentru alimentarea unui vibrator pentru masaj ce are un motoras pe care nu scrie nimic. M-am gandit sa interpun niste rezistente de wataj ca inschema de mai jos. Redresorul scoate cam 13V. Pe rezistente cade 10V si trece un curent de 3A? Din aceasta cauza doream sa stiu cam cat scoate normal o baterie R20 ca sa deduc intr-un fel cam cati amperi consuma acest motoras la 3V. Redresorul nu are potentiometru de reglaj a tensiunii de iesire. Scoate cam 13V in gol si poate alimenta un consumator pana la 7 Amperi.

post-23035-139829391562_thumb.jpg

Link to comment

Este c-am mare diferenta de tensiune intre 12V cat trebuie sa-ti dea alimentatorul si 3V cat trebuie sa-ti dea bateriile.Eu iti recomant sa masori curentul care il ia motorul montat pe baterii si apoi ai toate datele ca stabilesti valoarea rezistentei. In schema care ai postat-o tu, motorul trebuie sa ia c-am 9A ca sa ai pe rezistenta o cadere de 9V ca sa ai pe motor c-am 3V(asta daca alimentatorul da 12V si are regulator de tensiune).

Link to comment

Am aflat care e diferenta intremodulatie FM si FSK desi fac acelasi lucru. Modulatia FM scoate semnaleanalogice ( in general sinusoide ) pe cand modulatia FSK scoatesemnale digitale ( dreptunghiulare ) nemaifiind nevoie de convertordigital-analog.

Asta spune cineva care s-a ocupat doar de FSK in ultima jumatate de an? (cel putin din ce am observat eu)FSK sau FM e acelasi lucru, cand la intrare e introdus semnal digital. Iar iesirile sunt in ambele cazuri sinusoidale.In telefonie se cheama AFSK, pentru ca purtatoarea e in zona de audiofrecventa.Bineinteles, exista si cazuri particulare de AFSK, unde iesirea e dreptunghiulara (a nu se confunda cu digitala), un exemplu e comunicatia dintre vechile computere gen ZX SPECTRUM (cine a avut cand era mic calculator Cip, HC sau TIM-S stie) si casetofon.Avantajul consta in faptul ca trecerile bruste intre nivele (dreptunghiulare) favorizeaza implementarea unui demodulator mai simplu, gen masurarea perioadei. Dezavantajul e ca semnalul ocupa toata banda de frecvente audio (din cauza armonicelor impare ale semnalului dreptunghiular), deci e exclusa folosirea mai multor canale pe o linie telefonica.
Link to comment

Aha, va sa zica nu merge cu semnale dreptunghiulare modulate FM pe linie telefonica ci doar semnale sinusoidale modulate FM pe linia telefonica. Eu ma ocup doar de modulatie FM cu semnale sinusoidale si nu dreptunghiulare.Nu e de la mine partea cu aceasta clasificare. N-are cum sa fie exact acelasi lucruFM cu FSK chiar daca tehnica este asemanatoare. Ma rog fie cum spui tu.Mai important este cum fac sa modulez mai bine cu PIC. Am nevoie safac un modulator FM chiar si pentru canalul 22 care are frecventele22*120+300 - 10 = 2910 Hz pentru 0 logic si 2970 Hz pentru 1 logic.Pare simplu la prima vedere. Programul este scurt dar la oscilator trebuieo buna stabilitate si delayurile mici. De exemplu daca o sinusoida are 256 * 2 valori ( creste - scade = o perioada ) pentru 2910 Hz delayul cu timer trebe sa aiba durata de 1/2910 Hz = 343,64 us / 512 = 0.671176974609375 us.Rezolutia maxima de numarare la ( sa zicem Timer 2 ) Fosc/4 = 48 MHz / 4 = 12 MHz.1/12 MHz = 0.0833 us. 0.671 / 0.0833 = 8.05. Deci registrul de numarare TMR2 ajunge panala valoarea 8 ( 0000 1000 ) pentru un delay. Si deci in registrul de comparare PR2 trebuiepusa valoarea 8: PR2 = 8 la care Timer2 se reseteaza. Iar pentru frecventa de 2970 Hz:1/2970 Hz = 336.70 us / 512 = 0.6576178451171875 us / 0.0833 = 7.89.Avand in vedere ca cele doua valori ce trebuiesc puse in PR2 sunt foarte apropiateeste necesar poate sa micsorez numarul de praguri de la 256 la jumatate adica 128la care pentru 1/2910 Hz = 343,64 us / 256 = 1.34234375 us / 0.0833 = 16.11.Iar pentru 1/2970 Hz = 336.70 us/ 256 = 1.3152356 / 0.0833 = 15.78.Trebuie redus mai mult: 1/2910 Hz = 343,64 us / 128 = 2.6846875 us / 0.0833 = 32.23Iar pentru 1/2970 Hz = 336.70 us/ 128 = 2.63046875 / 0.0833 = 31.57.Trebuie redus mai mult: 1/2910 Hz = 343,64 us / 64 = ... = 64.45 1/2970 Hz = 336.70 us / 64 = ... = 63.15.Deci din tabela de 256 valori trebuie luate < 32 valori ( egal distantate intre ele ) pentru care sa apara o diferentiere intre cele doua frecvente pentru 0/1 logicla delay la Timer 2.Si de modulatia FM cu PIC in felul acesta cu rezietente R-2R nu ma ocup de o jumade an ci de doar o saptamana. Folosesc PIC18F4455. Stie careva un PIC mai micutz ???????????????????????????????????? ca numar de pini dar care sa poata rula la 48 MHz ca acest PIC18F4455 ??????? care are 40 pini - deci e mult prea mare pentru ce-mi trebuie. Un pin de intrare si 8 pini pentru R-2R. M-am gandit sa folosesc doua porturi adica rezolutia la R-2R sa fie de 16 biti si nu de 8 dar mai intai incerc cu 8 biti. :)

post-23035-139829391828_thumb.jpg

Link to comment

512 esantioane e prea mult, nu suntem la NASA. Ca o comparatie, daca acel semnal de 2970Hz era inregistrat pe un CD, vorba aia, fidelitate "CD quality", si tot erau doar vreo 15 esantioane pe perioada (44100Hz / 2970Hz = 14.8 esantioane).Or, pentru o linie telefonica, unde frecventa maxima transmisa nu e mai mare de 8kHz, e inutil a se folosi o rata de esantionare mai mare de 16KHz, cu generozitate 20kHz.

post-39383-13982939185_thumb.gif

Link to comment

Va multumesc mult pentru indicatii. As mai vrea o formula la acele esantioanevalori intre 0-255 ca sa iasa o sinusoida. Delayurile la Timer2 fiind egale sivalorile (esantioanele) intre 0-255 daca sunt egal distantate intre ele, NU iese o sinusoida ci semnal triunghiular. Am luat o foaie de matematicasi am pus 8 esantioane. Distanta intre esantioanele de la mijloc este cea mai mare urmand ca pe masura ce se apropie de 0V si 5V distanta trebuie sa fie din ce in ce mai mica pentru a iesi o sinusoida. Deci as vrea o formula, va rog. Ceva cu sin(x) cred a carei valori sa fie intre 0-255 si nu intre 0 si 1 cum scoate functia sinus. Sa zicem ca sunt 18 esantioane intr-o semiperioada, iar esantioanele din semiperioada urmatoare sunt oglindite fata de cele din prima semiperioada.Trebuie sa iau portiunea dintre 3*pi/2 si 5*pi/2 translatata cu unu pe axa ydin functia sinus. Pana aici vine sin(x)+1 ca sa o mut si deasupra axei Xadica de la 0 la 2. Acum trebuie sa fac un fel de extindere a valorilor functiei sinus de la 0 la 255 in loc de la 0 la 2 pentru aceasta portiune.

Link to comment

O sa folosesc si PWM, dar vreau mai intai sa vad cum iese cu R-2R. In tabelul din linkul de mai sus sunt prea multe esantioane. La 8KHz esantionare ajunge. Acum ma chinui sa gasescvalorile pentru canalul 1 ( Fc = 420 Hz, F1 = 390 Hz, F2 = 450 Hz ) adica intr-o perioadasa folosesc 20 esantioane. Calculez cam empiric pe foaie de matematica.

Link to comment

De ce nu folosesti in loc de R2R, periferia lui CCP, deoarece are o relozutie de 10 biti nu de 8 biti.

La fiecare esantion PWM, semnalul alterneaza intre 0 si 5v, pe cand la R-2R, semnalul urca in trepte marunte. Deci e mult mai greu de filtrat un semnal de la iesirea PWM decat unul de la iesirea DAC. De aceea esantionarea PWM necesita a se face pe o frecventa mult mai mare. Cine a fost atent la topicurile cu invertoare PWM, o frecventa de 50Hz se esantiona cu 12.8kHz PWM, pentru a putea reduce gabaritul filtrului la iesire. E clar ca un semnal de 2970Hz ar necesita o frecventa de esantionare de ordinul milioanelor de Hz.Am sa vad zilele astea sa fac ceva cu PIC16F628A. Intrebarea e daca sa folosesc cristal de 4 MHz sau 8 MHz. Eu nu subscriu la ideea cu delay-uri, ci voi avea un timer pe 20KHz si o variabila index intr-un tabel SIN de 256 elemente. Variabila index va fi de tip float simplificat (adica 8 biti inainte de virgula si 8 biti dupa virgula).
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