U jedné časoměrné aplikace s Atmelem jsem potřeboval napájení procesoruzálohovat baterií. Pod vlivem obdobných zapojení s PICy jsem předpokládal,že jako u většiny CMOS obvodů, bude příkon přímo úměrný pracovnímu kmitočtu.Pokud je při 24 MHz spotřeba obvodu 16 mA, měla by být při použití hodinkovéhokrystalu 32,768 KHz pouhých 22uA. Po připojení krystalu a vyřešení problémus jeho spolehlivým rozkmitáním však byla naměřena spotřeba cca 6 mA. Pohlubší analýze byly zjištěny příčiny této nesrovnalosti a byly stanovenydále popisované zásady pro optimalizaci pracovních podmínek procesoru tak,aby byl použitelný i v nízkopříkonových bateriových aplikacích.
Příčiny vyššího příkonu procesoru
Programová paměť FLASH EPROM je aktivní pevnou část strojového cyklu.Pohledem do
katalogu pamětí FLASH lze zjistit jejich spotřebu v aktivnímstavu (dle typu) cca 10 až 20 mA. To
je podstatně více, než u pamětíCMOS UV EPROM, případně OTP EPROM používaných v
PICech.
Při snižování frekvence zůstává střída aktivace paměti konstantní atím i příspěvek její spotřeby k celkové spotřebě procesoru. Tento proudlze odvodit z rozdílu příkonu aktivního a IDL režimu při nízkém kmitočtua činí 4,8 mA při 5 V, případně 1,65 mA při 3 V. Znamená to, že snižovánímfrekvence roste energie potřebná pro vykonání jednoho strojového cyklu.Problém by mohl vyřešit jedině výrobce procesoru, kdyby omezil vnitřnímčasováním aktivní dobu programové paměti pouze na dobu nutnou pro přečteníinstrukce. Jenže výrobce tak neučinil. Proto je výhodné, aby při požadavkuna nízkou výpočetní rychlost procesor pracoval s vyšším kmitočtem a pravidelněpřecházel do režimu IDL, kde se paměť nepoužívá. Pokud však bude kmitočetpříliš vysoký, spotřeba v režimu IDL bude zvyšovat celkovou spotřebu procesoru.Proto je nutné hledat optimální kmitočet.
Spotřeba oscilátoru
Spotřebu oscilátoru je možno podstatně ovlivnit způsobem připojeníkrystalu. Pokud oscilátor
kmitá, k jeho vlastní spotřebě se přičítá proudz výstupu do obvodu krystalu.
Zatímco krystal kmitá sinusově, průběh výstupníhonapětí procesoru je
obdélníkový a vlivem překmitávání je i napětí na
vstupnístraně omezováno na obdélníky. Vznikají vyrovnávací proudy,
které zvyšujícelkovou spotřebu až o 1 mA. Řešením je zařazení odporu do
série s výstupemprocesoru (vývod č. 4). Odpor navíc zlepšuje stabilitu kmitočtu
oscilátoru,což oceníme v časoměrných aplikacích. Příliš velká
hodnota odporuvšak opět spotřebu zvyšuje, neboť nakmitané napětí se sníží
tak, že výstupnístupeň oscilátoru přechází do lineárního režimu.
Optimální velikost odporuje závislá na kmitočtu krystalu. Pro kmitočty 3 až 4 MHz je
optimální hodnota2K2. Při kmitočtech nad 12 MHz je nutné odpor vyřadit.
Princip minimalizace spotřeby
Při minimalizaci spotřeby je nutné, aby procesor nebyl časově plněvytížen a aby mohl pravidelně
přecházet do úsporného režimu IDL. Úkolemminimalizace bude stanovit takový
kmitočet krystalu, při kterém bude vzhledemk požadované střední výpočetní
rychlosti spotřeba minimální. Pro tentoúčel byla uskutečněna řada měření spotřeby s
různými kmitočty krystalůjak v aktivním režimu, tak v režimu IDL. Při měření byl do
výstupu oscilátoruzařazen optimální odpor pro dosažení minimální
spotřeby. Měření byla prováděnana pěti procesorech jejich vzájemné rozdíly byly
zanedbatelné.
Výsledky měření jsou graficky znázorněny na obrázcích :
|
:
|
Z těchto výsledků byly sestaveny empirické vzorce.
aktivní režim | IDL režim | |
spotřeba při 3 V | I = 1,9 + 0,21 . f | I = 0,25 + 0,06 . f |
spotřeba při 5 V | I = 6 + 0,43 . f | I = 1,2 + 0,1 . f |
Tabulka spotřeby procesorů ATMEL 2051 [mA, MHz ]
|
Pro úplnost je ještě na posledním obrázku změřená závislost minimálníhonapájecího napětí na kmitočtu krystalu.
:
|
Celková spotřeba je tedy dána
I = P . Iaktiv + ( 1 - P ) I idl
kde P je poměr skutečně využité výpočetní rychlosti k výpočetnírychlosti dané kmitočtem krystalu.
Naměřené hodnoty platí pro AT89c2051 (měřil jsem 10 kusů z různých sériía
hodnoty se minimálně lišily).
Navržené odvozené hodnoty
Minimum funkce, kde proměnnou bude kmitočet krystalu, je velmi ploché.Pro různé hodnoty využité
výpočetní rychlosti byly sestaveny následujícítabulky minimálních
příkonů. Pro porovnání je počítána spotřeba i při kmitočtukrystalu 3,6864 MHz.
Tento kmitočet je dobře dělitelný jak pro získánístandardních přenosových
rychlostí, tak i pro časoměrné aplikace a je tojeden z nejnižších kmitočtů, které
většina prodejců dodává za standardnínízké ceny.
Ucc = 5 V
stroj. cyklů za vteřinu | optimální kmitočet [MHz] | spotřeba [mA] | spotřeba při 3,6864 MHz [mA] |
100 | 0,245 | 1,25 | 1,58 |
1000 | 0,76 | 1,35 | 1,58 |
10000 | 2,43 | 1,72 | 1,76 |
100000 | 7,7 | 3,11 | 3,51 |
300000 | 13,1 | 5,02 | 7,45 |
Ucc = 3 V
stroj. cyklů za vteřinu | optimální kmitočet [MHz] | spotřeba [mA] | spotřeba při 3,6864 MHz [mA] |
100 | 0,183 | 0,272 | 0,472 |
1000 | 0,57 | 0,321 | 0,478 |
10000 | 1,8 | 0,486 | 0,544 |
100000 | 5,8 | 1,12 | 1,19 |
300000 | 9,9 | 1,984 | 2,62 |
Program pro výpočet konstant
Pro výpočet zde uvedených konstant byl použit můj program SPOTREBA.ZIPkterý je vám k dispozici..
Příklad řešení #include <stdio.h>
#include <stdlib.h>
#include <reg51.h>
sbit Led = P1^0;
typedef unsigned char byte;
byte Poccas; /*
pocitanicasu &n
bsp; */
void Casov(void) /* casovani
programu */
{
PCON=1; /* cekani v IDLE
modu &nbs
p; */
TH0=256-100; /* krystal3,6864, /12 /256=1200Hz;
/100=12Hz */
}
void Pocinic(void) /* pocatecni
inicializace */
{
TMOD=0x31; /* casovac0 v rezimu 1, casovac 1
zastaven */
TCON=0x10; /* RUNpro casovac
0 &
nbsp; */
ET0=1; /* povoleni preruseni od casovace
0 */
EA=1; /* celkove povoleni
preruseni  
; */
}
main(void)
{
do
{
Casov(); /* jeden casovy interval 1/12
sec. */
tt>
Poccas++;
if(Poccas==0) Led=1;
if(Poccas==6) Led=0;
if(Poccas==12) Poccas=0;
}
while(1);
}
Závěr
Z výsledků vyplývá, že volba kmitočtu krystalu není kritická a provětšinu
nízkopříkonových aplikací vyhoví jakýkoliv krystal z dolního
koncestandardní kmitočtové řady.
Výše uvedené závěry platí pouze pro 89c2051, u 4051 bude situace
pravděpodobněobdobná, i když bude možná použita modernější technologie. U
"velkých"procesorů v 40. pinovém pouzdru je udávána podstatně
větší spotřeba v IDLrežimu.
Režim IDL se v daném uspořádáni používá pouze s běžícím
časovačem,který pomocí přerušení vrátí procesor do aktivního stavu
a zároveň časujeběh programu. Důležitou podmínkou je, aby program prováděný v jednom
časovémintervalu nebyl delší, než je čas pro něj časovačem vymezený. V praxi
toznamená, že všechna delší zpoždění jsou realizována
přislušným počtem zavoláničasovací funkce. Program v příloze názorně
ukazuje na jednoduchém blikátkupoužití IDL režimu. Časovac běži v 16- bitovem režimu a po
návratu z přerušeníse nastavuje jen jeho horní polovina. Pokud přepsání
časovace proběhnedříve, než za 256 strojovych cyklů, je zachována kontinuita počítáni
času.K programu patři i obsluha přerušení od časovače. Na adrese přerušení jepouze
návrat ( instrukce RETI ).
DOWNLOAD programu SPOTŘEBA,který vám usnadní návrh nízkopříkonové aplikace.. - ZDE