Jump to content
ELFORUM - Forumul electronistilor

Frecventa RTC DS1302


ohamoha
 Share

Recommended Posts

Salut,Am gasit acest RTC pe care vreau sa-l folosesc intr-un proiect. In documentatie scrie ca foloseste "Simple 3-Wire Interface" adica ceva serial. Am facut o simulare in Proteus si merge cum trebuie dar inca nu am cumparat piesele asa ca am o dilema. Ca sa scriu un bit fac ceva de stilul:RTC_IO=1;RTC_CLK=0;RTC_CLK=1;Fara niciun delay intre comenzi. Avand experienta unui EEPROM I2C stiu ca acestea au nevoie de un delay, scrie si in documentatie 100Khz sau 400Khz in functie de model. E posibil ca RTC-ul sa raspunda fara probleme la frecventa PIC-ului (8Mhz.)?Multam!

Link to comment
Share on other sites

Exista un tabel in datasheet-ul lui DS1302 cu timpii (ac electrical characteristics) unde iti spune ca frecventa maxima pentru semnalul CLK este 2 MHz si ca trebuie sa ai un palier minim de 250 nS atat pe low cat si pe high. Un PIC are nevoie de 4 cicluri de ceas pentru o instructiune deci daca faci rtc-clk = 0 ; rtc-clk = 1 inseamna ca vei obtine un semnal de 1 MHz daca folosesti un cristal de 8 Mhz.Cred ca este mai simplu/sigur sa folosesti niste intarzieri suplimentare sau un cristal cu frecventa mai mica.

Link to comment
Share on other sites

DS1302 nu este i2c, este un protocol asemanator dar nu are bitul de acknowledge si nici sistemul de adrese al i2c. Varianta i2c a acestui chip este DS1307 pe care eu l-am folosit de mai multe ori. Problema lui este ca are o abatere destul de mare a oscilatorului si necesita o corectie periodica din software iar daca functioneaza din bateria de back-up eroarea este diferita si lucrurile se complica.Din punctul meu de vedere folosirea modului hardware (MSSP) este mai dificila pentru un incepator si mai greu de diagnosticat daca nu merge din prima. Am avut probleme cu un F877 la un moment dat si dupa ce am pierdut o gramada de timp incercand sa descopar ce nu mergea bine am renuntat sa mai folosesc MSSP pentru i2c daca am loc si timp pentru protocol software.Posteaza codul si te va ajuta cineva sa o scoti la capat.

Link to comment
Share on other sites

Si eu am reusit dar se intampla ceva ciudat, cred ca de la bitul de acknowledge se desincroniza la un moment comunicatia si tot ce citeam era deplasat cu un bit... am renuntat si am folosit software. Erau 2 MAX6953 si un DS1307 pe bus-ul i2c dar la momentul acela nu am avut prea multa radbare sa studiez unde aparea problema.

Link to comment
Share on other sites

In legatura cu sursa I2C care nu merge.Eu ca un adevarat incepator folosesc MikroC, astfel ca am incercat cu librarile acestuia. Am simulat in Proteus un PIC18F4620 cu un EEPROM 24C02C. Cod nu prea am ce sa pun, eroarea apare de la prima linie:I2C1_Init(100000);Proteus zice ca:[i2CMEM TIMING] Start hold time violated. Start was at 49.38341u, hold time is 600.n, min hold time is 125.n.Initial am luat datasheet-ul PIC-ului si am zis ca voi accesa direct MSSP-ul fara librarii intermediare, dar asa cum zicea cineva mai sus, mi s-a parut complicat si m-am pierdut in detalii.

Link to comment
Share on other sites

Eu mi-am scris singur functiile necesare. Probabil ca se puteau scrie mai bine, da' important e ca mi-au functionat.

Cam asa am facut pentru un 18F452.

Partea de initializare arata cam asa:

// i2c: dezactiveaza portul MSS si activeaza modul i2c master //    SSPCON = 0b00100000; //enable MSS    SSPCON1 = 0b00001000; // configure the i2c mode    SSPCON2 = 0b00000000;    SSPADD = 0x31;   // i2c clock frequency = 100 kHz.

Cat despre functiile propriuzise sunt in fisierul atasat.

Link to comment
Share on other sites

Salut,

Multam de exemplu. Am tot invartit libraria atasata, dar n-am reusit s-o fac sa mearga corect. Intorcea niste valori, nici 0x00 nici 0xFF, ceva random. Probabil a fost ceva ce n-am luat in calcul.

Anyway, plecand de la exemplul tau si folosind alte exemple pe care le-am gasit pe net, am reusit sa pun cap la cap o librarie pentru MikroC care merge bine in Proteus. Chestia asta ma bucura destul de tare pentru ca librariile soft le foloseam la 20Khz, pe cand asta hardware merge la 400Khz ceea ce ma ajuta f mult in aplicatie.

Atasez mai jos ce-am facut si eu poate o mai avea cineva nevoie.

Merci inca o data de ajutor&sfaturi.

 

In main():

    //PIC18F4620 si EEPROM 24LC256    I2CInit();    I2CStart();     I2CSend(0xA0);             // send byte via I2C  (device address + W)     I2CSend(0);                // send byte (address of EEPROM location)     I2CSend(1);                // send byte (address of EEPROM location)     I2CSend('A');             // send data (data to be written)     I2CSend('D');             // send data (data to be written)     I2CSend('I');             // send data (data to be written)     I2CStop();              // issue I2C stop signal     Delay_ms(100);     I2CStart();              // issue I2C start signal     I2CSend(0xA0);             // send byte via I2C  (device address + W)     I2CSend(0);                // send byte (data address)     I2CSend(1);                // send byte (data address)     I2CRestart();     // issue I2C signal repeated start     I2CSend(0xA1);             // send byte (device address + R)     d1 = i2cRead();    // Read the data     I2CAck();     d2 = i2cRead();       // Read the data     I2CAck();     d3 = i2cRead();       // Read the data (NO acknowledge)     I2CNak();     I2CStop();
Link to comment
Share on other sites

Ca idee, DS1302 nu foloseste interfatare I2C bus sau SPI. Are cam aceiasi interfatare intalnita la memoriile din seria 93 (93C46 spre ex.) si era des intalnita vreo acum 20 ani. Ulterior sa impus I2C bus si derivatul sau SPI si altele. Interfata pe 3 fire se mai gaseste sub numele Microwire (daca stiu bine). Prin google se gasesc librarii sau aplicatii concrete, un exemplu fiind discutia de pe http://www.edaboard.com/thread20102.html.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines