Vyčítání dat z DS3232 (nebo DS1307) pořád dokola
Moderátor: Moderátoři
Vyčítání dat z DS3232 (nebo DS1307) pořád dokola
Zdravím Vás přátelé,
Mám jeden dotaz, na který jsem nikde nenašel odpověď, tak to zkusím zde.
Jsou obvody RTC (např. přímo DS3232) nějak limitované výpisem po I2C? Pro upřesnění, můžu se ho pořád dokola dotazovat na čas, datum,.... třeba v nekonečné smyčce, nebo bych se měl dotazovat jednou za sekundu?
Nebo se dotázat jednou při inicializaci a pak ho nechat být?
Mám jeden dotaz, na který jsem nikde nenašel odpověď, tak to zkusím zde.
Jsou obvody RTC (např. přímo DS3232) nějak limitované výpisem po I2C? Pro upřesnění, můžu se ho pořád dokola dotazovat na čas, datum,.... třeba v nekonečné smyčce, nebo bych se měl dotazovat jednou za sekundu?
Nebo se dotázat jednou při inicializaci a pak ho nechat být?
Stavím si easy hodiny zálohované DS3232. S tím, že k přesnému nastavení použiju buť DCF nebo ESP8266 v režimu NTP.
Ale to se ještě rozmyslím. Takže data v obvodu DS3232 se aktualizují jedině, pokud se budou lišit minuty nebo hodiny od dat získané z DCF nebo ESP.
Což bude podle mého odhadu jednou za uherský rok.
Ale to se ještě rozmyslím. Takže data v obvodu DS3232 se aktualizují jedině, pokud se budou lišit minuty nebo hodiny od dat získané z DCF nebo ESP.
Což bude podle mého odhadu jednou za uherský rok.
S presnosti bych si nelamal hlavu. Je tam TCXO, ja mam podobny obvod od maximu a ulitava to za rok o par sekund. Je tam registr do ktereho se da nahrat korekce rychlosti oscilatoru, tim se da pomerne pekne vychytat presnost. Nejprve jsem uvazoval ze to povesim na GPS, ale nakonec jsem se na to vyprdnul.
A abych nezakládal nové téma, zkusím se zeptat tady. Hodiny už mám hotové. LCD displej jede jak má, ale chtěl jsem si přidat a vypínání displeje v nějakém časovém rozmezí.
A tento triviální problém se mi nedaří vyřešit.![Very Happy :D](./images/smilies/icon_biggrin.gif)
Jde o to, že se mi nyní displej vypíná pouze od hodnot 00h do třeba 07h. Ale když zadám rozmezí 23h až 07, tak se nevypne. Je to proto, že mám blbě podmínku, ale nenapadá mě, jak ji upravit, aby to fungovalo. Třeba mi někdo tady napoví.
A tento triviální problém se mi nedaří vyřešit.
![Very Happy :D](./images/smilies/icon_biggrin.gif)
Jde o to, že se mi nyní displej vypíná pouze od hodnot 00h do třeba 07h. Ale když zadám rozmezí 23h až 07, tak se nevypne. Je to proto, že mám blbě podmínku, ale nenapadá mě, jak ji upravit, aby to fungovalo. Třeba mi někdo tady napoví.
![Very Happy :-D](./images/smilies/icon_biggrin.gif)
Kód: Vybrat vše
if ((setup == 1) && (hodiny >= vypni_displej) && (hodiny <= zapni_displej))
displej_off = 0; //vypnuto
else
displej_off = 1; //zapnuto
Ano, ale když dám "vypni_displej = 23",
tak podmínka hodiny>=vypni_displej už nebude splněná, protože nastavím třebo hodiny na 3 ranní.
Potom podmínka bude:
a displej bude svítit stále, protože druhá podmínka není splněna.[/code]
tak podmínka hodiny>=vypni_displej už nebude splněná, protože nastavím třebo hodiny na 3 ranní.
Potom podmínka bude:
Kód: Vybrat vše
if ((1== 1) && (3>= 23) && (3 <= 6))
IMHO stačí jednoduchá podmínka:
Kód: Vybrat vše
if(dolni_mez < horni_mez) // meze nejsou pres pulnoc
{
if(cas > dolni_mez && cas < horni_mez) // jsme v rozmezi ?
{
vypni_displej();
}
else
{
zapni_displej();
}
}
else // meze jsou pres pulnoc
{
if(cas > dolni_mez || cas < horni_mez) // dolni mez - pulnoc nebo 0 - horni mez
{
vypni_displej();
}
else
{
zapni_displej();
}
}
Možná by stačilo
Kód: Vybrat vše
if (hodiny == vypni_displej)
displej_off = 0; //vypnuto
if (hodiny == zapni_displej)
displej_off = 1; //zapnuto