Vyčítání dat z DS3232 (nebo DS1307) pořád dokola

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
mtajovsky
Příspěvky: 3694
Registrován: 19 zář 2007, 02:00
Bydliště: Praha

#16 Příspěvek od mtajovsky »

V tom případě se ale změna projeví až při nejbližším srovnání času a hranice. Když budu mít například nastaveno vypnutí ve 21:00 a zapnutí v 06:00 a chtěl bych ve 21:30 posunout vypnutí až na 23:00, čili to ještě na hodinu a půl znovu zapnout, tak se to nezapne dříve než v 6 ráno.

Uživatelský avatar
AB1
Příspěvky: 312
Registrován: 23 lis 2009, 01:00

#17 Příspěvek od AB1 »

V tom případě se ale změna projeví až při nejbližším srovnání času a hranice. Když budu mít například nastaveno
Záleží jak často děláme to srovnání
Může být třeba v každém běhu hlavní smyčky (test má jen 11 cyklů)
a změna se projeví okamžitě.

Edit:

Ovšem, nefunguje to pozpátku.
Když mám nastaveno zapnutí na 11 hodin a v 10 hodin změním zapnutí na 9 hodin, tak nijak nereaguje, zapne se až v příští 9. hodině.

Uživatelský avatar
rob_brno
Příspěvky: 209
Registrován: 12 říj 2012, 02:00

#18 Příspěvek od rob_brno »

Ještě k tomu čtení z RTC bych viděl dvě další možnosti a to: Poprvé po restartu inicializovat z RTC a pak od aktivovaného výstupu z RTC v přerušení přičítat jedničku do čítače sekund, z toho lze jednoduše pomocí funkce time.h konvertovat na datum a čas. A nebo pokud se zařízení občas vypíná(např.jednou denně nebo týdně), tak po inicializaci z RTC přičítat sekundy podle hodin mcu(pak můžeš RTC napájení přes výstup mcu nebo FET úplně odpojit). Ono se to může trochu rozejít, ale pokud se to občas vypíná, tak se to vždy inicializuje(dělám to tak u cyclocomputeru).

Uživatelský avatar
Atlan
Příspěvky: 4499
Registrován: 10 kvě 2004, 02:00
Bydliště: Košice

#19 Příspěvek od Atlan »

Uz na prvej stranke som dal podmienku ako to jenoducho urobit, nechapem co tu este tak komplikovane riesite.

Kód: Vybrat vše

//inicializacia vyp=22; zap=6;

//podmienka
if ((hod>vyp)|(hod<zap)) lcd_string("Displej OFF"); else  lcd_string("Displej ON ");

hotova vec http://youtu.be/WePF-IR5ed8 uz by to malo ist
Naposledy upravil(a) Atlan dne 03 bře 2016, 16:39, celkem upraveno 2 x.

Uživatelský avatar
jirka89
Příspěvky: 271
Registrován: 24 úno 2006, 01:00
Bydliště: Zlín

#20 Příspěvek od jirka89 »

Video je soukromé. Nejde se kouknout. Hned jak dneska dorazím domů, tak to vyzkouším.

Uživatelský avatar
jirka89
Příspěvky: 271
Registrován: 24 úno 2006, 01:00
Bydliště: Zlín

#21 Příspěvek od jirka89 »

Program klidně dám, dyť to není nic tajného: ;)

A konkrétní zobrazování na displeji mám zde:

Kód: Vybrat vše

ISR (TIMER1_OVF_vect){	
	TCNT1 = 65535 - 250;	//pro preruseni kazdych 1ms => (1ms/4us = 250)	
	//zobr_cas(hours, minutes, seconds, tecka);
	PORT_BLANK ^= (1 << BLANK);
	
	if (double_click == 1)	//rezim nastaveni
	{
		nastaveni_hodin();	//zavola se funkce, ktera ridi nastaveni hodin
	} 	
	if ((double_click == 0) && (displej_off == 1)) //normalni rezim zobrazeni a displej bude zapnut stale
	{
		zobrazeni_casu();	//funkce, ktera zobrazi cas
	}
	if ((double_click == 0) && (displej_off == 0))	//rezim, kdy bude displej vypnut
	{
		zobr_vlastni(20,20,20,20,20,20);	// na vsech digitech nezobrazi nic
	}
}
A zbytek kódu je zde: http://paste.ofcode.org/W9raRfxu6gxD4MFX7NbVuT

Jenom jsem tam nedával inicializaci. Snad je to aspoň trošku přehledné.

Uživatelský avatar
mtajovsky
Příspěvky: 3694
Registrován: 19 zář 2007, 02:00
Bydliště: Praha

#22 Příspěvek od mtajovsky »

Jeejda píše: Z logiky věci, když chci něco nastavovat na vyplým zařízení, tak ho musím nejdřív zapnout, že…
Na jakém vyplém zařízení? Řešíme tu obecnou věc, jak nastavovat zapnutí nebo vypnutí v daném denním intervalu. A pokud chci reakci na změnu nastavení co možná nejdříve, tak způsob, který navrhnul AB1 nevyhoví.

Co mám zkušenosti se zákazníky, tak s přístupem "když jste si to jednou nastavili, nemůžete to zpětně změnit" by mě brzo vyfakovali.

Uživatelský avatar
mtajovsky
Příspěvky: 3694
Registrován: 19 zář 2007, 02:00
Bydliště: Praha

#23 Příspěvek od mtajovsky »

Zařízení se zhasnutým displejem není vypnuté zařízení. Klidně si dovedu představit tlačítko, kterým se displej rozsvítí je-li zhasnut (variantní funkce některého tlačítka při zhasnutém displeji) a umožní změnu nastavení. Ta by se pak projevila při nejbližší změně času, tedy třeba do 1 minuty od nastavení.

Ad posouvání času dozadu - tak tohle to bylo opravdu zbytečné. Cílem je možnost kdykoliv zadat nové nastavení a jeho uplatnění co nejrychleji, a konkrétní příklad jsem, myslím, jasně popsal. Nikoliv revokovat historii.

Uživatelský avatar
Atlan
Příspěvky: 4499
Registrován: 10 kvě 2004, 02:00
Bydliště: Košice

#24 Příspěvek od Atlan »

Je to marny, je to marny....
Ja mam na zosilnovaci osetrene tak ze po vypnuti displej svieti 20% intenzitou 10 minut a potom zhasne. Zatlacenim "lubovolneho" tlacidla na DO sa rozsvieti displej naplno na 10s.
Tak sa mozes inspirovat.

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“