ahoj, existuje nějaká knihovna pro Atmega8 v Céčku, která by třeba napojena na časovač emulovala práci s datem a časem? nebo alespoň s časem? Zejména porovnání dvou časových úseků, start, stop. ještě proč to potřebuji - primárně potřebuji něco udělat jednou za cca 15 minut či půl hodiny a časovač 1 už mám obsazený:( /navíc jej programově vypínám a zapínám/ .
Fórum › Mikrokontroléry
Práce s časem v C pro Atmega8
jenže časovač nula je 8bit, což i při nejnižší možné frekvenci je cca 30 x do sekundy přerušení:(
napadá mne něco jako odečet od počtu tiků od startu mcu, ale nic takového jsem nenašel:( přece jen třeba v linuxu jde o 32bit proměnnou, nepletu-li se.
To Anonymní uživatel : jenze ve vetsine z nich muzes jen pripocist k dalsi promenny a az kdyz dosahne promenna urcite hodnoty (napriklad 30x/s -> 30*60s*15min) tak provest tu cinnost nebo jen nastavit flagy pro provedeni cinnosti v hlavni smycce
to chapu, jenže 30x za sekundu se zvýšením proměnné je docela dost (ano, můžu tam dát nějaký longtyp++) a testovat v hlavnís myčce, zda není překročena hodnota, jenže pak procesor pořád něco dělá a zbytečně to žere. ach jo. dávat třeba NE555 se mi tam nechce:)
myslíš, že náročnost na energii je stejná - smyčka a obsluha přerušení? tam toho přece dělá mnohem víc. ale je fakt, že do sleep modu ho nedávám.
ještě se tedy zeptám s dovolením na jednu věc (a díky za předchozí i následující odpovědi:) ). Jak je to se souběhem přerušení od časovačů? Obsluhu v přerušení řeším tak, že:
1. zakážu ostatní přerušení
2. zapamatuji registry (to zatím nedělám, ale asi by se mělo:-) )
3. udělám obsaluhu daného časovače
4. obnovím registry
5. povolím ostatní přerušení
co se stane, když obsluhuji jeden časovač, jsem tedy v bodě (3) a najednou dojde k přetečení časovače druhého? Nebo k němu nedojde, protože je zakázané přes cli přerušení? Snad jsem to napsal srozumitelně. Díky.
nemyslim.. instrukce jako instrukce...
at uz je to mul nebo nop tak stejne se musi vykonat
pokud neuspavas tak muzes spotrebu snizit snad jen vypnutim nepotrebnejch periferii... urcite to umi mega88 tam to pouzivam..
pokud mas hlavni smycku jen while (1) { } tak se da vyuzit toho uspani uplne v klidu a dost to pomuze ...
ja daval treba:
set_sleep_mode(SLEEP_MODE_IDLE); // ci nejak tak - hlavne si nevypnout casovace :D
while (1) {
sleep_mode(); // probudi se po preruseni nebo timeoutu wdt
}
spis otestuj spotrebu proudu tim atmelem ... se sleep a bez nej
zkusím, testnu to. dík. jo a jak tedy ty souběhy přerušení?
Anonymní uživatel napsal:
zkusím, testnu to. dík. jo a jak tedy ty souběhy přerušení?
Kdyz nastane preruseni, tak se nastavi patricny bit v patricnem Interrupt Flag Registru a provede se program preruseni a po nem se teno bit vynuluje.
Kdyz je nastaveno vice techto flag bitu(nastane vice preruseni), tak se preruseni vykonaji postupne, dle priority.
Obsluhu v přerušení řeším tak, že:
1. zakážu ostatní přerušení
2. zapamatuji registry (to zatím nedělám, ale asi by se mělo:-) )
3. udělám obsaluhu daného časovače
4. obnovím registry
5. povolím ostatní přerušení
V céčku stačí bod 3. Body 1. a 5. dělá procesor automaticky (zakáže všechna přerušení, ne jen ostatní) a body 2., 4. udělá překladač.
co se stane, když obsluhuji jeden časovač, jsem tedy v bodě (3) a najednou dojde k přetečení časovače druhého?
Pokud během obsluhy přerušení vznikne další jedno nebo více přerušení, budou postupně obsloužena po skončení právě probíhajícího. Žádné přerušení se neztratí, procesor si všechny pamatuje (pomocí příznaků přerušení). Pokud čeká na obsluhu více přerušení, přijde první na řadu to s nejvyšší adresou.
Co takhle použít přímo "Real Time Counter with Separate Oscillator"? na mega16 mi to chodí dobře a na mega8 by myslím mělo taky. Stačí připojit krystal 32 768Hz na příslušné piny a pak použít druhý 8-bitový časovač. Díky nízké frekvenci krystalu se dá generovat přerušení přesně jednou za sekundu, což se ideálně hodí pro programování použitelných hodin a následně třeba vytvoření nějakého odpočtu.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Zjištění a práce s časem — založil hejnallukas
MySQL, PHP, práce s časem — založil Jiří
Práce pro .NET vývojáře - juniory, vhodné pro studenty — založil falzu
Dobrá práce pro dobrého PHPkáře — založil FriendlyHeadHunter
Práce pro programátora MS BI Backend - SQL — založil Olinas
Moderátoři diskuze