Sari la conținut
ELFORUM - Forumul electronistilor

TMR1 overflow


Postări Recomandate

Folosesc 16F877 pentru o aplicatie oarecare si vreau sa masor timpul cat un semnal digital care vine din exterior este in 1 logic. Semnalul misca cel mai des posibil la 1 ms si cel mai rar posibil la cateva secunde. Acest semnal il aduc pe PORTB bit 7 iar orice schimbare a lui va genera intrerupere. Atunci cand am schimbare 0->1 fac TMR1H=TMR1L=0x00 si pornesc TMR1 iar cand am schimbare 1->0 opresc TMR1 si am TMR1H*256+TMR1L numarul de microsec in care semnalul a fost in 1. Asta merge, vad pe simulator ca totul este bine. Problema este ca, in acest fel, pot sa contorizez max 65535 us = 65 ms ceea ce este nemultumitor, pentru ca durata de contorizat trebuie sa poata fi mult mai mare. Am citit ca atunci cand "TMR1 overflows" poate sa apara intrerupere. In tratarea acesteia mi-as incrementa o variabila a programului, de 16 biti, urmand ca numarul de microsecunde dorit sa il am in MyVar<<16 +TMR1H<<8 + TMR1Ldeci pe 32 de biti, deci pana la 4 miliarde de us, deci suficient. Desi am observat o similitudine cu bitii pentru TMR0 (pe care il folosesc cu succes, inclusiv evenimentul "TMR0 overflow"), in cazul lui TMR1 nu pot sa captez intreruperea cand se da peste cap. Folosesc HT-PIC.As aprecia ajutorul vostru. Multumesc.

Link spre comentariu
  • Răspunsuri 3
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Zile populare

Top autori în acest subiect

nu pot sa captez intreruperea

Prin asta se intelege ca nu accepta cererea de intrerupere? Adica nu sare la adresa 4?As verifica bitii GIE, PEIE si TMR1IE. Toti trebuie sa fie setati (1) ca sa accepti intreruperea la overflow. Apoi, TMR1IF trebuie resetat prin software, ca sa nu intri in intrerupere indefinit.Cirip
Link spre comentariu
  • 3 săptămâni mai târziu...

Multumesc, Cirip.

S-a rezolvat si merge. Imi luasem singur masura ca, la 50000 microsec, sa citesc valoarea TMR1H:TMR1L in alta variabila si sa resetez valoarea timer-ului dar am uitat ca am facut asta. Deci imi dadeam cu stangul in dreptul. -:)

Acesta era motivul pt care TMR1 nu ajungea niciodata la 0xFFFF.

Link spre comentariu

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări