A narazil jsem na zajímavý problém na PIV 16F630 jsem udělal jednoduchý program kde se pomocí přerušení přepíní 7 podprogramů blikání 10 x led.
Osmý program uspává mcu a po dlouhém stisku tlačítka na RA5 mcu probudí a začne od programu 1.
Když jse zkoušel měřit spotřebu tak my měřák po uspání ukázal 0 mikroA, po krátkém stisku (po kterém by se mcu měl znovu uspat) už je spotřeba cca 600 mikroA.
Je to normální chování nebo je chyba v kódu?
Kód: Vybrat vše
PROG8
movlw 0x00 ; vypnutí všech led
MOVWF PORTC ; a přesunutí na PORT C
MOVWF PORTA ; a přesunutí na PORT A
USPANI
BCF INTCON,GIE ;zakázání všech přerušení
SLEEP ; přepne procesor do režimu SLEEP
CALL DELAY1 ;čekací smyčka pro kontrolu dlouhého stisku
CALL DELAY1 ;čekací smyčka pro kontrolu dlouhého stisku
BTFSC PORTA,5 ;kontrola zda je opravdu stisknuto tlačítko
GOTO USPANI ;pokud je na RA5 log 1 (není stisknuto) uspi
BSF INTCON,GIE ;povolení všech přerušení
MOVLW 0x01 ;pokud byl probuzen
MOVWF PROGRAM ;skok na první program
GOTO PROG1