Sari la conținut
ELFORUM - Forumul electronistilor

Ceas PIC 16F84A


briobit

Postări Recomandate

Acum am gasit si eu un acumulator incarcat de 12 volti incarcat prin casa am pus ceasul pe el si ramane sa vad cum se misca la cat e de mare acumulatorul cred ca 3-4 saptamani ma tine lejer, ramane sa comunic rezultatele.

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

Top autori în acest subiect

  • briobit

    54

  • MatyC

    15

  • adicontakt

    6

  • 10vid

    6

Top autori în acest subiect

Imagini postate

...vreau sa va spun ca pana nu veti pilota acel ceas cu un cristal care sa aiba frecventa de takt exact o valoare de forma Frecv=2^x unde x trebuie sa poata fi divizat de catre prescalerul uC-ului folosit si sa dea exact valoarea 1, pana atunci veti avea un ceas care arata APROXIMATIV ora "exacta" ...

deduc ca dvs nu ati inteles principiul software roman black (zero cumulative error). Precizia ceasului cu cristal de 32768 merge atat de bine pe cat de bun este cristalul, si sunt cristale si cristale. Eu am fost mai ghinionist ca dvs si am facut ceasuri cu ds1307+Q32768 care au abateri peste limita mea de acceptare.
Link spre comentariu

Intr-adevar nu folosesc in softurile mele acea metoda "roman black" care mi se pare foarte greu de implementat. Mult mai simplu mi se pare sa setez prescalerul uC-ului sa divida cu 2^15 si sa incrementez o variabila "secunda" in ISR, nu?Asa e, nu toate cristalele sunt precise dar mie nu mi s-a intamplat sa gasesc unul prost, cel putin pana acuma.

Link spre comentariu

Nu exista asa prescaler 2^15. Pentru cristal de 32kHz, prescaler 128 si Timer0 liber sa numere 256.Metoda asta "roman black" e exagerata, iar metode mai simple si la fel de exacte exista pentru Timer0.Nu de metode ducem lipsa, ci de implementarea lor corecta.De exemplu, metoda folosita in primul soft postat e una foarte buna (in ciuda abaterii de 12min/zi din cauza proastei implementari):1.000.000 / 4000 / 250 = 1unde 4000 = prescaler 16 x Timer0 250, iar 250 e o variabila soft.Problema apare la incarcarea timerului, unde intervin trei surse de intarziere: latenta intrerupere (3 ciclii), sincronizare timer dupa incarcare (2 ciclii) si numarul de instructiuni dintre momentul intreruperii pana ce timerul a fost updatat (care tre numarate).Atunci va fi asa:1.000.000 / (3984 + 16) / 250 = 1adica 3984 = prescaler 16 x Timer0 249, si ne raman 16 ciclii care trebuie irositi, 5 ciclii se duc pe cele doua latente hardware iar restul pe instructiunile inerente de la inceputul intreruperii (eventual se poate completa cu cateva NOP-uri pana la 16, daca sunt prea putine).

Link spre comentariu

Daca ar fi vorba de un ceas utilizat in situatii unde timpul este critic nu m-as complica cu astfel de ceasuri. In ziua de zi cu zi este ok acesta. Intradevar cuartul de 32768 Hz ( 2 la puterea 15) este usor de implementat hardware, insa sa luam in calcul efectul temperaturi. La cel de 32768Hz se simte direct pe cand la cel de 4 Mhz deviatia frecventei ajunge si ea sa fie divizata asa ca in final efectul este redus. Studiasem asta la sinteza de frecventa cu bucla PLL. Eu am crezut ca este usor sa faci un ceas cu un uC insa m-am inselat. Este o provocare pe care am reusit sa o rezolv si asta ma bucura, am invatat cateva aspecte legat de programare si oricum nu am nevoie de un ceas dupa care sa-mi reglez bataile inimi. Pentru oscilatorul de 4 Mhz in regim de amator ne putem permite un TXCO in capsula de metal care isoleaza cat de cat cuartul de mediul inconjurator si de bine de rau este la o valoare de 4.000.000 Hz.Ceasul acesta, cel facut de Bruno Gavand si un altul proiectat de mine ( 2 algoritmi diferiti) m-au multumit ca precizie. Referinta este ceasul de pe receptorul de satelit.Codul sursa l-am mai curatit cat de cat, foloseste din RAM cam 29 de locatii (47%) cam mult totusi. Ideea principala a fost sa vad cum iese un multithread pe PIC16F84. Ma gandesc cum sa implemetez o fotorezistenta pentru autodimming la afisoare sa nu deranjeze noaptea. :(

ceas4digit.zip

Link spre comentariu

te referi la preincarcarea registrului timarului cu o anume valoare, pentru ca el sa nu mai incrementeze de 256 de ori pana la overflow. Metoda roman black imi place tocmai pentru ingeniozitatea ei. Desi teoria pare complicata pana o intelegi, punerea in practica e chiar simpla.

Link spre comentariu

Ma gandesc cum sa implemetez o fotorezistenta pentru autodimming la afisoare sa nu deranjeze noaptea. :(

exact asta spunea nevasta aseara ca lumineaza prea tare :rade: Pana acum merge la secunda si din acumulator a scazut foarte putin aveam 12,40 volti ieri si acum am 12,35 volti.
Link spre comentariu

ceasul meu are astazi 7 zile de functionare neintrerupta si o eroare de 5 secunde in avans fata de timpul setat la pornire....

:aplauze MatyC

Link spre comentariu

1. Pentru oscilator a ma gandesc la o varianta cu TXCO in capsula metalica pe soclu DIP14 si in PCB sa fie prezenta ambele variante( cuartz+conds sau txco). Modificarea softului pentru TXCO este simpla.2. Alimentarea sa fie cu alternativa pe baterie doar pentru uC fara afisoare ( vezi varianta aleasa de Bobtech).3. In pinul RA4 ma gandesc sa folosesc un divizor rezistiv cu fotorezistenta pentru zi-noapte. Abia am cumparat componenta si poate am timp serile acestea pentru implemetare.

Link spre comentariu

Am facut cateva modificari in program legat de modul de setare sa nu reseteze minutele cand la reglarea orei se trece peste 23. O facilitate in plus este ca in momentul alimentari ceasul clipeste la la fiecare 0,5 sec. Asta ca nu cumva sa te bazezi pe ora afisata desi intre timp a fost luat curentul electric.

ceas4digit_v02.hex.txt

Link spre comentariu
  • 4 săptămâni mai târziu...

Azi am prins un pic de timp liber si cu ocazia demolarii a 2 televizoare am gasit si materia prima pentru carcasa ceasului ( plastic din carcasa televizoarelor) si am crosetat ceva la ele zilele acestea sper sa fac o cutiuta.Ceasul meu merge cu penultimul hex de la ultima postare brici tinand cont cum arata placa :da Intentionez sa ii fac o cutie la acesta si sa mai fac 1 cu ultimul hex.Multumesc inca o data tuturor persoanelor pentru ajutorul acordat.

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