Sari la conținut
ELFORUM - Forumul electronistilor

Ceas cu PIC si PCF8583


vasile doru

Postări Recomandate

Am facut un ceas cu PIC16F628 si PCF8583. Totul merge bine, problema e la setarea ora/data. Corectia datelor scrise in PCF8583 trebuie sa o faca PIC-ul sau o poate face PCF-ul?

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

Top autori în acest subiect

  • MirceaM

    6

  • vasile doru

    6

  • MiniTehnicus

    4

  • d2134

    4

Top autori în acest subiect

Vizitator zuzurelu

Ai o schema ceva ? Un link...PCF-ul tau este un RTC ( Real Time Controller ) si desigur are nevoie de initializari, asa cum ti s-a spus, via I2C. Puteai sa faci un ceas direct in PIC... fara RTCYO3HCV,

Link spre comentariu

Puteam sa fac ceasul direct in PIC, dar nu este alimentat tot timpul. Problema mea este la reglarea orei/datei (nu la initializarea PCF-ului). Am incercat sa citesc datele din PCF, sa le incrementez si apoi sa le scriu in PCF fara a pune conditii in softul PIC-ului la depasirea valorii maxime. (am crezut ca PCF-ul aduce singur aceste date in 0 sau 1 in functie de ce anume vreau sa reglez). M-ar interesa un procedeu cit mai simplu de reglare al ceasului, asta pt simplitatea softului (PIC-ul realizeazasi alte functii). Sper ca am fost inteles la problema mea.

Link spre comentariu
Vizitator zuzurelu

Nu inteleg cum ai facut un ceas cu PIC+PCFxxx fara sa cunosti cum functioneaza RTC-ul ( macar magistrala de programare I2C ), presupun ca ai luat codul de undeva si l-ai "pornit" ca atare. In orice limbaj ai lucra, treaba sta in felul urmator :

 

1. Ai un set de functii pentru comunicatia I2C de genul

 

send_byte()

receive_byte()

etc

 

cu care poti comunica cu orice device I2C

 

2. Pe baza lor, ai un alt set de functii mai "evoluate" sau specifice PCFxxx

cu care interactionezi cu RTC-ul tau

 

read_minutes()

write_minutes()

increment_minutes()

etc

 

Daca nu le ai, pai construieste-le, sau cauta pe net chiar si pentru alt controller, le poti adapta relativ usor PIC, conceptual sunt identice.

 

http://www.piclist.com

http://forum.microchip.com

http://www.oshonsoft.com/picexamples.html

http://www.phanderson.com/PIC/16C84/8574_1.html

http://www.asmfr.com/codes/PIC-16F84-TIMER-PCF8583-EEPROM-24LC65-COMMUNICATION-I2C_15193.aspx

 

 

 

YO3HCV, :axe:

Link spre comentariu

Nu comunicarea cu PCF-ul este problema. Sa va dau un exemplu: pentru reglarea minutelor citesc minutele, incrementez minutele, scriu minutele. Problema este cind dupa incrementare valoarea minutelor ajunge la 60, scriu aceasta valoare si asa ramine, (am crezut ca PCF-ul nu scrie aceasta valoare de 60 ci de 0) la urmatoarea citire a minutelor acestea au valoarea de 60.PIC-ul rezolva problema, dar prin conditii care fac softul mai complicat.

Link spre comentariu

Nu comunicarea cu PCF-ul este problema. Sa va dau un exemplu: pentru reglarea minutelor citesc minutele, incrementez minutele, scriu minutele. Problema este cind dupa incrementare valoarea minutelor ajunge la 60, scriu aceasta valoare si asa ramine, (am crezut ca PCF-ul nu scrie aceasta valoare de 60 ci de 0) la urmatoarea citire a minutelor acestea au valoarea de 60.PIC-ul rezolva problema, dar prin conditii care fac softul mai complicat.

Link spre comentariu

pai nu programul din PIC trebuie sa gestioneze ceasul, adica sa incrementeze sec/min/ore. asta face singur RTC-ul, tu trebuie doar sa-l initializezi cu timpul initial de la care incepe singur contorizarea

Link spre comentariu
Vizitator zuzurelu

Nu comunicarea cu PCF-ul este problema. Sa va dau un exemplu: pentru reglarea minutelor citesc minutele, incrementez minutele, scriu minutele. Problema este cind dupa incrementare valoarea minutelor ajunge la 60, scriu aceasta valoare si asa ramine, (am crezut ca PCF-ul nu scrie aceasta valoare de 60 ci de 0) la urmatoarea citire a minutelor acestea au valoarea de 60.PIC-ul rezolva problema, dar prin conditii care fac softul mai complicat.

Orice ceas care se respecta :partyman: merge cam asa :00...01...02...03...........57...58...59 -> 00 ...01...02Cand vei citi 59 din PCF.... incrementezi la 00, nu la 60... Valoarea 60 nu are ce sa caute in initializarile tale. Nu se complica nimic in software decat un if, de genul :if(value==59) write(0)else write(value)Ma mir totusi ca PCF nu are functii specifice si autoincrementYO3HCV,
Link spre comentariu
  • 3 săptămâni mai târziu...

Ai o schema ceva ? Un link...PCF-ul tau este un RTC ( Real Time Controller ) si desigur are nevoie de initializari, asa cum ti s-a spus, via I2C. Puteai sa faci un ceas direct in PIC... fara RTCYO3HCV,

1. Cat de precis este un ceas facut "direct in PIC"? Este precis cat un ceas "de automobil", anume sa arate minutul corect si dupa circa 6 luni de zile, in conditii de -30... +70 grade Celsius? Ma intereseaza asa ceva. 2. In caz ca nu poate fi atat de precis, cum s-ar face (cel mai simplu) ca sa fie?3. Exista PIC-uri care au RTC intern?
Link spre comentariu

In functie de quartz-ul disponibil trebuie alese intarzierile sau se selecteaza un quartz cat mai apropiat de frecventa marcata pe el.Se mai poate conecta la pic un modul de radio pe 77Khz care este folosit ca referinta si corecteaza frecventa ceasului, in cazul asta ceasul poate functiona si cu oscilatorul fara precizie asa mare.

Link spre comentariu

1. In principiu este la fel de precis. Precizia depinde numai de quartz-ul folosit.2. Se poate imbunatati precizia prin folosirea unui termostat simplu pentru quartz. Daca folosesti un modul pe 77kHz ceasul va bate secunda si dupa zeci de ani (cu conditia sa nu se desfiinteze statia care emite semnalele).3. Da exista.

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