Sari la conținut
ELFORUM - Forumul electronistilor

DS 1307


Vizitator s_marius

Postări Recomandate

Vizitator s_marius

Salut.Stiu ca exista tata "GOOGLE" dar engleza mea cam lasa de dorit , asa ca:-poate cineva sa ma ajute cu cateva informatii despre ds1307 (serial real-time clock (RTC)).De exemplu cum as putea lucra cu un ds1307 si un at89s52.

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

Top autori în acest subiect

  • suirammarius

    26

  • bercioiu

    23

  • Liviu M

    10

  • Ashky

    5

Top autori în acest subiect

Imagini postate

DS1307 comunica prin intermediul I2C bus (de la Philips),practic el este o memorie ram care este citit si scris pe I2C.La adresele 00h pana la 07h sunt adresele unde se afla data si ora in format BCD.Cand vrei sa setezi data si ora scrii la adresele respective,iar cand vrei sa citesti ora si data citesti valorile din adresele respective.

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

Am urmarit si datasheet-ul ... dar te rog ...poti fi mai explicit... explica-mi asa mai pe "romaneste" algoritmul de lucru cu 8051 .

Microcontroller-ul 89s52 nu are hardware incorporat pentru comunicare i2c... Daca chiar vrei sa folosesti acest tip de microcontroller trebuie sa scrii o rutina pentru acest tip de comunicatie.. In locul tau as folosi microcontroller din seria AVR in acest caz ...(ATmega8 de ex)
Link spre comentariu

Am urmarit si datasheet-ul ... dar te rog ...poti fi mai explicit... explica-mi asa mai pe "romaneste" algoritmul de lucru cu 8051 .

depinde si cu ce compilator lucrezi dar e plin netul de rutine gata facute pt. protocolul I2C (http://www.8052.com) ,iar daca lucrezi cu un limbaj de nivel inalt,majoritatea au deja implementat I2C
Link spre comentariu
  • 4 ani mai târziu...

Postez si eu aici poate ma ajuta cineva...

 

Am realizat ceasul din lin-kul: http://www.best-microcontroller-project ... ck-ic.html

 

Sunt foarte multumit de precizia sa, merge de o saptamana pe breadboard si a pierdut aproape o secunda. Schema are mici inadvertente, dar citind codul sursa m-am prins cum este cu legaturile la display-ul cu leduri. Am montat al 3-lea digit rasturnat ca sa formez acele doua puncte intre ore si minute si acum am nevoie de putin ajutor din partea unui cunoscator al programarii:

Vreau sa introduc o linie in program sa obtin semnal de 1 hz pe pinul 7 (SQW/OUT) al ceasului DS1307. Dupa indelungi cautari si discutii am gasit ceva de genul acesta:

" I2COUT SDA, SLC, Schrijven ,$07 , [%00010000] "

pus la inceputul codului deja existent si recompilat din nou codul. Sincer am incercat, dar imi da tot felul de erori. Atasez in continuare fisierele dupa care am pus in practica acel proiect.

 

In speranta ca ma va ajuta cineva, va multumesc anticipat!

Link spre comentariu

Cred ca in fisierul 16F88_RTC_DS1307.c, in main, dupa

init_ds1307();
iti trebuie o linie de genul:
write_DS1307(7, 0x10);
Adica scrii in DS, la adresa 7, 0x10:

Bit 4: Square-Wave Enable (SQWE). This bit, when set to logic 1, enables the oscillator output. The frequency of the square-wave output depends upon the value of the RS0 and RS1 bits. With the square-wave output set to 1Hz, the clock registers update on the falling edge of the square wave. On initial application of power to the device, this bit is typically set to a 0.Bits 1 and 0: Rate Select (RS[1]). These bits control the frequency of the square-wave output when the square-wave output has been enabled. The following table lists the square-wave frequencies that can be selected with the RS bits. On initial application of power to the device, these bits are typically set to a 1.

Link spre comentariu

Cred ca in fisierul 16F88_RTC_DS1307.c, in main, dupa

init_ds1307();
iti trebuie o linie de genul:
write_DS1307(7, 0x10);
Stiu ca mai trebuie acea linie trecuta in codul sursa dar problema este ca nu ma descurc, de aceea am cerut ajutorul pe forum si am postat si codul sursa, poate gasesc pe cineva sa ma ajute. Sincer am incercat dar nu ma pricep sa compilez... :cry:
Link spre comentariu

Dupa ce am inlocuit data cu dataLoc in cateva functii (se pare ca intre timp data a devenit cuvant rezervat) si dupa ce am schimbat Bcd2Dec() in Bcd2Dec16() in vreo 2 locuri, (numai functia asta am gasit-o printre bibliotecile mikroC), am reusit sa compilez programul (pentru 16F88 si clock de 8MHz.)

Anexez proiectul complet, asa cum se compileaza la mine (folosesc o varianta demo a mikroC Pro v3.2); desi ar trebui ca fisierul realTimeClock.hex sa fie suficient, poate o sa vrei sa mai modifici cate ceva (sunt sanse ca daca ai proiectul complet sa mearga; nu sunt sigur ca nu prea am folosit mikroC).

 

 

PS Posturile tale ar sta mai bine la PIC.

Link spre comentariu

Am pus hexul modificat de tine dar nu-mi afiseaza nimic :nebunrau: In schimb DS-ul scoate 1 Hz pe pinul 7 ... Daca scot picul cu hexul tau si bag alt pic cu hexul original, merge tot, adica afiseaza normal si "bate" si secunda pe led. Daca intrerup bateria de back-up de la DS cu alimentarea oprita, normal, revine la starea initiala adica afiseaza ceasul dar nu mai am 1 Hz pe pinul 7. Cu modificarea facuta de tine trebuie sa setez altceva in fusebiti decat setarile originale? Acum am config wold 3F310 adica toate pe off in afara de Power Up Timer care este pe on si OSC intern.

 

Rog un moderator sa mute posturile mele la PIC. Am postat aici sa nu deschid alt topic pentru DS1307. Multumesc!

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