สอบถามการ wake ของ PIC18F26J11 โดย ULPWU ครับ

Started by lovepugii, July 25, 2014, 08:13:53 PM

Previous topic - Next topic

lovepugii

จากที่ผมลองใช้โหมด deep sleep  ครับ มันหลับครับ  แต่มันไม่ตื่น ไม่ทราบว่าโคดผิดหรือผมยังไม่ทราบตรงไหน 
รบกวนผู้มีความรู้ช่วยแนะนำด้วยครับ

ปล.ผมเพิ่งหัดใช้ pic18f26j11  ครับ  ยังไม่คล่องเท่าไร
ปล2.ผมใช้ XC8  คอมไพลครับ

อันนี้โคดผมครับ

#include<xc.h>
//Configuration Bit
#pragma config XINST = OFF
#pragma config STVREN = OFF
#pragma config WDTEN = OFF
#pragma config CP0 = OFF
#pragma config FCMEN = OFF
#pragma config OSC = HS
unsigned int i,cou,num;
void initialize(void);
void mdeepsleep(void);
void main(void){
    if(WDTCONbits.DS){
        WDTCONbits.DS = 0;
    }
    initialize();
    INTCONbits.GIE = 1;
    T0CONbits.TMR0ON = 1;
    cou = 100;
    num = 0;
    while(1);
}
void mdeepsleep(void){

RPOR15 = 13;// ULPWU function mapped to RP15
RPINR1 = 15;// INT1 mapped to RP15

TRISAbits.TRISA0 = 0;
LATAbits.LATA0 = 1;
for(i = 0; i < 10000; i++) Nop();
for(i = 0; i < 10000; i++) Nop();
for(i = 0; i < 10000; i++) Nop();

TRISAbits.TRISA0 = 1;

DSCONHbits.DSULPEN = 1;

WDTCONbits.ULPEN = 1;
WDTCONbits.ULPSINK = 1;

INTCONbits.GIE = 1;
INTCONbits.PEIE = 1;
INTCON3bits.INT1IP = 1;
INTCON3bits.INT1IF = 0;
INTCON3bits.INT1IE = 1;

WDTCONbits.REGSLP = 1;

OSCCONbits.IDLEN = 0;
DSCONHbits.DSEN = 1;

Sleep();

}
void initialize(void){
    //Timer0
    T0CON = 0b01000111;         //@8MHz, 8-bit, prescale 256 --> 32.768 ms
    TMR0L = 0;
    INTCONbits.T0IF = 0;
    INTCONbits.T0IE = 1;

    RPINR16 = 16 ;                  // setup RX2 for EUSART2
    RPOR17 = 5;                     // setup TX2 for EYSART2
    BAUDCON2 = 0b00000000;
    SPBRG2 = 12;                    //SPREG  >>  Baudrate == 9600
    TXSTA2 = 0b00100000;
    RCSTA2 = 0b10010000;
}
void interrupt misr (void){
    if(INTCONbits.TMR0IF){
        INTCONbits.TMR0IF = 0;
        cou--;
        if(!cou){
            cou = 100;
            num++;
            TXREG2 = 'a';
            if(num == 5){
                num = 0;
                mdeepsleep();
            }
        }
    }
    if(INTCON3bits.INT1IF){
        INTCON3bits.INT1IF = 0;
        for(i = 0; i < 10000; i++) Nop();
        TXREG2 = 'k';
    }
}