Hi
I think that my Weakup is Workinng but it s not!
I use this code the Device go Sleep I measure the mA Normal Mode with Display without Backlight is 12 mA and Sleep is ~6.6 mA.
I reduce my Code to Minimum ,This is my Code:
INCLUDE "modedefs.bas"
DEFINE OSC 20
DEFINE LCD_DREG PORTD
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTD
DEFINE LCD_RSBIT 6
DEFINE LCD_EREG PORTD
DEFINE LCD_EBIT 4
DEFINE LCD_BITS 4
RCON = %00000000 'Enable priority levels on interrupts
ADCON0 = %11000000 'Configure and turn off A/D Module.
ADCON1 = %01000110 'configuriere alle 8 digitale Kanäle werden aktiviert
RCIF VAR PIR1.5 ' Alias RCIF (USART Receive Interrupt Flag)
OERR VAR RCSTA.1 ' Alias OERR (USART Overrun Error Flag)
CREN VAR RCSTA.4 ' Alias CREN (USART Continuous Receive Enable)
ADON VAR ADCON0.2 'A/D On bit
RCIE VAR PIE1.5 'USART Receive Interrupt Enable bit
RCIE = 0 ' enable USART RX interrupts
'''''''''''''''''''''''''''''''''''Interrupts '''''''''''''''''''''''''''''''''''''''''''''''
RBIF VAR INTCON.0 'RB Port Change Interrupt Flag bit
RBIE VAR INTCON.3 'RB Port Change Interrupt Enable bit
RBPU VAR INTCON2.7 'PORTB Pull-up Enable bit
PEIE VAR INTCON.6 'Peripheral Interrupt Enable bit
INT1IF VAR INTCON3.0 'INT1 External Interrupt Flag bit
INT2IF VAR INTCON3.1 'INT2 External Interrupt Flag bit
INT1IE VAR INTCON3.3 'INT1 External Interrupt Enable bit
INT2IE VAR INTCON3.4 'INT2 External Interrupt Enable bit
RBIE = 0 'Disables the RB port change interrupt
RBPU = 0 'PORTB pull-ups are enabled by individual port latch values
TMR0IF VAR INTCON.2 'TMR0 Overflow Interrupt Flag bit
TMR0IE VAR INTCON.5 'TMR0 Overflow Interrupt Enable bit
T0PS0 VAR T0CON.0 'Timer0 Prescaler Select bits
T0PS1 VAR T0CON.1 'Timer0 Prescaler Select bits
T0PS2 VAR T0CON.2 'Timer0 Prescaler Select bits
T0CS VAR T0CON.5 'Timer0 Clock Source Select bit
T08BIT VAR T0CON.6 'Timer0 8-bit/16-bit Control bit
TMR0ON VAR T0CON.7 'Timer0 On/Off Control bit
PSA VAR T0CON.3 'Timer0 Prescaler Assignment bit
TMR0IP VAR INTCON2.2 'TMR0 Overflow Interrupt Priority bit
TMR0IE = 0 ' TMR0 Overflow Interrupt Enable bit
TMR0ON = 0 ' Timer0 On/Off Control bit
T08BIT = 0 ' Timer0 8-bit/16-bit Control bit
T0CS = 0 ' Timer0 Clock Source Select bit
T0PS0 = 1 ' Timer0 Prescaler Select bits
T0PS1 = 0 ' Timer0 Prescaler Select bits
T0PS2 = 0 ' Timer0 Prescaler Select bits
PSA = 0 ' Timer0 Prescaler Assignment bit
TMR0IF = 0 ' TMR0 Overflow Interrupt Flag bit
TMR0IP = 1 ' TMR0 Overflow Interrupt Priority bit
TMR0H = $3C
TMR0L = $AF
INT0IF var INTCON.1 'INT0 External Interrupt Flag bit
INT0IE var INTCON.4 'INT0 External Interrupt Enable bit
INTEDG0 var INTCON2.6 'External Interrupt0 Edge Select bit
INT0IE = 1 'Disable INT0 interrupt
PEIE = 0 ' enable Peripheral interrupts
INTEDG0 = 0 'Interrupt on falling edge
INT0IF = 0
TRISA.4 = 0
TRISB.0 = 1
TRISB.3 = 1
TRISB.4 = 1
TRISD.0 = 0
TRISD.2 = 0
TRISD.3 = 0
TRISD.7 = 0
Symbol Buzzer = PortC.1
Symbol LCD_Light = PortD.7
Symbol RW = PortD.5
Symbol WC = PortD.3 'EEprom Enable Bit
Mode var byte
Mode = 0
Low Sleep_Switch
Pause 5
High LCD_Light
Low WC
Pause 100
Low RW
Pause 500
Lcdout $fe, 1 ' Clear screen
Pause 1
Lcdout $FE, $80, " RFID "
Lcdout $FE, $C0, " Software V.1.0 "
Pause 2000
Low LCD_Light
Lcdout $FE,1
Pause 10
On Interrupt Goto IntHandler
Timer:
Lcdout $fe,$80,"Standby"
Pause 100
Goto Timer
Disable
IntHandler:
Lcdout $FE,1
Pause 10
IF (INT0IF and INT0IE) then Goto Push_Button
Resume
Push_Button:
Sound Buzzer,[123,5]
'Debounce
Pause 250
INT0IF = 0 ' INT0 External Interrupt Flag bit Reset
Goto Button_Sel_Mode
Button_Sel_Mode:
If Mode = 0 Then
Mode = 1
Low LCD_Light
Lcdout $fe,$80,"Status 1"
Pause 100
INT0IF = 0
@Sleep
Endif
If Mode = 1 Then
High LCD_Light
Mode = 0
Lcdout $fe,$80,"Status 2"
Pause 1000
Endif
Resume
Enable
End
Thank You for any Help
Regards Pesti
Bookmarks