Hodiny s Atmega8

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

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#46 Příspěvek od FHonza »

S tím "if" na konci main() se ale stejně při každém přerušení displej na okamžik zapne.

Uživatelský avatar
buchar
Příspěvky: 57
Registrován: 28 říj 2007, 02:00
Bydliště: Násedlovice

#47 Příspěvek od buchar »

A jak často a na jak dlouho se zapne? Bude to mít velký vliv na vybíjení baterie?

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#48 Příspěvek od FHonza »

To přerušení se volá jednou za 1/256 sekundy. Vliv na vybíjení baterie má hlavně ten "jalový" chod MCU v main(). V aktivním stavu odebírá samotná ATMega8 cca 4mA. Záleží na velikosti napájecího napětí a frekvenci hodin.

Uživatelský avatar
buchar
Příspěvky: 57
Registrován: 28 říj 2007, 02:00
Bydliště: Násedlovice

#49 Příspěvek od buchar »

Z toho co píšeš nejsem moc moudrý, ale hodiny se napájí 5V, jako záložní baterii jsem použil CR2032 (3V) a nevím co myslíš "frekvencí hodin". V zapojení je krystal 14,7456MHz a Atmega bere frekvenci z tohoto krystalu (fuses L-FF, H-C9).
https://ok1kvk.cz/clanek/2010/digitalni ... s-atmega8/

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#50 Příspěvek od FHonza »

Tou frekvencí hodin myslím takt procesoru, v tvém případě je to těch 14,7456 MHz. Čím vyšší napájecí napětí a frekvence, tím větší spotřeba.

MCU má možnost uspání, kdy má sníženou spotřebu. A u těch hodin MCU většinu času jen hlídá tlačítka (a teď i napájení), přitom by mohl být uspán.

Starší, ale stále pěkná kniha je Programujeme AVR v jazyku C od Ondřeje Závodského. Pro začátek vřele doporučuji. Najdeš tam i režimy spánku MCU.

Uživatelský avatar
buchar
Příspěvky: 57
Registrován: 28 říj 2007, 02:00
Bydliště: Násedlovice

#51 Příspěvek od buchar »

Takže mi radíš s tou mojí úpravou kódu ještě uspat procesor při odpojení napájení a provozu na záložní baterii?
Na tu knihu určitě mrknu.

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#52 Příspěvek od FHonza »

Přesně tak. A při chodu z baterie bych ani netestoval tlačítka. Stejně nesvítí displej.

Uživatelský avatar
buchar
Příspěvky: 57
Registrován: 28 říj 2007, 02:00
Bydliště: Násedlovice

#53 Příspěvek od buchar »

Testování tlačítek při vypnutém displeji je stejně hloupost.
Udělal jsem si ještě teploměr skoro stejné konstrukce jako hodiny (ze stejného webu) a mám velmi malé displeje na obě konstrukce a chci si je dát do auta. Takže bych musel při každém nastartování nastavovat hodiny. Proto řeším tuto zálohu z baterie. A nebo by pořád byly v chodu i s teploměrem na autobaterii. I když je to baterie s velkou kapacitou, nevím jak by se vybíjela, když bych chtěl jet třeba až po delší době (týden, dva, tři....)

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#54 Příspěvek od FHonza »

Použij nějaký RTC obvod. K tomu jsou určeny. Třeba DS3231 nebo DS1307.

Uživatelský avatar
buchar
Příspěvky: 57
Registrován: 28 říj 2007, 02:00
Bydliště: Násedlovice

#55 Příspěvek od buchar »

To mě taky už napadlo, ale ten má svůj hodinový krystal a nevím jak bych to spolu se stávajícím obvodem spářil.

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#56 Příspěvek od FHonza »

Nijak, MCU pak může využívat svůj vnitřní oscilátor. Přesnost času na něm nebude záviset. Komunikuje s RTC přes I²C. RTC si můžeš představit jako paměť, ve které se aktualizují data dle reálného času. MCU jednou za zvolenou dobu z RTC přečte reálný čas. Po odpojení napájení "jede" RTC obvod na baterii.

Případně spíš vyber DS3231, je přesnější.

Uživatelský avatar
buchar
Příspěvky: 57
Registrován: 28 říj 2007, 02:00
Bydliště: Násedlovice

#57 Příspěvek od buchar »

Mrknu se na to. Ono to moje řešení není 100%ní. Nechal jsem celou noc a celý den hodiny vypnuté jen na záložní baterii a po zapnutí byl displej vynulovaný. Toto řešení je jen na krátkodobé vypnutí hodin (výpadek elektřiny, přenesení hodin na jiné místo....).

Uživatelský avatar
buchar
Příspěvky: 57
Registrován: 28 říj 2007, 02:00
Bydliště: Násedlovice

#58 Příspěvek od buchar »

Tak jsem tady zpátky. Myslel jsem, že dokážu hodiny doplnit o RTC obvod, ale velice jsem se mýlil. Po konstrukční stránce bez problémů, ale neumím upravit kód tak, aby spolu MCU a DS1307 komunikovali.
Nejste-li z mých dotazů začátečníka v "C" unaveni a nebo najde-li se někdo jiný kdo by mi pomohl až do fáze plné funkčnosti, tak napište a pomozte prosím.
Díky

Uživatelský avatar
Mahoney
Příspěvky: 347
Registrován: 26 říj 2019, 02:00

#59 Příspěvek od Mahoney »

Protože tě, dle mého názoru a nic ve zlém, trochu zavedl. Řešil jsi jednoduchý problém a vyřešil jsi ho v daném kontextu ke spokojenosti. "Jalový chod" MCU nevadí když to MCU prostě odměřuje čas, a dělat tam nějaké uspávání a přidávat kvůli tomu RTC je prostě už měnění toho kontextu a jiná konstrukce. Já bych to nehrotil. S RTC si stejně moc nepomůžeš, protože i to potřebuje záložní baterku, nějakou kontrolu atd. Nestačí výdrž? Lze dát místo CR2032 třeba dva nebo tři alkalické AAA články do držáku a je to taky řešení. Když máš červený, tak za mě třeba například použít nějaký SRWA displej (vysokosvítivý) a nechat segmenty svítit na málo, tím dosáhneš lepšího výsledku co se týče úspory (proudu i času) daleko jednodušeji.

Uživatelský avatar
buchar
Příspěvky: 57
Registrován: 28 říj 2007, 02:00
Bydliště: Násedlovice

#60 Příspěvek od buchar »

Díky za reakci Mahoney. Takže myslíš, že nemá smysl se v tom vrtat? Mě taky napadlo, že by se to zapojení i s kódem muselo trochu víc překopat. Jen jsem doufal, že někdo bude vědět o nějakém použitelném řešení, ale moje požadavky a tahle konstrukce asi takové řešení nemají.
Použil jsem malinký displej zeleně svítící ze settopboxu, aby to celkově v autě nezabralo moc místa.

Odpovědět

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