Sháním program v ASM pro RTC (RealTimeClock) na 16F877A

Ahoj, delam si takove udelatko s merenim U, I, Teploty, (16F877A, DS18S20) a mam k dispozici jeste cca 4,5kB volne eeprom. Rad bych si funkcnost “mericiho udelatka” rozsiril o hodiny a datum. Pro presny cas (nezavisly na PICu) se pouzivaji RTC s krystalem 32,768kHz. Hledal jsem nejake info, ale co jsem nasel, tak bud bylo pro AMR nebo kdyz uz jsem nasel neco pro PIC, tak zdrojak je v C a ja touzim po ASM. Prosim, ma nekdo tip/odkaz/info na ASM s nejakym RTC, pokud mozno primo pro 16F877A (pro studium) kompletni jednoduchy funkcni model ?
Dekuji

:arrow_right: administrator: přejmenováno z "16F877A + RTC (RealTimeClock)"

S externím RTCC jsem zatím nedělal, ale u jednoho zařízení s PIC16F628A jsem hodiny řešil. Většina PICů má Timer1 připravený pro připojení pomalého krystalu - typicky hodinkového 32768Hz. To umožňuje vyvolávat přerušení přesně po sekundách - pak už jen stačí pár inkrementací a pár podmínek pro napsání “vlastního RTCC” - já to mám asi na cca 70 instrukcí včetně přestupného roku (nemám tam ale letní/zimní čas, protože jsem to nepotřeboval a nechtělo se mi studovat pravidla, jak se vlastně ten čas mění). Krystal tam mám s kondíkama 22pF a 10pF+kapacitní trimr pro jemné doladění - viz.: https://forum.mcontrollers.com/t/presnost-krystalu/378/1
Otázka je přesnost - softwarově to můžež zkombinovat s teplotním čidlem, ale to bys musel delší dobu testovat…

Zařízení mám zálohováno NiMH akumulátorem 3,6V, abych nemusel nastavovat čas po výpadku napájení.

Dik za info. U me ta presnost je docela dulezita, pac to moje “udelatko” bude nejen merit ruzne hodnoty napajeni a okolni teploty, ale ve finale bych byl rad aby to i prepocitavalo hvezdny cas podle aktualniho casu a datumu pro ustaveni montaze astronomickeho dalekohledu na hvezdu polarka, ktera je spise znama jako Severka.

V tom případě bych šel do DCF77 viz.: pandatron.cz/?772&digitalni_hodiny_rizene_dcf77, dhservis.cz/dalsi/hodiny.htm, flajzar.cz/hodiny-a-casovace-1/dcf-prijimac.htm.

O DCF jsem taky jiz drive uvazoval, bohuzel prijimac je moc velky a nevleze se mi do brabicky “udelatka”. Takze pro me je reseni nejaky ten obvod RTC.

Pokud jsi zvládl napsat program pro DS18S20, zvládněš si napsat sám program i pro DS1302 a nemusíš nic shánět.

Program pro DS18S20 jsem nenapsal, mam ho z tohoto fora pac me znalosti nejsou tak velke. Stejny pripad je ted i pro to RTC. Ja se pak z tech programu snazim neco naucit a pochopit ve spolupraci s datasheetem, ktery si stahnu z netu.

Nazdar.
Mne sa viac osvedčilo DS1307,komunikuje po I2C a overené rutiny na túto komunikáciu máš aj napríklad tu:
https://forum.mcontrollers.com/t/rezistor-u-mosfetu-a-microchipu/156/1
A navyše nemusíš zháňať ten X tal z kapacitiu 6pF ktorý potrebuješ pri DS1302 :frowning:
Relatko.

No, ale i u DS1307 je použit externí krystal, i když se “sehnatelnou” kapacitou. U DS1302 bylo nutno kapacitu dokorigovat externím kapacitním trimrem, jinak byla nepřesnost řádově několik sekund denně. I pak ale nebylo možno dosáhnout vyšší přesnosti než asi 0,5s denně, protože to lítalo s teplotou a podle mne i s měnící se vlhkostí. Otázkou je, zda lítala kapacita toho trimru nebo samotný krystal.

Výhodou DS1307 proti DS1302 je i programovatelný SQW výstup (až 1Hz), dále detekce výpadku napájení s automatickým přechodem do záložního režimu a práce s přestupným rokem.

Myslím. že použití externího RTC obvodu je dnes výhodnější, než psát celé hodiny softwarově. Za cenu jednoho obvodu navíc v ceně okolo 30,- Kč podstatně zjednoduším a zpřehledním software.

Vl.