Vizitator incepatoare94 Postat Mai 18, 2014 Partajează Postat Mai 18, 2014 Abia m-am apucat de programare in mplab si incerc sa-mi dau seama cum ar arata secventa care sa foloseasca un switch care atunci cand il apas imi opreste un timer.Concre,t ca sa pricep pe un exemplu,cum as putea modifica programul atasat ca sa obtin ce am spus mai sus? Link spre comentariu
UDAR Postat Mai 18, 2014 Partajează Postat Mai 18, 2014 Unde e programul atașat ? Link spre comentariu
Liviu M Postat Mai 18, 2014 Partajează Postat Mai 18, 2014 (editat) Pentru ca n-ai pus programul de modificat, si n-ai spus in ce limbaj programezi (mplab e un "banal" IDE), un fel de Ceudocod (C amestecat cu pseudocod). Cand pornesti timerul x *), folosesti comanda TMRxON = 1. Ca sa-l opresti o sa folosesti TMRxON = 0. Ca s-o faci in functie de starea unui pin, citesti pinul **) si opresti timerul intr-un bloc if if(pinStopTimer){ TMRxON = 0;} Spor! *) Asta presupunand ca ai configurat bine TMRx **) Asta presupunand ca ai configurat pinStopTimer ca intrare si ai dezactivat eventualele periferice analogice. Editat Mai 18, 2014 de Liviu M Link spre comentariu
Vizitator incepatoare94 Postat Mai 18, 2014 Partajează Postat Mai 18, 2014 acesta este programul initial care trebuie modificat este in assembler sau assembly language cum ii spun unii,nu prea pot folosi secvente de c,c++(de aceea mi-e si mai greu sa inteleg) Link spre comentariu
10vid Postat Mai 18, 2014 Partajează Postat Mai 18, 2014 (editat) A trebuit sa iau o lupa sa citesc ce scrie acolo. Primul lucru, va trebui sa stergi bitul 7 de la OPTION_REG, pentru a activa rezistentele de pull-up la pini (acolo unde e incercuit pe foaie). Butonul se va lega la GP0 (pinul 7) si GND. Apoi trebuie sa inlocuiesti secventa: main goto main cu: main btfsc GPIO,0 ;E butonul apasat? Daca da, sarim peste urmatoarea bcf OPTION_REG,T0CS ;Butonul nu e apasat, pornim timer-ul btfss GPIO,0 ;E butonul neapasat? Daca da, sarim peste urmatoarea bsf OPTION_REG,T0CS ;Butonul e apasat, oprim timer-ul goto main Mai exista si o soultie hardware, dar cu timer1 (pinul T1G/GP2). Ar cam trebui insa rescris tot programul. Editat Mai 18, 2014 de 10vid Link spre comentariu
Vizitator incepatoare94 Postat Mai 18, 2014 Partajează Postat Mai 18, 2014 Sarumana:)...poti sa-mi explici totusi de ce gpio,0? switchul este pe GP3 main btfsc GPIO,3 ;E butonul apasat? Daca da, sarim peste urmatoarea bcf OPTION_REG,T0CS ;Butonul nu e apasat, pornim timer-ul btfss GPIO,3 ;E butonul neapasat? Daca da, sarim peste urmatoarea bsf OPTION_REG,T0CS ;Butonul e apasat, oprim timer-ul goto main nu ar fi bine asa?:* iar la timer 1 tot la fel m-ar interesa doar secventa cu switchul ,in rest stiu sa rescriu programul Ar veni: main btfsc GPIO,4 ;E butonul apasat? Daca da, sarim peste urmatoarea bsf OPTION_REG,T1G ;Butonul nu e apasat, pornim timer-ul btfss GPIO,4 ;E butonul neapasat? Daca da, sarim peste urmatoarea bcf OPTION_REG,T1G ;Butonul e apasat, oprim timer-ul goto main E bine la timer 1 asa ca sa opresc timerul cu un switch?Ma gandeam ca bitul TMR1ON ar trebui sa conteze daca timer1 este oprit sau nu. Link spre comentariu
MifTy Postat Mai 18, 2014 Partajează Postat Mai 18, 2014 ... dacă aia e temă de facultate, chiar dacă-i iese, ia 4, pentru că a corectat problema dată greşit.mai ştiu câţiva care au păţit figura asta. Link spre comentariu
Vizitator incepatoare94 Postat Mai 19, 2014 Partajează Postat Mai 19, 2014 Dar nu incerc sa corectez nimic ca ea e bine facuta deja ci sa o modific in diverse moduri pt. a invata sa stapanesc assembler mai bine . Link spre comentariu
Liviu M Postat Mai 19, 2014 Partajează Postat Mai 19, 2014 Eu inca o data admir posturile lui 10vid, dar inca o data constat ca nu e deloc "pedagogic" Incepatoarea n-a incercat nimic. Nici macar n-a "dactilografiat" programul de modificat, nu mai zic de citit foaia de catalog a controllerului. In cazul temelor, mie mi se pare util ajutorul dat cuiva care arata ca a incercat ceva. Link spre comentariu
Vizitator incepatoare94 Postat Mai 19, 2014 Partajează Postat Mai 19, 2014 Eu totusi ii apreciez ajutorul lui 10vid care m-a facut sa pricep mai bine chiar daca nu sunt pe profil "electronica si telecomunicatii". Intrebarile mele cu propuneri (nu ar fi mai bine asa?)arata implicarea mai mult decat o dactilografiere prin care am trecut deja pe alt calculator la care am conectat si microcontrollerul sa pot vedea ce se intampla acolo .Acum,fiecare cu parerea lui. In plus,simplul fapt ca postez aici arata ca vreau sa stiu mai multe si ies din spatiul "facultate".As aprecia daca ar comenta cineva sa ma ajute si sa imi raspunda la ultimele intrebari nu doar sa comenteze ca nu vad rostul de ce ar pierde si timpul lui si al meu. Link spre comentariu
Liviu M Postat Mai 19, 2014 Partajează Postat Mai 19, 2014 M-am uitat acum prin data-sheet (Capitolul 5) la Timer1 ai mai multe posibilitati: - soft - TMR1ON=1 - pornesti timerul TMR1ON = 0 il opresti. Secventa e asemanatoare cu ce a scris 10vid pentru tmr0, numai ca nu folosesti OPTION_REG ci TMR1ON. - hard, conectand butonul la T1G. Faci TMR1ON = 1 & TMR1GE = 1 la inceputul programului si activezi/deactivezi timerul extern (automat), din butonul de la T1G (pinul 3). Cand butonul pune masa ("0) pe pinul 3 timerul functioneaza, cand pune "1" timerul se opreste. TMR1GE: Timer1 Gate Enable bit If TMR1ON = 0: This bit is ignored If TMR1ON = 1: 1 = Timer1 is on if T1G pin is low 0 = Timer1 is on PS Raman la parerea mea ca intai trebuie sa citesti/intelegi data-sheetul. Intrebarile pe care le apreciez sunt cele: "am incercat asa (si vine ce ai incercat) dar nu merge" sau "in exemplu scrie ca..., dar eu nu inteleg de ce, ca mie mi se pare ca ar trebui sa...". Ma rog, posturi din care sa se vada ca nu ceri sa ti se faca tema, ci incerci sa-ti faci tema si ceva nu merge. Din postul la care m-am referit anterior eu intelg "faceti-mi voi tema". Cel cu Timer1 e OK. Link spre comentariu
Vizitator incepatoare94 Postat Mai 19, 2014 Partajează Postat Mai 19, 2014 Ok ,fie,de acord cu tine cu partea practica desi nu asta a fost intentia mea de a imi face cineva tema. Am cateva intrebari pe parte teoretica(am citit datasheet-ul deja): 1. Cate functii are modulul TMR0CS?Eu am zis ca are o singura functie:aceea de a selecta sursa tactului(interna sau externa),iar doamna profesoara a spus ca are 2 (counter pt clock extern si timer pt clk intern) ,dar acestea 2 nu erau functiile lui TIMER0? Lamuriti-ma va rog. 2. Daca am un nr in hexa pe care il convertesc in binar si are 20 biti de exemplu,iar intrebarea mea suna cam asa:Cati biti sunt necesari pt scrierea acestui nr ?Raspunsul este 20 sau 32? Link spre comentariu
Liviu M Postat Mai 19, 2014 Partajează Postat Mai 19, 2014 1 Din data-sheet: Timer mode is selected by clearing the T0CS bit(OPTION_REG<5>). In Timer mode, the Timer0 module will increment every instruction cycle (without prescaler)....Counter mode is selected by setting the T0CS bit (OPTION_REG<5>). In this mode, the Timer0 module will increment either on every rising or falling edge of pin GP2/T0CKI. Asa ca dupa parerea mea, aveti dreptate amandoua, fiind chestie de interpretare. Cand folosesti ceasul intern, e destul de clar - frecventa ceasului e fixa, asa ca poti folosi timerul sa "reactioneze dupa un anumit timp" - timer (desi se poate interpreta si "dupa un anumit numar de cicluri instructiune => counter).In cazul "ceasului extern", poti avea situatia anterioara - o sursa stabila de ceas, cu o anumita frecventa, caz in care se repeta situatia anterioara (si in cazul asta e varianta ta) sau, mai interesant, poti avea evenimente aleatoare in timp (fara o frecventa stabila/cunoscuta) pe care le poti "numara". In cazul asta e clar ca avem de-a face cu un... numarator.2. Sau 24?Bitii necesari sunt 20. Bitii folositi vor fi probabil 24 - 3 octeti, pentru ca e vorba de controllere pe 8 biti (asa ca datele sunt reprezentate in "grupuri" de octeti). In cazul asta 20 de biti vor fi utili, restul de 4 vor fi "risipiti". PS Astea sunt pareri pe forum, da? N-am nici o pretentie ca sunt si corecte. PS Am incercat sa raspund cu citate, da' nu ma lasa forumul (prea multe citate - erau 3 ). 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