vasile doru Postat Martie 2, 2007 Partajează Postat Martie 2, 2007 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
d2134 Postat Martie 2, 2007 Partajează Postat Martie 2, 2007 Setarea se face prin bus I2C fie de PIC fie din exterior (de alt controller) daca nu ai butoane legate la PIC. Link spre comentariu
Vizitator zuzurelu Postat Martie 2, 2007 Partajează Postat Martie 2, 2007 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
vasile doru Postat Martie 6, 2007 Autor Partajează Postat Martie 6, 2007 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 musaraf Postat Martie 6, 2007 Partajează Postat Martie 6, 2007 Mikroelectro are ceva cu PCF8583, cu schema si exemple in C, Pascal si Basic. http://www.mikroe.com/en/tools/rtc/ (nu stiu daca rezolva exact problema ta) Cred ca totusi PIC-ul trebuie sa verifice datele dupa incrementare. Link spre comentariu
Vizitator zuzurelu Postat Martie 6, 2007 Partajează Postat Martie 6, 2007 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
vasile doru Postat Martie 7, 2007 Autor Partajează Postat Martie 7, 2007 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
vasile doru Postat Martie 7, 2007 Autor Partajează Postat Martie 7, 2007 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
bobtech Postat Martie 7, 2007 Partajează Postat Martie 7, 2007 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
vasile doru Postat Martie 7, 2007 Autor Partajează Postat Martie 7, 2007 Eu m-am referit la reglarea min/ore etc. Link spre comentariu
Vizitator zuzurelu Postat Martie 7, 2007 Partajează Postat Martie 7, 2007 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
vasile doru Postat Martie 7, 2007 Autor Partajează Postat Martie 7, 2007 Softul nu se complica in cazul minutelor sau orelor, in cazul datei un if nu e de ajuns.Functia de autoincrement cum se foloseste? Link spre comentariu
MirceaM Postat Martie 26, 2007 Partajează Postat Martie 26, 2007 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
MiniTehnicus Postat Martie 28, 2007 Partajează Postat Martie 28, 2007 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
d2134 Postat Martie 28, 2007 Partajează Postat Martie 28, 2007 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
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