Časovač 24h s PIC, ako sa v praxi tvoria dlhé časové slučky?

Dobry den. Chcel by som sa opytat, akym sposobom ist na generovanie dlhych casov s PIC. Konkretne potrebujem vyrobit casovac, ktory by generoval jeden impulz za 24h, resp. 12 hodin. Presnost nie je kriticka. Ako sa to v praxi robi? Dekrementovanim z registrov by to asi bolo zlozite. Da sa to nejako cez WDT?
Dakujem

:arrow_right: administrator: přejmenováno z "Casovac 24h s PIC"

WDT nemá tak dlouhý interval. Vytvoř si pomocí jednoho časovače interval 1sec a ten pak přičítej do registru, až nabude hodnoty 86400 tak registr vynuluj a máš čas 24 hodin.

Petr: mal som hned napisat, ze som uplny zaciatocnik. Nerozumiem, AKO pricitat a do AKEHO REGISTRA. Mohol by si mi to, prosim ta, vysvetlit?

/////Pod slovom register si myslel TMR0 nastaveny ako citac?

Myslel jsem uživatelský registr, ten který si definuješ v paměti.
Bude asi rychlejší když ti to napíšu. Nebo se to chceš naučit sám ?

Program som pribalil do prilohy. Malo by to fungovat nasledovne:

Casova slucka nie je presne 1 sekunda, budeme ju vsak brat ako 1s.
Inkrementovanim REG3 sa dosiahne oneskorenie 128 sekund. Potom sa program presunie na navestie PRIP2. Kym prebehne program na PRIP3, ubehne 16 192 sekund. Register REG5 sa dekrementuje /obsahuje cislo 5/, takze 5*16192=81 920 sekund, co je 22 hodin, 45 minut, 36 sekund.

Moze tento program fungovat?
pic casovac.txt (702 Bytes)

Nemoze, nemas tam konfiguracne slova, a na zaklade coho si vyratal, ako dlho ktory cykus trva ? Ja osobne na to potrebujem minimalne frekvenciu procesora.
Euroblaster: Aky mcu chces pouzivat ? Ma este okrem toho impulu robit nieco ine ? Ak sa ces naucit programovat sam, pokracuj v teme, ak nie, napis mi SS, urobim ti to na pockanie.

Uz vidim chybu-ja som pocital kazdy cyklus za jednu sekundu. Opytam sa inac-princip je dobry? Na poistky som zabudol, mas pravdu.

Mikroprocesor mam 16F84A s krystalom 4MHz. Ide mi o to, aby sa kazdych 24 hodin objavil impulz. Isiel by som na ICQ, ale zabudol som heslo…

Naco pouzivas tak velky procesor, keby ti stacila aj trapna 10F200, alebo neco spolahlivejsie 12F683. Neporebujes k nim ani krystal, lebo maju INT_OSC. Nepozeral som organizaciu pamate u 84, ale uzivatelske registre musia byt aj skor ako na 0Ch.
A toto ma robit co ?? “INCFSZ REG1,1” ako ces inkrementovat bit ?
Cez co kompilujes ? nehlasilo chybu ?
Naco mas navastia prip1 - prip2, ked ich nikde nevolas ?
Tento program ale negeneruje ziaden impulz, a navyse sa ani neopakuje, raz zbehne a dole ako aj pises, je nekonecna slucka.
No a principialne ratanie casu je spravne, len tam oprav tie chyby a najlepsie by bolo aj vymenit procesor za nieco mensie.
A este jedna vec, ze cim vyssiu frekvenciu mas, tym presnejsi cas vies zadat.

Iny procesor nemam,mam len tu 16F84A. Samozrejme, ze som nad tym rozmyslal. Ale to bude mozne, az ked bude program hotovy a odladeny.

Uzivatelske registre naozaj zacinaju od OCh.

Ta jednotka je tam podla definicie instrukcie. Ak je za ciarkou hodnota 0, vysledok sa zapise do pracovneho registra W, ak je hodnota 1, vysledok sa zapise do registra pred ciarkou.

Nekompiloval som to, takze neviem.

S tymi navestiami som mal iny zamer, su tam nepotrebne, mas pravdu.

To viem, ze negeneruje. To uz si spravim pomocou BSF NAVESTIE. Ide mi o to, ci ta casova slucka funguje a ci je dlha 24h ± nejaka hodnota.

Ako to mys;lis s frekvenciou oscilatora a presnostou? Nerozumiem.

DAm tu ten blby priklad…budes mat frekvenciu 1Hz lepsie povedane instrukcia bude trvat 1s…tak ze najpresnejsie co vies urobit…bud bude prene sediet na sekundy alebo mas moznost len +1s alebo -1s tj pridat opozdenie o jednu instrkciu alebo skratit.
Ak bude trvat instrukcia 10Hz tj 0,1s vies to zregulovat +/- po 0,1s… napr ak by ti viesiel cas v prvom pripade 1,2s …vies to doladit len na 2,2s res na 0,2s…no presnost je daleko a za 24h budes…v no casom niekde inde.

V druhom pripade ak t i vijde cas 1,2s … vieš do nastavit na 1s lebo mas moznsot to stelovat po 0,1s.

Cim vysia frekvencia tym jemnejsie nastavenie… A to este nevies ze frekvencia sa u PIC deli 4 tj 1 instrukcia uz f84 trva fosc/4… pri 4Mhz oscilatore 1 instrukcia trva 1us

Atlan: dakujem, uz rozumiem, aka je zavislost medzi frekvenciou oscilatora a presnostou. Musim sa dalej pasovat s tym programom…