forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
ATtiny25: změna frekvence oscilátoru za běhu programu
Jdi na stránku 1, 2, 3  Další
 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> AVR
 
rob.brno
Profesionál
Profesionál


Založen: 26.8.2013
Příspěvky: 53

PříspěvekZaslal: 31 březen 2014, 13:41    Předmět: ATtiny25: změna frekvence oscilátoru za běhu programu Citovat

Pro mini aplikaci potřebuju attiny25 provozovat kvůli spotřebě na nízkém kmitočtu 128kHz interním osc.

Lze měnit programově za běhu mcu kmitočet oscilátoru, jak(přepnout z default 8MHz na 128kHz)?
Nechci měnit fusebits a údajně jsou při nižších kmitočtech potíže s programováním(f_cpu > 4xf_isp).

Naprogramuju attiny25 přes ISP pomocí tohoto:
HW - http://arduino.cc/en/Hacking/ParallelProgrammer
SW - http://arduino.cc/en/Main/Software#toc2

Arrow administrator: přejmenováno z "mini Attiny aplikace"
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 720

PříspěvekZaslal: 31 březen 2014, 15:40    Předmět: Citovat

Pokud nechceš měnit fusebits, pak máš na výběr z 8000000 IntRC (defaultní nastavení) a prescalerů 1,2,4,8,16,32,64,128 a 256. Tedy kmitočty 8,4,2,1 MHz, 500,250 a 125 kHz. Pokud bys chtěl přepnrout na WatchDog oscilátor 128kHz, musíš přeprogramovat pojistky. Programování není problém ani při nízkých kmitočtech. Dělal jsem program pro ATtiny13A nastavenou na WatchDog oscilátor 128kHz s děličkou 8 = 16 kHz a programování bez problémů šlapalo. Teda - ne, že bych chtěl čekat, než by se mi do mcu nasypalo 32kB kódu, ale těch 366 bytů jsem tam nasypal v pohodě. Používám PRESTO a je nastavitelný pro hodiny mcu až do 2 kHz. Problémy s programováním mohou nastat pouze v případě, že programátor (resp. obslužný SW) nemá "dostatek trpělivosti" pro progamování s pomalými hodinami. Kromě toho, pokud použiješ default a softwareově si nastavíš prescaler třeba až na těch 125 kHz, pak máš defaultně nastaveno Fmcu na 1MHz (pojistka CKDIV8 je defaultně naprogramovaná) a tudíž při programování běží mcu na 1 MHz. Na nižší kmitočet si přepneš až po spuštění programu, takže si s pomalýma hodinama při programování nemusíš lámat hlavu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
rob.brno
Profesionál
Profesionál


Založen: 26.8.2013
Příspěvky: 53

PříspěvekZaslal: 01 duben 2014, 9:03    Předmět: Citovat

To vypadá jako dobré řešení, tedy i beze změny fusebits jsem schopen se dostat za pomocí reg.CLKPR až na 3,9kHz(1Mhz/256).
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 720

PříspěvekZaslal: 01 duben 2014, 9:30    Předmět: Citovat

Bez změny fusebits ne. Interní oscilátor je z výroby nastaven na 8 MHz. CLKPR je 1-256. Nejnižší dosažitelný kmitočet bez zásahu do pojistek je tedy 8000000/256=31250 Hz neboli 31,25 kHz. 1 MHz u ATtiny25 je defaultní kmitočet IntRC (8MHz) a defaultní nastavení CLKPR=8 => 8000000/8=1000000. IntRC je 8MHz z výroby a dá se přepnout (změnou pojistek, což nechceš) na 6,4 MHz. Bez zásahu do pojistek prostě musíš vycházet z 8 MHz.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
mpcz
Anonymní





PříspěvekZaslal: 31 červenec 2016, 11:28    Předmět: snížení spotřeby ATTINY85 na minimum Citovat

Zdravím,
potřebuji snížit odběr jednoduchého zapojení ATTINY85 na minimum.
Jaké jsou možnosti snížení SW-rem, používám programování skrze USB a Arduino 1.6.10, kdyby nebylo zbytí, zkusím i něco jiného.
Tiny po zapnutí udělá impuls 1 sec na výstupu a pak se natrvalo uspí do dalšího vypnutí a zapnutí napájení, čili nic složitého.
Jaký je minimální dosažitelný odběr? Pasovalo by mi tak okolo 100 microampér.
Děkuji.
mpcz, 31.07.2016
Návrat nahoru
 

 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 720

PříspěvekZaslal: 31 červenec 2016, 13:46    Předmět: Citovat

Pokud ATtiny85 udělá 1 sek. impulz a pak jde až do vypnutí spát, pak nemusíš vůbec řešit žádné hodiny. Po provedení impulzu nastavíš sleep mode na Power-down, zakážeš veškerá přerušení, eventuálně deaktivuješ všechny výstupy atd. a přepneš do sleep módu. Tím se ATtiny dostane do Power-down režimu s odběrem cca 0,1uA při 1,8V napájení (podle datasheetu). Při 5V bude odběr malinko vyšší, ale myslím si, že do 1uA by ses měl vejít i tak.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Anonymní






PříspěvekZaslal: 01 srpen 2016, 10:20    Předmět: Citovat

OK,
dík, jenomže já potřebuji, aby hned po startu měla TINY85 odběr řádu desítek až stovek mikroampér, zdrojem pro těch pár sekund provozu je pouze velký nabitý kondenzátor. A také, vzhledem k tomu, že programuji v ARDUINO Windows 10 jen nárazově, je pro mě i váš popis operací bohužel příliš všeobecný.
Děkuji za pomoc, mpcz, 01.08.2016
Návrat nahoru
 

 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 720

PříspěvekZaslal: 01 srpen 2016, 12:00    Předmět: Citovat

Nastavit Sleep Mode na Power-down, zakázat veškerá přerušení, deaktivovat všechny výstupy (= nastavit jako vstupní bez pull-up) a přepnout do Sleep módu. Co je na tom příliš všeobecného ? To je konkrétní sled operací, které uděláš po ukončení pulzu. Co je k tomu potřeba se dočteš v datasheetu.

Naposledy upravil Balů dne 01 srpen 2016, 13:08, celkově upraveno 2 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Anonymní






PříspěvekZaslal: 01 srpen 2016, 13:01    Předmět: Citovat

Zdravím,
z mého pohledu amatéra (v tomto oboru) všechno. V běžné praxi jsem se s těmito operacemi nesetkal, nevím, jak je v IDE zadat.
Pokud se tyto operace provádí PO ukončení pulzu, znamená to, že po celou dobu těch cca 5 sec. bude odběr těch klasických 10 mA?
Děkuji, mpcz, 01.08.2016
Návrat nahoru
 

 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 720

PříspěvekZaslal: 01 srpen 2016, 13:39    Předmět: Citovat

Nevím, jaký odběr má mcu v aktivním stavu při 8 MHz a nevím, jaký napětím ho napájíš. V datasheetu píšou, že v aktivním režimu při 1 MHz a napětí 1,8V má odběr 300uA = 0,3mA. Z toho mi vyplývá, že při 5V by měl mít cca 0,8mA, při 8 Mhz kmitočtu to bude o něco víc, ale nedokážu říci kolik. Podle mně nebude odběr mcu hrát na celkový odběr tak velkou roli. Budu trošku hádat, protože jsi sem nedal zapojení : Podstatnější bude odběr proudu zařízením z pinu (NPN tranzistor potřebuje na otevření proud do báze, lepší je použít nějaký FET), pokud napájíš procesor přes 7805-ku, pak největším žroutem proudu bude právě ta 7805-ka. A na to, abys přepnul mcu do Sleep módu nebo využil časovače se musíš podívat do datasheetu. -UINO Ti v tomhle pomůže jenom zapsat hodnoty do registrů. Jaké hodnoty a kam je zapsat musíš najít v datasheetu. To ostatně platí pro programování mcu vždy a je zcela lhostejné, jestli použiješ nějaké -UINO nebo ne. To, že Tě -UINO odřízne od hardwaru je jenom záležitost knihoven. Napájíš-li MCU z nabitého kondenzátoru bez stabilizátoru, pak máš šanci s odběrem něco udělat. Jestli tam máš 7805-ku, pak ne.


Pokud chceš během těch 5 vteřin minimalizovat odběr, tak v žádném případě nesmíš použít delay_ms(5000);, protože v tomto případě je mcu celou dobu v aktivním režimu.

Nejlepší je použít jednu z následujících variant :
--------------------------------------------------------------------------------------------------------------------------------------------
Použití timeru :

1) po zapnutí mcu jsou všechny IO jako vstupy bez pull-up => nastav požadovaný pin jak potřebuješ.
2) nastav čítač do režimu CTC tak, aby dočítal za 5 vteřin a vyvolal přerušení (obslužná rutina může zůstat prázdná)
3) povol přerušení
4) nastav Sleep mode na Idle
5) povol a aktivuj Sleep mode (program se zastaví a mcu se uspí do okamžiku vyvolání přerušení od čítače)
6) zastav čítač, zakaž přerušení
7) nastav Sleep mode na Power-Down
8) povol a aktivuj Sleep mode
9) jdi na bod 7 - sem by se program už nikdy neměl dostat, ale jistota je jistota ...

Tímto způsobem bude mcu během celé doby v aktivním režimu jen pár mikrosekund, zbytek času stráví v Idle, na konci přejde do Power-down. Pokud potřebuješ 5 sek. a ne jinak, musíš použít tento způsob. Nejdelší dosažitelný čas čítače pro 8 MHz mcu je cca 8,4 sek. Změnou prescaleru systémových hodin mcu se samozřejmě dá docílit i mnohem delších časů. Pokud použiješ prescaler 256, dostáváš se s Fmcu na 31250 Hz a dosažitelný čas timeru je pak cca 2147,5 sek.
--------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------
Nejnižší možnou spotřebu docílíš použitím WatchDog timeru :

1) po zapnutí mcu jsou všechny IO jako vstupy bez pull-up => nastav požadovaný pin jak potřebuješ.
2) WatchDog timer na 4 sek (pak je až 8 sek.) a přepni ho tak, aby jen vyvolal přerušení a ne reset mcu
3) povol přerušení
4) nastav Sleep mode na Power-Down
5) povol a aktivuj Sleep mode (program se zastaví a mcu se uspí do okamžiku vyvolání přerušení od WatchDog čítače)
6) zastav čítač, zakaž přerušení
7) nastav Sleep mode na Power-Down
8) povol a aktivuj Sleep mode
9) jdi na bod 7 - sem by se program už nikdy neměl dostat, ale jistota je jistota ...

Tímto způsobem bude mcu během celé doby v aktivním režimu jen pár mikrosekund, zbytek času stráví v Power-down.
Dosažitelné časy najdeš v tabulce. Tento timer má své vlastní hodiny a nezáleží tedy na Fmcu.
--------------------------------------------------------------------------------------------------------------------------------------------

A zapomeň na to, že když budeš používat -UINO, tak nepotřebuješ datasheety...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Martin
ATmega pouzivatel
ATmega pouzivatel


Založen: 5.1.2008
Příspěvky: 1455

PříspěvekZaslal: 01 srpen 2016, 19:18    Předmět: Citovat

kľúčové bude, čo má byť tých pár sekúnd akltivované. LED? Motorček? Čo?
Ak to má byť tiež napájané z toho kondenzátoru, tak s pánom bohom Smile
Ako písal Balú, vlastná spotreba MCU bude najmenší problém.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Anonymní






PříspěvekZaslal: 01 srpen 2016, 21:29    Předmět: Citovat

Zdravím,
těch pět sekund není aktivované nic, jen ATTINA. Takže tam problém nevidím.
Proč by ten stabilizátor měl způsobit neprůchodnost řešení? Že L05 je dost žravý vím, ale existují jiné typy, které mají odběr řádově menší, snad se to s nimi podaří. Odzkouším, uvidím.
Samozřejmě oceňuji rozsáhlý popis od kolegy Balů, bohužel díky mým chabým znalostem mi to není moc platné.
Asi kromě bodu jedna to totiž neumím v IDE napsat. Přesto děkuji.
Našel jsem knihovnu narcoleptic.h, její použití sníží odběr ATMELu na potřebnou míru. Bohužel je natvrdo napsaná na 328-ku, tam to funguje, odběr je neměřitelný. Při použití na ATTINY to samozřejmě naháže spoustu chybových hlášek o chybějícím sériovém portu atd. Pokusím se to z kódu vyházet, snad to pojede. Popř. zkusím pohledat, jestli to někdo neupravil i pro TINu. Nebo tam ten 328 nechám místo TINy. Uvidíme.
mpcz, 01.08.2016
Návrat nahoru
 

 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 720

PříspěvekZaslal: 01 srpen 2016, 22:21    Předmět: Citovat

Netvrdil jsem, že stabilizátor způsobí neprůchodnost řešení. Jenom to, že s lineárním stabilizátorem nemusíš nijak významně řešit odběr mcu, protože stabilizátor bude mít vždy mnohem větší a neovlivnitelný odběr, než procesor jako takový. Chtěl jsem Tě navést na to, kam a do který části datasheetu se podívat. Nejsme tady neochotni pomoct, občas najít chybu v kódu, kousek kódu napsat/poskytnout apodobně, jenže musíme vidět snahu i z druhé strany a ne jenom "neumím, neznám, nejde". To, že tvrdíš, že neumíš v IDE napsat REGISTR = HODNOTA svědčí o tom, že se prostě do datasheetu odmítáš podívat a radši budeš trávit mraky hodin prohledáváním Internetu, hledáním cizích řešení a lepením cizích kódů dohromady. Můžeš mi věřit, že tohle není cesta k tomu se něco naučit a donutit procesor "skákat, jak Ty pískáš". Odtud pak plynou dotazy typu "Už dva dny hledám knihovnu pro rozblikání LEDky a nemůžu nic najít ...". Zapomeň na -UINO a ber ho jenom jako nějaký Cčko s určitou podporou. Jeho výhodou je možnost použít ho jako programátor. Mám externí programátor a programy píšu v AVR Studiu - assembler nebo Cčko - podle druhu aplikace. Veškeré knihovny, které používám jsem si psal sám a vím tudíž, co dělají a jak to dělají a není pro mně problém použít 6-nožičkový miniaturní ATtiny10 ani velký 64-nožičkový ATmega64/128. Nikdy jsem nebyl líný jít krok po kroku podle datasheetu a zkoušet, co to dělá. Jenže to už dneska poněkud není IN. Dneska letí -UINO a knihovny. Bez toho už mnozí nejsou schopní napsat jediný řádek programu... Například takový UART není jenom Serial.begin(BaudRate), ale nastavení a možností má víc. Jenže bez podívání se do datasheetu tohle z -UINA nezjistiš a nevyužiješ.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Martin
ATmega pouzivatel
ATmega pouzivatel


Založen: 5.1.2008
Příspěvky: 1455

PříspěvekZaslal: 01 srpen 2016, 22:41    Předmět: Citovat

To je také vtipné.
5 sekúnd je aktivovaná iba ATtiina Smile
A čo robí? Ako sa "vidí", že zariadenie žije? To nemá jeho aktivácia žiaden "viditeľný" dopad na okolie?

Tak v takom prípade najmenší odber dosiahneš, keď bude celé zariadenie odpojené od napájania Smile

Inak, viem sa podpísať pod všetko čo napísal Balu.
Ale chápem aj to, že rôzne -UINA nalákajú kde akých adeptov, ktorí by inak k MCU ani nečuchli a potom sa divia (ak vôbec zistia), že to nie je iba o predžutých knižniciach.

Je skvelé, že Ťa to baví. Je skvelé, že sa môžeš toho ešte veľa naučiť Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Anonymní






PříspěvekZaslal: 02 srpen 2016, 2:16    Předmět: Citovat

Zdravím,
tak jste se pánové vzájemně pochválili a jiné pokritizovali, jen si poslužte.
Moje krátká rada, pokud by někdo něco podobného řešil a neměl tolik času na studium manuálů a výuku C++ pro tento jeden, ojedinělý projekt:
Použijte HT stabilizátor pro regulaci napětí, má mnohem menší spotřebu, než 78L05. V Arduinu použijte knihovnu narcoleptic.h, použití je triviální. Ta zařídí minimalizaci spotřeby TINY na potřebnou míru.
V této kombinaci vykoná TINA potřebnou operaci = po zapnutí 5 sec. čeká a pak hodí impuls cca 1 sec. Kondenzátor 2G je schopen napájet tuto sestavu okolo 15 sec., rezerva je dostatečná. Co jsem potřeboval, obvod dělá. Na samotný závěr mě napadlo, zda by se to nedalo vyřešit i legendární 2x 555-kou.
mpcz, 02.08.2016
Návrat nahoru
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> AVR Časy uváděny v GMT + 2 hodiny
Jdi na stránku 1, 2, 3  Další
 
Strana 1 z 3
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2017 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)