Power-down üzemmód
Power-down üzemmód
Hali Mindenkinek!
Segítséget szeretnék kérni. Nem tudom az Atmega64L IC-t power-down módba tenni. Illetve úgy néz ki, hogy ott van, de a fogyasztása marad 5 mA, ami nekem sok. Adatlap szerint 20uA elég lenne neki 3V-os tápnál. A táp nálam 3.78V. Lehet, hogy ez a baj, és csak 3V-nál kapcsol le? BASCOM-ot használok, de értem a gépi kódot is. Minden megoldás érdekel. Előre is köszönöm a segítséget.
Segítséget szeretnék kérni. Nem tudom az Atmega64L IC-t power-down módba tenni. Illetve úgy néz ki, hogy ott van, de a fogyasztása marad 5 mA, ami nekem sok. Adatlap szerint 20uA elég lenne neki 3V-os tápnál. A táp nálam 3.78V. Lehet, hogy ez a baj, és csak 3V-nál kapcsol le? BASCOM-ot használok, de értem a gépi kódot is. Minden megoldás érdekel. Előre is köszönöm a segítséget.
Bascom 1.11.9.0 -ot használom.
A hatalmas program:
$regfile = "m64def.dat"
$crystal = 3686400
Powerdown
End
Ebből az alábbi gépi kódot generálja a Bascom. Szerintem jó.
Az reset után az I/O lábak nagyinpedanciás bemenetekre állnak.
A memóriatörlés nem másoltam ide.
Az MCUCR (0x35) regiszterben az SE és SM1 biteket H-ba teszi és utána a SLEEP utasítást kiadja.
+00000059: B785 IN R24,0x35 In from I/O location
+0000005A: 7E8F ANDI R24,0xEF Logical AND with mediate
+0000005B: 6380 ORI R24,0x30 Logical OR with immediate
+0000005C: BF85 OUT 0x35,R24 Out to I/O location
+0000005D: 9588 SLEEP Sleep
Elvileg minden jó. Gyakorlatilag ...
A hatalmas program:
$regfile = "m64def.dat"
$crystal = 3686400
Powerdown
End
Ebből az alábbi gépi kódot generálja a Bascom. Szerintem jó.
Az reset után az I/O lábak nagyinpedanciás bemenetekre állnak.
A memóriatörlés nem másoltam ide.
Az MCUCR (0x35) regiszterben az SE és SM1 biteket H-ba teszi és utána a SLEEP utasítást kiadja.
+00000059: B785 IN R24,0x35 In from I/O location
+0000005A: 7E8F ANDI R24,0xEF Logical AND with mediate
+0000005B: 6380 ORI R24,0x30 Logical OR with immediate
+0000005C: BF85 OUT 0x35,R24 Out to I/O location
+0000005D: 9588 SLEEP Sleep
Elvileg minden jó. Gyakorlatilag ...
Meg van!!!!
Az attiny25 adatlapjában benne van, hogy a tápfeszültség figyelést BOD ki kell kapcsolni, ha power-down-ba akarjuk kapcsolni az IC-t.
Megtettem ezt az Atmega64-ben is. Csökkent is a fogyasztás, de még mindig mA-es tartományban volt. Aztán kikapcsoltam az On-Chip Debug Enabled biztosítékot. Győzelem!! A fogyasztás 12uA-re csökkent 3.7V feszültség mellett. Ezek után tüzetesebben átnéztem az Atmega64L adatlapját, és ezt találtam jól eldugva a "JTAG Interface and On-chip Debug System" címszó alatt:
If the On-chip debug system is enabled by the OCDEN Fuse and the chip enter Power down or Power save sleep mode, the main clock source remains enabled. In these sleep modes, this will contribute significantly to the total current consumption. There are three alternative ways to avoid this:
• Disable OCDEN Fuse.
• Disable JTAGEN Fuse.
• Write one to the JTD bit in MCUCSR.
Köszönöm a segítséget.
ui: Az ördög a kisbetűkben lakik!
Az attiny25 adatlapjában benne van, hogy a tápfeszültség figyelést BOD ki kell kapcsolni, ha power-down-ba akarjuk kapcsolni az IC-t.
Megtettem ezt az Atmega64-ben is. Csökkent is a fogyasztás, de még mindig mA-es tartományban volt. Aztán kikapcsoltam az On-Chip Debug Enabled biztosítékot. Győzelem!! A fogyasztás 12uA-re csökkent 3.7V feszültség mellett. Ezek után tüzetesebben átnéztem az Atmega64L adatlapját, és ezt találtam jól eldugva a "JTAG Interface and On-chip Debug System" címszó alatt:
If the On-chip debug system is enabled by the OCDEN Fuse and the chip enter Power down or Power save sleep mode, the main clock source remains enabled. In these sleep modes, this will contribute significantly to the total current consumption. There are three alternative ways to avoid this:
• Disable OCDEN Fuse.
• Disable JTAGEN Fuse.
• Write one to the JTD bit in MCUCSR.
Köszönöm a segítséget.
ui: Az ördög a kisbetűkben lakik!
Ha már powerdown... küzdök ATtiny13 kikapcsolásával (pontosabban újra BEkapcsolásával):
- Powerdown kivételével az összes módból fel tudom ébreszteni INT0-val a procit... Mcucr.se/sm1 természetesen beállítva.
Van valakinek kipróbált/bevált rutinja erre?
(már próbáltam pár google-találat asm részlettel is...hiába)
- Powerdown kivételével az összes módból fel tudom ébreszteni INT0-val a procit... Mcucr.se/sm1 természetesen beállítva.
Van valakinek kipróbált/bevált rutinja erre?
(már próbáltam pár google-találat asm részlettel is...hiába)
Kód: Egész kijelölése
Set Mcucr.se ' adatlap 26.oldal szerint beállítva
Mcucr.sm1 = 1 ' adatlap 26.oldal szerint beállítva
Powerdown
Reset Mcucr.se
A használható megoldás ez lesz (csak pcint-el lehet - pillanatnyilag)...SirLeslie írta:Ha már powerdown... küzdök ATtiny13 kikapcsolásával (pontosabban újra BEkapcsolásával)...
Az archivum (és mások idejének felesleges pazarlása) kedvéért:
ATtiny2313 kikapcsolása Bascom 2.0.7.2 alatt:
ATtiny2313 kikapcsolása Bascom 2.0.7.2 alatt:
Kód: Egész kijelölése
do
...
If Kikapcsfeltetel= 1 Then
Config Int1 = Low Level ' ha INT1-re ébred, és nem erre lenne állítva
Enable Interrupts ' szükséges berakni, nem ébred nélküle INT1-re
Power Powerdown ' áramfogyasztás kisebb, mint 0.00A (műszerem méréshatára kicsi)
End If
...
Loop- Theophrast
- SzínkódFestő
- Hozzászólások: 78
- Csatlakozott: 2011. július 17. vasárnap, 6:00
Szép délutánt
kérdezősködésemet itt folytatom tovább
"Az Idle utasítással, amely leállítja a kontroller órajelét, de az UART, a külső megszakítások és az időzítő/számláló megszakítások tovább funkcionálnak. Bármely megszakítás generálása a kontrollert felébreszti az alvó helyzetéből"
- a nagykönyv szerint
Hogyha viszont megy az UART- akkor ezen keresztül fel lehet a chipet ébreszteni?
Ha igen akkor mi ennek az eljárása?
A bascom súgója nem tul beszédes ezügyben...
kérdezősködésemet itt folytatom tovább
"Az Idle utasítással, amely leállítja a kontroller órajelét, de az UART, a külső megszakítások és az időzítő/számláló megszakítások tovább funkcionálnak. Bármely megszakítás generálása a kontrollert felébreszti az alvó helyzetéből"
- a nagykönyv szerint
Hogyha viszont megy az UART- akkor ezen keresztül fel lehet a chipet ébreszteni?
Ha igen akkor mi ennek az eljárása?
A bascom súgója nem tul beszédes ezügyben...