DS1302

Všetko čo sa týka mikropočítačov + Sekcia Arduino

Moderátori: psichac, Moderátori

fkvrtak
Stály člen
Stály člen
Príspevky: 152
Dátum registrácie: 21 Okt 2012, 17:10
Bydlisko: ZM

DS1302

Príspevok od používateľa fkvrtak » 28 Dec 2012, 19:12

chcem si spravit hodiny v Bascome s atmegou8 a DS1302.
problem je ze v bascome nemam ds1302clock.lib
neviete kde by som ho stiahol, alebo poradit ako dalej bez tohto lib.

Dakujem
0

Používateľov profilový obrázok
jaromir
Power user
Power user
Príspevky: 4538
Dátum registrácie: 08 Júl 2011, 00:00
Vek: 40

Re: DS1302

Príspevok od používateľa jaromir » 28 Dec 2012, 19:23

A co takto si to naprogramovat sam?
Kam sa podela hrdost programamtorov, ze na vsetko potrebuju nejaku kniznicu?

Komunikacny protokol je pomerne jednoduchy, predpokladam ze pojde asi o 50 riadkov kodu. Mozeme sa na to pozriet spolocne, ak chces.
0

fkvrtak
Stály člen
Stály člen
Príspevky: 152
Dátum registrácie: 21 Okt 2012, 17:10
Bydlisko: ZM

Re: DS1302

Príspevok od používateľa fkvrtak » 28 Dec 2012, 19:36

ok, budem rad.
Len dopredu upozornim, ze s programovanim iba zacinam a zatial sa mi podarilo naprogramovat si teplomer IN/OUT s DS1621, ale ten je na i2c zbernici.
Problem je ze DS1302 nieje I2C, ale neaka ina zbernica. Asi microwire?
0

Používateľov profilový obrázok
jaromir
Power user
Power user
Príspevky: 4538
Dátum registrácie: 08 Júl 2011, 00:00
Vek: 40

Re: DS1302

Príspevok od používateľa jaromir » 28 Dec 2012, 19:39

Ked uz mas zmaknute I2C, nemozes pouzit DS1307 alebo PCF8563, resp. podobne RTC s I2C zbernicou?
0

fkvrtak
Stály člen
Stály člen
Príspevky: 152
Dátum registrácie: 21 Okt 2012, 17:10
Bydlisko: ZM

Re: DS1302

Príspevok od používateľa fkvrtak » 28 Dec 2012, 19:41

no ked sa mi nepodarilo zohnat DS1307 tak som vzal DS1302
0

Používateľov profilový obrázok
jaromir
Power user
Power user
Príspevky: 4538
Dátum registrácie: 08 Júl 2011, 00:00
Vek: 40

Re: DS1302

Príspevok od používateľa jaromir » 28 Dec 2012, 19:58

Jo ako ked vari Babica... ked nemas limetku, daj tam citron a ked nemas citron, drbni tam Fixinelu :D

OK, tak sa na to podme pozriet. Datasheet je tu http://pdfserv.maximintegrated.com/en/ds/DS1302.pdf a na strane 8 mas napisane ako urobit jednobytovy zapis alebo citanie. Treba manipulovat s tromi vodicmi.
CE ide do jednotky na zaciatku komunikacie. Potom treba urobit nejaky loop a bity vypluvat von po jednom, od najnizsieho bitu a vzdy potvrdit clockom.
teda nieco taketo

Kód: Vybrať všetko

for (i=0; i<8; i++)
{
if (data&0x01==0) DATA_PIN =0;
else DATA_PIN = 1;
CLOCK_PIN = 1;
delay_1us;
CLOCK_PIN = 0;
data = data >> 1;
}
teda nastavis pin podla stavu najniziseho bitu v slove, odclockujes, a data si posunies doprava, aby si mal v dalsom kole pripraveny dalsi bit.
Toto je rutinka na vyslanie jedneho bajtu. Pouzijes ju takto

Kód: Vybrať všetko

CE = 1;
posli_byte(adresa);
posli_byte(data);
CE = 0;
A mas poslane data do DS1302. Treba si este pozriet, ze prvy bit (resp. najnizsi bit) v prvom slove urcuje, ci ides prijimat alebo vysielat. Ak vysielas, robis to ako hore, ak prijimas, tak to urobis asi takto:

Kód: Vybrať všetko

data = 0;
nastav_data_pin_ako_vstupny;
for (i=0; i<8; i++)
{
CLOCK_PIN = 1;
delay_1us;
if (DATA_PIN==1) data = data|0x80;
CLOCK_PIN = 0;
data = data >> 1;
}
nastav_data_pin_ako_vystupny;
teda nastavis clock do jednotky, chvilku pockas, pozries si aky je stav data pinu. Ak je vysoky, tak data OR-ujes s hodnotou 0x80, cim vlastne nastavis najvyssi bit. Ak je nula, tak nic nerobis. Vzdy sa data zrotuju doprava, cim sa bity poposuvaju na spravne miesto.
Cele citanie jedneho bajtu bude potom vyzerat asi takto:

Kód: Vybrať všetko

CE = 1;
posli_byte(adresa);
data  = citaj_byte();
CE = 0;
Tie ukazky zdrojakov su pisane v pseudo-c-nezmyslenom jazyku, ale snad budu pochopitelne. Prepisat to do basicu bude jednoduche ked to pochopis. Treba sa dobre pozriet do datasheetu.
Pisal som to z hlavy, takze chyby su vyhradene :)

pozri sa este sem:
http://www.dontronics.com/rtc.html
http://playground.arduino.cc/Main/DS1302
http://www.phanderson.com/stamp/ds1302_des.html
http://www.nomad.ee/micros/ds1302.html
0

Pega
Stály člen
Stály člen
Príspevky: 192
Dátum registrácie: 28 Mar 2012, 08:52

Re: DS1302

Príspevok od používateľa Pega » 28 Dec 2012, 20:56

0

Používateľov profilový obrázok
boraicho
Ultimate člen
Ultimate člen
Príspevky: 12398
Dátum registrácie: 03 Feb 2007, 00:00
Bydlisko: Prešov
Vek: 35
Kontaktovať používateľa:

Re: DS1302

Príspevok od používateľa boraicho » 08 Feb 2024, 21:51

nema niekto funkčny program na henten obovod? diky
0
"Aj nevinne vyzerajúca súčiastka, môže byť príčinou nefunkčnosti zariadenia a tou kondenzator 100% je"
3D REBEL II + PLA + PETG
CNC 1810 na DPS

Používateľov profilový obrázok
budvar10
Pokročilý člen
Pokročilý člen
Príspevky: 904
Dátum registrácie: 15 Dec 2014, 10:55
Bydlisko: Košice

Re: DS1302

Príspevok od používateľa budvar10 » 09 Feb 2024, 07:13

Na internete sú mraky toho. Otázka je, kde ten program má bežať, resp. k čomu to chceš pripojiť.

Napr. Arduino/AVR:
https://github.com/msparks/arduino-ds13 ... r/examples
0

Používateľov profilový obrázok
boraicho
Ultimate člen
Ultimate člen
Príspevky: 12398
Dátum registrácie: 03 Feb 2007, 00:00
Bydlisko: Prešov
Vek: 35
Kontaktovať používateľa:

Re: DS1302

Príspevok od používateľa boraicho » 09 Feb 2024, 22:42

Ako nakoniec mi CHATGPT vygeneroval kod, samozrejme nefunčkný ale s minimalnými chybami. čiže už to funguje , porovnal som si to s tymto https://github.com/oagml/watering-timer ... ster/rtc.c

funguje to všetko, ale robi to chybu a neviem prisť na to kde je problem.
sekundy to počita takto a minuty tiež, toto mam na výstupe čo mi hádže dysplaj.

1 2 3 4 5 6 7 8 9 16 17 18 19 20 21 22 23 24 25 32 33 34 35 36 37 38 39 40 41 48 49 50 51 52 53 54 55 56 57 64 65 66 67 68 69 70 71 72 73 80 81 82 83 84 85 86 87 88 89

je to 60 sekund ale prečo to preskakuje čisla?

Kód: Vybrať všetko

unsigned char rtc_read(unsigned char address) {
    TRISB1=0;
    unsigned char i;
    uint8_t data = 0;
    RTC_CE_PIN = 1; // Aktivuje RTC
    RTC_CLK_PIN = 0;
    __delay_us(5); // ?asové oneskorenie
    for(i=0; i<=7; i++) {
        RTC_IO_PIN = (uint8_t)(0x01 & (address >> i)); // Nastaví adresu
        __delay_us(10); // ?asové oneskorenie
        RTC_CLK_PIN = 1; // Hodinový signál
        __delay_us(10); // ?asové oneskorenie
        RTC_CLK_PIN = 0;
    }
    RTC_IO_PIN = 0;
    TRISB1=1;
    __delay_us(5); // ?asové oneskorenie
    
    for(i=0; i<=7; i++) {
        data |= (uint8_t)(RTC_IO_PIN << i); // ?íta dáta
        __delay_us(5); // ?asové oneskorenie
        RTC_CLK_PIN = 1; // Hodinový signál
        __delay_us(10); // ?asové oneskorenie
        RTC_CLK_PIN = 0;
        __delay_us(5); // ?asové oneskorenie
        
    }
    RTC_CE_PIN = 0; // Deaktivuje RTC
    return data;
}
0
"Aj nevinne vyzerajúca súčiastka, môže byť príčinou nefunkčnosti zariadenia a tou kondenzator 100% je"
3D REBEL II + PLA + PETG
CNC 1810 na DPS

peterple
Ultimate člen
Ultimate člen
Príspevky: 2319
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: DS1302

Príspevok od používateľa peterple » 10 Feb 2024, 00:13

Pretože to má uložený čas ako dve BCD číslice. To znamená že po 09 dostaneš 10
čo je binárne 0001_0000
No a ty to vypisuješ desiatkovo a to je 16.
Vypisuj to ako hexa a bude to OK
1
Obrázok 1
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Používateľov profilový obrázok
boraicho
Ultimate člen
Ultimate člen
Príspevky: 12398
Dátum registrácie: 03 Feb 2007, 00:00
Bydlisko: Prešov
Vek: 35
Kontaktovať používateľa:

Re: DS1302

Príspevok od používateľa boraicho » 10 Feb 2024, 07:39

Vieš mi zhruba napísať ako to má vyzerať?
0
"Aj nevinne vyzerajúca súčiastka, môže byť príčinou nefunkčnosti zariadenia a tou kondenzator 100% je"
3D REBEL II + PLA + PETG
CNC 1810 na DPS

Atlan
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1079
Dátum registrácie: 01 Feb 2008, 00:00
Bydlisko: Kosice okolie

Re: DS1302

Príspevok od používateľa Atlan » 10 Feb 2024, 08:24

Z 8bit cisla odstranis horne 4 bity. A zostanu ti 1sekund.
Potom odstranis z 8bit cisla spodne 4 bity, vykonas posun vvpravo o 4 miesta a dostanes 10sekund
1
Obrázok 1

Používateľov profilový obrázok
boraicho
Ultimate člen
Ultimate člen
Príspevky: 12398
Dátum registrácie: 03 Feb 2007, 00:00
Bydlisko: Prešov
Vek: 35
Kontaktovať používateľa:

Re: DS1302

Príspevok od používateľa boraicho » 10 Feb 2024, 16:08

dakujem atlan, ked som tvoju vetu hodil do chatgpt tak to vygenerovalo tento kod ktorý funguje a hodiny mi idu ako maju :D

Kód: Vybrať všetko

unsigned char units = uloz_hodnotu & 0x0F; // získa jednotky sekúnd
unsigned char tens = (uloz_hodnotu >> 4) & 0x0F; // získa desiatky sekúnd
unsigned char seconds = tens * 10 + units; // spočíta celkový počet sekúnd
0
"Aj nevinne vyzerajúca súčiastka, môže byť príčinou nefunkčnosti zariadenia a tou kondenzator 100% je"
3D REBEL II + PLA + PETG
CNC 1810 na DPS

peterple
Ultimate člen
Ultimate člen
Príspevky: 2319
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: DS1302

Príspevok od používateľa peterple » 10 Feb 2024, 19:16

Hmm, otázka je prečo si sa to tej UI nepýtal rovno. Všetko čo si sa pýtal tu si sa mohol pýtať jej.
1
Obrázok 1
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Používateľov profilový obrázok
budvar10
Pokročilý člen
Pokročilý člen
Príspevky: 904
Dátum registrácie: 15 Dec 2014, 10:55
Bydlisko: Košice

Re: DS1302

Príspevok od používateľa budvar10 » 10 Feb 2024, 19:45

Kedysi dávno, keď som chcel použiť DS3231, v podstate podobný čip, preštudoval so si najprv datasheet. Všetko je tam napísané, HW, princíp funkcie, registre, práca so zbernicou, atď. To už som ale vedel veci okolo AVR. Trvalo to ale pár dní. Vtedy to bola novinka a neboli k tomu knižnice, voľne dostupné na nete.
Dnes ti dá AI na všetko odpoveď hneď, už ani gogliť nemusíš, alebo ísť na GitHub. Začínam vážne pochybovať, či to ide dobrým smerom. :pain:
0

Atlan
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1079
Dátum registrácie: 01 Feb 2008, 00:00
Bydlisko: Kosice okolie

Re: DS1302

Príspevok od používateľa Atlan » 10 Feb 2024, 20:44

Az zacnes nieco vazne programovat ta ti gpt bude na dve veci :D
0

Používateľov profilový obrázok
boraicho
Ultimate člen
Ultimate člen
Príspevky: 12398
Dátum registrácie: 03 Feb 2007, 00:00
Bydlisko: Prešov
Vek: 35
Kontaktovať používateľa:

Re: DS1302

Príspevok od používateľa boraicho » 11 Feb 2024, 09:36

niesom programator, a neprogramujem, som v zahraniči, a napadlo ma vziať RTC modul z poličky a vyvojovu dosku s PIC16F1939 reku nech sa nenudim po večeroch. to je cele.
Momentálne bojujem s teplotnym čidlom DS18b20 hažde mi to na vystupe divne čísla, neviem prečo. funguje lebo meni čísla na vystupe ked sa čidla dotknem lenže niekde je zrada hažde to -17000 a take bludy.
Hmm, otázka je prečo si sa to tej UI nepýtal rovno. Všetko čo si sa pýtal tu si sa mohol pýtať jej.
jasne že pytal, lenže je hlupa :D a generuje nefunkčne kody. možno ak by som mal tu platenu verziu ....

na githube neviem nič funkčne najsť dokonca aj tie kody ktore na githube som našiel s tym DS1302 , neobsahuju ten prevod čo som tu naposledy daval tak nechapem ako im to može fungovať.


atlan ano maš pravdu, je to na dve veci, ale trošku pomože, a nie nikdy nezačnem vážne programovať. Práca za pc nieje moja. Raz som pracoval za PC ked som kreslil 2D vykresy pre laser, ale vydržal som 2 tyzdne, fyzicky som to nezvladal tu prácu. Strašne som zaspaval.
0
"Aj nevinne vyzerajúca súčiastka, môže byť príčinou nefunkčnosti zariadenia a tou kondenzator 100% je"
3D REBEL II + PLA + PETG
CNC 1810 na DPS

Používateľov profilový obrázok
budvar10
Pokročilý člen
Pokročilý člen
Príspevky: 904
Dátum registrácie: 15 Dec 2014, 10:55
Bydlisko: Košice

Re: DS1302

Príspevok od používateľa budvar10 » 11 Feb 2024, 10:15

DS18B20, k tomu môžem napísať to isté ako som písal k DS3231. V datatsheete je dokonca funkčný diagram. Podľa neho som si napísal knižnicu. V čase, keď som to robil, našiel som jediný dostupný kód od PJRC.com a ten bol chybný.

Ja s PIC nerobím ale tu som našiel niečo:
https://github.com/simonbarker/pic-libr ... /DS18B20.c
V princípe je to to ale podobné na všetkých platformách.

Mimochodom, až 9. príspevok od môjho si napísal informáciu o aký MCU sa jedná.
To máš nejakú originál vývojovú dosku?
0

Používateľov profilový obrázok
boraicho
Ultimate člen
Ultimate člen
Príspevky: 12398
Dátum registrácie: 03 Feb 2007, 00:00
Bydlisko: Prešov
Vek: 35
Kontaktovať používateľa:

Re: DS1302

Príspevok od používateľa boraicho » 11 Feb 2024, 10:41

Aky mcu je použiťý nieje doležité, či už tak či onak, program je vždy ten istý.
Ano je to doska ktorú som robil dáávno.
https://svetelektro.com/phpbb/?w3=dmlld ... 90PTMzNzgy

idem pozrieť.
teplotu čidlo meria, ale neviem dostať rozumny vystup.
toto mam momentálne ale je to zle. ja to neviem prepisať do programatorskeho jazyka.
hladam aj po tých knižniciach napriklad čo si poslal, ako čítaju teplotu....

Kód: Vybrať všetko

temp = ds18b20_read_byte(); // Prečítaj menej významný bajt teploty
    temp |= ((unsigned int) ds18b20_read_byte() << 8); // Prečítaj viac významný bajt teploty

    if (temp & 0x8000) { // Ak je nastavený bit znamienka
        temp = (~temp) + 1; // Doplňková hodnota pre záporné číslo
        sign = -1;
    }

    temperature = (float) temp / 16.0 * sign; // Výpočet teploty
    return temperature;
0
"Aj nevinne vyzerajúca súčiastka, môže byť príčinou nefunkčnosti zariadenia a tou kondenzator 100% je"
3D REBEL II + PLA + PETG
CNC 1810 na DPS

Napísať odpoveď