Ciocan20 Postat Decembrie 7, 2013 Partajează Postat Decembrie 7, 2013 Stie cineva cum sa imi configurez tmr1 si tmr2 pentru a genera un pwm de 20ms?atasez ce am facut pana acum:void tmr1_init(){TMR1H=….TMR1L=……T1CON = 0x21;GIE = 1; PEIE = 1; TMR1IF = 0; TMR1IE = 1; TMR1ON = 1;}Void tmr2_init(){TMR2=0x00; PR2=…. T2CON=….. GIE=1; PEIE=1; TMR2IF=0; TMR2IE=1; TMR2ON=1;}nu stiu cum se foloseste prescalerul si cum sa imi calculez baza de timp de aceea nu stiu ce sa scriu in tmr1h si tmr1L la fel si in PR2 respectiv T2CON.microcontrollerul pe care il folosesc este pic16f690. Link spre comentariu
Liviu M Postat Decembrie 7, 2013 Partajează Postat Decembrie 7, 2013 Salut, Pentru PWM iti trebuie doar TMR2. Perioada PWM e T = (PR2 + 1) * 4 * Tocs * PrescTmr2Pe T il stii - 20 ms, Tosc stii, e perioada ceasului extern. Ce-ti ramane e sa 'potrivesti' valoarile scrise in PR2 si PrescTmr2 a.i. relatia de mai sus sa se verifice. Cred ca cel mai simplu e prin tatonari. Faci prescalerul 1 si calculezi PR2. Daca obtii o valoare pe 8 biti (<255), ai terminat. Daca e prea mare, iei urmatorul prescaler. Te opresti cand obtii o valoare OK pentru PR2. Succes. Link spre comentariu
Mircea Postat Decembrie 7, 2013 Partajează Postat Decembrie 7, 2013 Salut, citeste asta: https://www.mikroe.com/forum/viewtopic.php?f=97&t=46176. Dar nu stiu daca vei putea cobori la 50hz. Ramane sa te joci si cu frecventa PIC. Link spre comentariu
Ciocan20 Postat Decembrie 7, 2013 Autor Partajează Postat Decembrie 7, 2013 si pentru ce am scris eu nu imi poate explica cineva cum sa fac?ce e tmr1h si tmr1L? Link spre comentariu
Liviu M Postat Decembrie 7, 2013 Partajează Postat Decembrie 7, 2013 TMRxL & TMRxL sunt registrii in care numaratorul scrie unde a ajuns/in care tu scrii de unde sa inceapa sa numereDaca te uiti la pagina 130, e o 'diagrama temporala'.La pornire TMR2L&H sunt/sunt facuti 0 si iesirea PWM e comutata in high. TMR2 numara (e incrementat) pana cand e egal cu valoarea duty cycle (a propos, si asta trebuie stabilit). In momentul asta iesirea PWM e comutata in zero. TMR2 numara in continuare pana cand e egal cu PR2.In momentul asta se genereaza o intrerupere, TMR2L & H sunt facute zero si procesul se reia.PS tot ce am povestit eu mai sus (numai ceva mai detaliat) gasesti in data-sheet. 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