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
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?
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.
A tento triviální problém se mi nedaří vyřešit.
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í.
Kód: Vybrat vše
if ((setup == 1) && (hodiny >= vypni_displej) && (hodiny <= zapni_displej))
displej_off = 0; //vypnuto
else
displej_off = 1; //zapnutotak 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)) a displej bude svítit stále, protože druhá podmínka není splněna.[/code]
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();
}
}Kód: Vybrat vše
if (hodiny == vypni_displej)
displej_off = 0; //vypnuto
if (hodiny == zapni_displej)
displej_off = 1; //zapnuto