Eftersom jag kommer vilja använda PICen (18LF1330) med batteri så vill jag kunna gå ned i Sleep-mode för att spara batteri när den inte används. (Har aldrig använt sleep-funktionen tidigare)
I den piccen jag använder så finns det möjlighet att välja mellan MCLR och RA5 på port 4.
Eftersom jag kommer vilja styra Piccen med inputs från endast en knapp så antog jag att jag behöver någon typ av speciallösning för att få Wake-up från sleep-läget.
Min tanke är att jag skall kunna använda "knappen" och skicka in inputs under tiden piccen skall vara igång på (RA0), och när knappen hålls inne konstant i några sekunder så skall piccen gå ned i sleepmode. Att ta sig dit har inte varit något problem än så länge, men problemet ligger i hur jag väcker piccen igen. Det verkar som om enda sättet (så länge jag inte använder nån extern klocka, WDT etc) är att använda interrupt genom MCLR (och då ha både MCLR-inputen och RA0 kopplat till knappen), och väcka piccen genom den. Jag tänker mig då att jag bör slå igång MCLR funktionen precis innan piccen går ned i sleep-mode så att den kan slås igång igen via MCLR. Och att vid uppstarten så slås MCLR funktionen av igen.
MCLR on/off ändras genom CONFIG3H,07 och denna kan man inte skriva till direkt så jag använder table pointers (TBLPTRU,TBLPTRH,TBLPTRL)
Kod: Markera allt
movlw h'05'
movwf TBLPTRL ; Samma som TBLPTR
movlw h'00'
movwf TBLPTRH
movlw h'30'
movwf TBLPTRU
movlw h'8F' ;MCLR enable
;movlw h'0F' ;MCLR disable
movwf TABLAT
tblwt *; ;skriv till register 300005h
Skall det gå att ändra detta värde under körningen? Jag kommer jobba vidare på det här under kvällen. Vi får se om det ger något resultat.