Processzor kikapcsolás
Processzor kikapcsolás
Hogyan lehet a processzort belülről kikapcsolni?
Én úgy szeretném ha utánna már csak a külső resetre indulna el újra.
Powerdown nem jó mert 8 intem van és azokk akkor felébreszetenék!
Én úgy szeretném ha utánna már csak a külső resetre indulna el újra.
Powerdown nem jó mert 8 intem van és azokk akkor felébreszetenék!
M48-at kéne power save állapotba hozni. Az adatlapja szerint a Timer1 képest újraindítani. Idle-lel működik is, a Timer1-re újraindul, ahogy kell, de a Power save állapotra az Idle utasítás nem jó. A bascomos "POWERSAVE" utasítás nem működik csak három procinál (lásd a Helpet), és az M48 nem tartozik ezek közé.
Elvileg az SMCR regiszter első három bitjét kell logikai 1-re állítani. Ez Bascom-ban hogyan lehetséges?
Elvileg az SMCR regiszter első három bitjét kell logikai 1-re állítani. Ez Bascom-ban hogyan lehetséges?
Most csak úgy fejből... majd bepontosítod, ha elrontottam:dummy írta:...Elvileg az SMCR regiszter első három bitjét kell logikai 1-re állítani. Ez Bascom-ban hogyan lehetséges?
Kód: Egész kijelölése
SMCR.0=1
SMCR.1=1
SMCR.2=1
Bemásolom a program lényegi részét, hátha itt csesztem el valamit:
Ez így, Idle-lel működik. Az Idle helyére tettem azt, amit írtál, de arra meg resetelget. Vagy valami hasonlót csinál, de hibásan fut a program, ciklikusan indulva.
Ajaj!
Kód: Egész kijelölése
On Timer1 Ora
Config Timer1 = Timer , Prescale = 1024
Do
Stop Timer1
Timer1 = Ido 'Az ido változónak korábban adtam értéket
do
' Itt történik a főprogram futása, két szubrutint hajt végre, és számolgat picit.
Enable Interrupts
Enable Timer1
Start Timer1
Idle
Loop
End
Ora:
nop
ReturnAjaj!
Az a két "do" kezdés csak elgépelés, ugye?dummy írta:Bemásolom a program lényegi részét, hátha itt csesztem el valamit:
Ez így, Idle-lel működik. Az Idle helyére tettem azt, amit írtál, de arra meg resetelget. Vagy valami hasonlót csinál, de hibásan fut a program, ciklikusan indulva.Kód: Egész kijelölése
... Do ... do ... Loop ...
Ajaj!
Mindjárt leoperálom az adatlapját és megolvasom neked.
közben ezt olvasd meg...
A hozzászólást 1 alkalommal szerkesztették, utoljára SirLeslie 2011. szeptember 1. csütörtök, 14:36-kor.
Elgépelés.
Néztem a Bascom helpjét, és az M48def.dat fájlt. A Bascom támogatja mind az öt energiatakarékos üzemmódot.
A help szerint a
utasítást kell használni.
Beírtam az Idle helyére. Olyan mélyen "alszik" a proci tőle, hogy még a Timer1 túlcsordulása sem ébreszti fel. Pedig kéne neki.
Néztem a Bascom helpjét, és az M48def.dat fájlt. A Bascom támogatja mind az öt energiatakarékos üzemmódot.
A help szerint a
Kód: Egész kijelölése
Power PowersaveBeírtam az Idle helyére. Olyan mélyen "alszik" a proci tőle, hogy még a Timer1 túlcsordulása sem ébreszti fel. Pedig kéne neki.
De el ám - így kell:SirLeslie írta:
Most csak úgy fejből... majd bepontosítod, ha elrontottam:
Kód: Egész kijelölése
SMCR.0=1 SMCR.1=1 SMCR.2=1
Kód: Egész kijelölése
SMCR.SE=1
SMCR.SM0=1
SMCR.SM1=1
SMCR.SM2=0
A Timer nem minden pihenőmódból kelti az IC-t!
Power mode:
Azaz:
vagy:
pl. PowerDown:
smcr.3=0
smcr.2=1
smcr.1=0
smcr.0=1
$asm
sleep
$asm end
smcr.0=0
PRR-l meg egyesével is kapcsolgathatsz részegységeket....
Fontos a sorrend!
Power mode:
Kód: Egész kijelölése
Powermodes=5
SE=SMCR.0
Pm1=Idle,SMCR.SM0-0,SMCR.SM1-0,SMCR.SM2-0
Pm2=Powerdown,SMCR.SM0-0,SMCR.SM1-1,SMCR.SM2-0
Pm3=Standby,SMCR.SM0-0,SMCR.SM1-1,SMCR.SM2-1
Pm4=ADCnoise,SMCR.SM0-1,SMCR.SM1-0,SMCR.SM2-0
Pm5=Powersave,SMCR.SM0-1,SMCR.SM1-1,SMCR.SM2-0Kód: Egész kijelölése
Power Adcnoise
Power Powersave
Power Standby
Power Powerdown
Power Idle
pl. PowerDown:
smcr.3=0
smcr.2=1
smcr.1=0
smcr.0=1
$asm
sleep
$asm end
smcr.0=0
PRR-l meg egyesével is kapcsolgathatsz részegységeket....
Fontos a sorrend!