Need help with interrupt


+ Reply to Thread
Results 1 to 7 of 7
  1. #1
    Join Date
    Oct 2008
    Posts
    65

    Default Need help with interrupt

    I'm trying to learn DT's Interrupt, from the original I modify a little. I added 2 buttons to trigger the external interrupt.. but don't know how, it works only on Button 1.
    Code:
    INCLUDE "modedefs.bas" 
    INCLUDE "DT_INTS-14.bas"     ; Base Interrupt System
    INCLUDE "ReEnterPBP.bas"     ; Include if using PBP interrupts
    
    TrisB = %00000111
    PortB = %00000000
    LED1   VAR  PORTB.6
    x      var  byte
    x=0
    
    ASM
    INT_LIST  macro    ; IntSource,        Label,  Type, ResetFlag?
            INT_Handler    INT_INT,  _ToggleLED1,   PBP,  yes
        endm
        INT_CREATE               ; Creates the interrupt processor
    ENDASM
    
    @   INT_ENABLE   INT_INT     ; enable external (INT) interrupts
    
    Main:
      
      PAUSE 1
      High PortB.7
      pause 20
      low PortB.7
      Pause 20
    GOTO Main
    
    '---[INT - interrupt handler]---------------------------------------------------
    ToggleLED1:  
         serout 5,2400, [$FE, 1]
         serout 5,2400,[254,192]
         SEROUT 5,2400,[" Val ",#x] ' Send x value to LCD
         TOGGLE LED1
         x=x+1
    @ INT_RETURN
    Can any one tell me what I'm missing?

    thanks in advance
    Attached Images Attached Images  

  2. #2
    Join Date
    Aug 2008
    Location
    Portugal
    Posts
    240

    Default

    Quote Originally Posted by mbox View Post
    I'm trying to learn DT's Interrupt, from the original I modify a little. I added 2 buttons to trigger the external interrupt.. but don't know how, it works only on Button 1.
    Code:
    INCLUDE "modedefs.bas" 
    INCLUDE "DT_INTS-14.bas"     ; Base Interrupt System
    INCLUDE "ReEnterPBP.bas"     ; Include if using PBP interrupts
    
    TrisB = %00000111
    PortB = %00000000
    LED1   VAR  PORTB.6
    x      var  byte
    x=0
    
    ASM
    INT_LIST  macro    ; IntSource,        Label,  Type, ResetFlag?
            INT_Handler    INT_INT,  _ToggleLED1,   PBP,  yes
        endm
        INT_CREATE               ; Creates the interrupt processor
    ENDASM
    
    @   INT_ENABLE   INT_INT     ; enable external (INT) interrupts
    
    Main:
      
      PAUSE 1
      High PortB.7
      pause 20
      low PortB.7
      Pause 20
    GOTO Main
    
    '---[INT - interrupt handler]---------------------------------------------------
    ToggleLED1:  
         serout 5,2400, [$FE, 1]
         serout 5,2400,[254,192]
         SEROUT 5,2400,[" Val ",#x] ' Send x value to LCD
         TOGGLE LED1
         x=x+1
    @ INT_RETURN
    Can any one tell me what I'm missing?

    thanks in advance
    Hi,

    I only can see one button connected to External Interrupt RB0. PIC16F628, only haves 1 External Interrupt, that is the RB0 Pin. The other butons that you add to the circuit, will not work as interruopt.
    Last edited by gadelhas; - 22nd August 2010 at 03:16.
    Thanks and Regards;
    Gadelhas

  3. #3
    Join Date
    Oct 2008
    Posts
    65

    Default

    Quote Originally Posted by gadelhas View Post
    Hi,

    I only can see one button connected to External Interrupt RB0. PIC16F628, only haves 1 External Interrupt, that is the RB0 Pin. The other butons that you add to the circuit, will not work as interruopt.
    Hi gadelhas, thanks for the quick reply.

  4. #4
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,578

    Lightbulb

    Quote Originally Posted by gadelhas View Post
    Hi,

    I only can see one button connected to External Interrupt RB0. PIC16F628, only haves 1 External Interrupt, that is the RB0 Pin. The other butons that you add to the circuit, will not work as interruopt.
    Hi, Folks

    I think something has to be cleared ...

    You also can get " interrupt on change " interrupt with Port B.4 to B.7 ... or ' comparator interrupts" from the Comparator inputs ...

    so, the 3 buttons can generate their own interrupt ...

    Obviously the scheme has to be modified to place the buttons on the right pins ....

    Alain
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

  5. #5
    Join Date
    Aug 2008
    Location
    Portugal
    Posts
    240

    Default

    Quote Originally Posted by Acetronics View Post
    Hi, Folks

    I think something has to be cleared ...

    You also can get " interrupt on change " interrupt with Port B.4 to B.7 ... or ' comparator interrupts" from the Comparator inputs ...

    so, the 3 buttons can generate their own interrupt ...

    Obviously the scheme has to be modified to place the buttons on the right pins ....

    Alain
    Not only the sheme but also the interrupt source on PBP code. Instead of INT_INT, must put RBC_INT, to make it Interrupt on PortB Change.
    Thanks and Regards;
    Gadelhas

  6. #6
    Join Date
    Mar 2009
    Posts
    653

    Default

    so you need two buttons to generate an interrupt?

    I've just been through all this pain & rx'ed a lot of help on my recent thread...

    http://www.picbasic.co.uk/forum/showthread.php?t=13558

    To summarise....you can have two switches connected to just the one PIC 'INT' pin - but you'll need to connect some diodes if going that way (I posted a schematic on the above thread).
    Else, as Bruce kindly informed me on that very thread, you can use Interrupt on Change...which was a little more involved (but not a whole lot more)...& which doesn't need diodes & gives you a whole lot more options wrt which PIC pins you can connect your switches to.

  7. #7
    Join Date
    Oct 2008
    Posts
    65

    Default

    Quote Originally Posted by HankMcSpank View Post
    so you need two buttons to generate an interrupt?

    I've just been through all this pain & rx'ed a lot of help on my recent thread...

    http://www.picbasic.co.uk/forum/showthread.php?t=13558

    To summarise....you can have two switches connected to just the one PIC 'INT' pin - but you'll need to connect some diodes if going that way (I posted a schematic on the above thread).
    Else, as Bruce kindly informed me on that very thread, you can use Interrupt on Change...which was a little more involved (but not a whole lot more)...& which doesn't need diodes & gives you a whole lot more options wrt which PIC pins you can connect your switches to.
    Thanks guys for the support, I will explore more on this when I get home...

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts