Alacsony fogyasztású távon (egy másik energiatakarékos üzemmód)

Van egy másik energiatakarékos üzemmód, amellyel a fent cikkemet módon energiát takarít STM8L. Ez nem egy „alvó módba”, mert a Linux még mindig fut. ha alacsony frekvencián. De ha kikapcsolja a legtöbb „falánk” részei a MC ebben a módban, akkor használja körülbelül 4-5mkA. Úgy hívják - Low Power Run Mode. Az egyszerűség kedvéért, én hívom LPR.

Alacsony fogyasztású távon (egy másik energiatakarékos üzemmód)

Az LPR mód MC továbbra is működik, de letiltani a nagysebességű óra, flash memória és egyéb felesleges dolgot kell a területen a fogyasztás 5mkA (LCD, amikor be volt kapcsolva, lásd. Fotó).

Tiltsa le az összes „felesleges dolgokat” kell manuálisan, így az átmenet a LPR késhet:
1) Kapcsolja ki a használaton kívüli perifériák
2) letiltása az összes megszakítást
3) Menj a RAM
4) A kapcsoló LSI \ LSE (belső alacsony sebességű oszcillátor / külső óra kvarc)
5) letiltása HSI és EBK (nagysebességű órák)
6) Kapcsolja ki a készüléket és a flash EEPROM memória
7) kapcsoló belső feszültség stabilizátor egy kis energiaigényű üzemmódban

1.- 5. lépést lehet végezni bármilyen sorrendben (valamint természetesen kikapcsolni HSI szükséges váltás után az LSI ;-)).

Meg kell jegyezni, hogy ebben a módban, akkor nem használhatja ADC - szüksége van egy órajel nem kevesebb, mint 1 MHz. Sem az LSE (32.768kGts) vagy LSI (38kHz), a gyakoriság nem ad. Tehát, ahogy valószínűleg nem fog működni, és a DAC - szüksége van körülbelül 370mkA míg az alacsony teljesítmény szabályozó csak 200uA

Ezután úgy a bejelentkezési folyamat LPR és kilépési részletesebben. Ebben az esetben maradok a sorrendben adtam a fenti (ne feledjük, hogy az első 5 pont nem feltétlenül kell, hogy menjen a sorrendben).

Az első feladat előttünk álló - vezetni az összes funkciók működését az LPR, a memóriában. Az IAR ez történik nagyon egyszerűen. Meghatározása előtt a funkciót kell hozzá módosítót __ramfunc.

Rendeltetése IN_RAM (void foo (void)) azt jelenti, hogy pontosan ugyanaz a dolog, és ez IN_RAM regisztrált a könyvtárban:

Az átmenet a LPR mód kezdődik bekapcsolásával a kisfrekvenciás generátor (LSI vagy LSE).

Ezután a közötti automatikus órák. Első emelő Swen bites regiszterbe CLK_SWCR - lehetővé téve ezáltal váltás. Azután, hogy a nyilvántartásba CLK_SWR kódot a forrás, amelyre szeretnénk váltani: 0x1 - HSI. 0x2 - LSI. 0x4 - HSE. 0x8 - LSE. Ezt követően emelkedik SWBSY zászló és elkezd váltás, de mi vár a megkötésére, nézi a zászló.

További információk a rendszer órát lehet olvasni ezt a cikket.

Amikor átváltanak az LSI célból MC fog működni a frekvenciája 38kHz / előosztóval. Induláskor telepített elválasztó 8, és így az órajel lesz 4.75kGts MK. Emiatt nem lehet működtetni az LCD vezérlő, ami az alapértelmezett órajele az LSI (anélkül osztó). Szükséges, hogy a frekvencia az LCD vezérlő kisebb vagy egyenlő, mint a frekvencia az MC.

Az átállás után az LSI, szükséges, hogy kikapcsolja a nagy sebességű generátor - HSI. Ha nem, akkor hozzá kell adni a fogyasztás száz mikroamperen. Szerencsére, ez le van tiltva egy akció:

A következő napirendi pont a kikapcsolás flash memória és EEPROM:

Természetesen, miután megpróbál hozzáférni egy változó EEPROM vagy flash memória hiba keletkezik. Amikor megpróbál menni funkciókat található a flash memória lesz ugyanaz. Ezért a funkciókat, hogy szükségünk van az LPR kell venni vele a RAM.

Tehát ne feledkezzünk meg a megszakítás - a táblázat az életüket a vektorokat a program memória, amely nem áll rendelkezésre. Ezért minden megszakítást le kell tiltani. Válasszon bármilyen módon ízlés:
__disable_interrupts
asm ( «sim»);

Ha a memória ki van kapcsolva, ez az utolsó lépés - kapcsolja ki a fő feszültségszabályozó (STM8 mag hajtja 1,8V a belső stabilizátor):

Beállítása után ez a bit stabilizátort belép ULP (Ultra alacsony teljesítmény) üzemmódban.

Üdvözöljük a Matrix LPR


Ebben a módban, meg tudod csinálni? Igen, majdnem ugyanaz, mint a szokásos. Eltekintve attól a ténytől, hogy a kód mérete korlátozott RAM (mínusz stack mínusz változó), a frekvencia korlátozza gyakorisága LSI \ LSE, megszakítás nélkül, hanem egy kísérlet arra, hogy foglalkozzon a funkció a flash memória összeomlik MC.

Használhatja szinte minden perifériát (kivéve az ADC - repül a frekvencia) kihallgatni az érzékelő gombok, semmit venni (általában jobb max frekvencia.), Keresztüli kommunikáció SPI / UART / I2C, stb By the way, hogy ez a lemez segít megbecsülni a teljes fogyasztás MK adott elhanyagolása a periféria:

Alacsony fogyasztású távon (egy másik energiatakarékos üzemmód)

Szinte bármilyen periféria lehet állítani úgy, hogy fogyaszt minimális energiát. Mint például az LCD vezérlő csökkentése után a kontraszt és a frissítési ráta elkezdett enni egy pár microamps kevesebb.

Ehelyett ciklus, késés vagy ciklusok várva valamilyen esemény a perifériáról lehet használni WFE mód (Várjon esemény). Ez MK nucleus leáll, amíg a kiválasztott perifériák nem generál eseményt. Egy ilyen esemény lehet például a érkezése egy bájt vagy SPI túlfolyó időzítőt.

Az első lépés az, hogy konfigurálja a forrás események - lehetővé kell tenni, hogy a megfelelő megszakítás, bár ez nem használható. Ezután a nyilvántartásokban WFE_CRx (az összesen 3 db), válasszon egy eseményforrástól ébred MC. Mint ez:

Ez az esemény által №4 időmérőt. A teljes lista az események itt, nem adom, és akkor küld neki, hogy a 74 oldal RM0031.

Ezután indítsa el a forrást az esemény (egy időzítő, vagy átutalással bites SPI) és utasításokat hajt végre

Most, a lényege az MK megállt az esemény előtt, ami után továbbra is végrehajtja a kódot a következő parancsot. Miután elhagyta a WFE vissza kell állítania a megszakítás flag rendezvény forrás és reset bit regiszter WFE_CRx - különben megszakítja nem működik megfelelően.

Tény, hogy a WFE nagyban energiát takarít meg, ha az MC munka magas frekvenciákon. De a lényege LPR és így fogyaszt szinte semmit, így WFE adhat csak néhány mikroamperen gazdaságban.

By the way, megállt módot LPR nem hagyhatjuk - ébredés után belőle csak megszakítás amely LPR tilos.

Most beszéljünk arról, hogyan ébred fel, és kijutni a LPR.

Majd megismétli az ugyanilyen eljárással, de fordított sorrendben. Először kapcsolja be a fő feszültségszabályozó:

Tekerő azonnal elindul, ezért mielőtt az összes többi, meg kell várni, amíg a szabályozó a működésbe lép. Mellesleg, ebben a módban ULP stabilizátor mozhen kínálat áram 200uA, és a szokásos - a 25mA.

Miután flash-stabilizátor lehet futtatni:

Memória is nem indul el azonnal, és néhány ezredmásodperc. De tekintettel arra, hogy az MC még dolgozik az alacsony frekvenciájú oszcillátor, ezek mikroszekundumos repülni, a szó szoros értelmében egy órajel ciklusra. Ezért a várakozások és a ciklus lehet távolítani.

Most, hogy a program memória van kapcsolva, akkor kapcsoljuk be a HSI:

Így vagyunk vissza az eredeti frekvencia - 2MHz.

Engedélyezze a megszakítások és a futtatásához szükséges perifériák bármikor. Csak az első két bekezdésben kell végezni annak érdekében, mások - önkényesen.

példa


Például programm jött létre, akiknek munkája látható ez a videó:

Egy pár finomítások azoknak, akik úgy döntenek, hogy ásni a kódot:

IN_RAM ugyanaz, mint hogy __ramfunc

BAR1_ON és hasonló minták együtt LCD_bar () funkció; COX szalag a jobb oldalon a kijelző. BAR0_ON - gyullad az alsó szegmens, BAR1_ON - második alján, stb Csak írjuk be a tömb elemeinek t_bar. Annak érdekében, hogy ki az egész szalag tömb vissza kell állítani.

LCD_GLASS_Init funkció - normál LCD inicializálási folyamatot - megváltozott annak érdekében, hogy a fogyasztás csökkentése. Én csökkentette a kontrasztot és a frissítési frekvenciát.

LCD_bar () funkció; Dobták ki a RAM, így használható, ha a vaku ki van kapcsolva.

hasznos linkek


STM8L család energiagazdálkodás - hasznos appnout, amely leírja nemcsak az energiatakarékos üzemmód, hanem más módon csökkenti a fogyasztást a MK.

Hogyan kell használni ezt a módot, és használja ha egyáltalán - ez a fejlesztő, és ez elsősorban attól függ, a feladat. Én a írásakor ezt a cikket, és nem jön ki semmilyen feladatot, sehol ebben az üzemmódban teljes mértékben indokolt, és nem lehetett, akkor helyébe egy csomó Active szüneteltetése + ÉME * + külső megszakítások.

* ÉME - olyan funkció, amely lehetővé teszi, hogy az MC automatikusan kilép az állj üzemmódban egy bizonyos idő után. A STM8L15x részeként megvalósított az RTC, de STM8L101 - önálló modult.

Ui Megjegyzés: A gomb megnyomásával egy gomb, felhúzva + 3V 20k ellenállás fogyaszt annyira, mint 30 MK STM8L152C6 működő Low Power Run módban. Tehát ott!

Kapcsolódó cikkek