Processzor kikapcsolás

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

Processzor kikapcsolás

Hozzászólás Szerző: szovhoz »

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!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Disable Interrupts a PowerDown előtt? :P
Illetve Idle, PowerSave?
Avatar
dummy
Chipgyilok
Hozzászólások: 264
Csatlakozott: 2008. május 24. szombat, 6:00

Hozzászólás Szerző: dummy »

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?
Avatar
SirLeslie
Pákabűvész
Hozzászólások: 247
Csatlakozott: 2005. április 14. csütörtök, 6:00

Hozzászólás Szerző: SirLeslie »

dummy írta:...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:

Kód: Egész kijelölése

SMCR.0=1
SMCR.1=1
SMCR.2=1
Avatar
dummy
Chipgyilok
Hozzászólások: 264
Csatlakozott: 2008. május 24. szombat, 6:00

Hozzászólás Szerző: dummy »

Bemásolom a program lényegi részét, hátha itt csesztem el valamit:

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
Return
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! 8O
Avatar
SirLeslie
Pákabűvész
Hozzászólások: 247
Csatlakozott: 2005. április 14. csütörtök, 6:00

Hozzászólás Szerző: SirLeslie »

dummy írta:Bemásolom a program lényegi részét, hátha itt csesztem el valamit:

Kód: Egész kijelölése

...
Do
...
do

...

Loop
...
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! 8O
Az a két "do" kezdés csak elgépelés, ugye?
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.
Avatar
dummy
Chipgyilok
Hozzászólások: 264
Csatlakozott: 2008. május 24. szombat, 6:00

Hozzászólás Szerző: dummy »

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

Kód: Egész kijelölése

Power Powersave
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. :x
Avatar
SirLeslie
Pákabűvész
Hozzászólások: 247
Csatlakozott: 2005. április 14. csütörtök, 6:00

Hozzászólás Szerző: SirLeslie »

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
De el ám - így kell:

Kód: Egész kijelölése

SMCR.SE=1
SMCR.SM0=1
SMCR.SM1=1
SMCR.SM2=0
Az adatlap szerint az SM2-nek 0-nak kell lennie - powersave állapothoz.
Avatar
dummy
Chipgyilok
Hozzászólások: 264
Csatlakozott: 2008. május 24. szombat, 6:00

Hozzászólás Szerző: dummy »

Este kipróbálom.
Avatar
dummy
Chipgyilok
Hozzászólások: 264
Csatlakozott: 2008. május 24. szombat, 6:00

Hozzászólás Szerző: dummy »

Nem vártam vele, volt pár percem, kipróbáltam.

Nem működik. :(
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

A Timer nem minden pihenőmódból kelti az IC-t!

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-0
Azaz:

Kód: Egész kijelölése

Power Adcnoise
Power Powersave
Power Standby
Power Powerdown
Power Idle
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!
Avatar
dummy
Chipgyilok
Hozzászólások: 264
Csatlakozott: 2008. május 24. szombat, 6:00

Hozzászólás Szerző: dummy »

Powersave módban az adatlap szerint:

"Wake-up sources:
INT1, INT0 pin changes, TWI address match, Timer2, WDT"

Azt nem értem, hogy mit keres ott a Timer2, amikor az M48-nak Timer0 és Timer1 számlálója van. :?
Avatar
dummy
Chipgyilok
Hozzászólások: 264
Csatlakozott: 2008. május 24. szombat, 6:00

Hozzászólás Szerző: dummy »

Ja, van Timer2 is, csak még sosem használtam, nem is tudtam róla. Mindegy, ezután sem fogom használni, a 8 bit ide most kevés.

Megoldottam watchdog-gal és powerdown-nal, tökéletesen működik.
Válasz küldése