too many interrupts


Closed Thread
Results 1 to 6 of 6

Hybrid View

  1. #1
    trying's Avatar
    trying Guest


    Did you find this post helpful? Yes | No

    Default

    thanks for the replys. Sorry but I did leave out the disable at the interrupt handlers when I posted. (long night). sougata would please show me more of what you mean. I'm just getting started at this.
    Thanks

  2. #2
    Join Date
    Feb 2005
    Location
    Kolkata-India
    Posts
    563


    Did you find this post helpful? Yes | No

    Default Do Not have much time

    Hi,

    I have hastily modified your code. It does a red blink normally , but when you pull down the mode pin it goes to the interrupt routine and does a green blink there. Hope this helps.

    Code:
    @ DEVICE pic16f630
    @ DEVICE pic16f630, INTRC_OSC_NOCLKOUT
    @ DEVICE pic16f630, WDT_ON
    @ DEVICE pic16f630, MCLR_OFF
    @ DEVICE pic16f630, CPD_OFF 'MODE TEST
    @ DEVICE pic16f630, BOD_OFF 'BOARD TEST
    @ DEVICE pic16f630, PWRT_ON
    @ DEVICE pic16f630, PROTECT_OFF
    '//////////////////////////////////////////////////////////////////
    DEFINE OSC 4             ' Tell PBP that the PIC is running @ 4MHz
    '//////////////////////////////////////////////////////////////////
    ON INTERRUPT GOTO INT_GREEN  ' DEFINE THE PBP INTERRUPT HANDLER HERE
    DISABLE                  ' DO NOT PROCESS THE INERRUPT CALLS NOW
    
    '//////////////////////////////////////////////////////////////////
    CMCON = 7                'COMPARATOR OFF
    VRCON = 0                'VOLTAGE REF. DISABLE 
    TRISA = %00011100        'MAKE A.2, A.3, A.4 INPUTS
    TRISC = %00000000        'MAKE ALL PORTC OUTPUTS
    '//////////////////////////////////////////////////////////////////
    
    'SETUP THE INTERRUPT PROPERTIES HERE********************************************
    '///////////////////////////////////////////////////////////////////////////////
    OPTION_REG = 0           'ENABLE WEAK PULLUPS (CLEAR RAPU), INTERRUPT ON FALLING EDGE
    IOCA       = 0           'DISABLE INTERRUPT ON CHANGE
    WPUA       = %00111111   'WEAK PULLUPS ON PORTA 
    INTCON     = 0           'LET INTERRUPTS BE-OFF AT THIS MOMENT
    '///////////////////////////////////////////////////////////////////////////////
    
    
    ' ALIAS-SYMBOL  DEFINITIONS GOES HERE //////////////////////////////////////////
    SYMBOL SENSOR = PORTA.2 'TRIGGERING DEVICE PIN 3
    SYMBOL MODE   = PORTA.4 'MODE BUTTON (FLASH/LONG) PIN 12 INPUT
    SYMBOL LED    = PORTA.5 'LED POWER UP PIN 2 OUTPUT
    SYMBOL RED    = PORTC.3 'RED LED PIN 7 OUTPUT
    SYMBOL GREEN  = PORTC.4 'GREEN LED PIN 6 OUTPUT
    ' END OF ALIAS-SYMBOL  DEFINITIONS  ////////////////////////////////////////////
    
    ' DEFINE VARIABLES HERE ////////////////////////////////////////////////////////
    I VAR BYTE                 ' TO BE USED IN FOR-NEXT LOOP
    ' DEFINE VARIABLES HERE ////////////////////////////////////////////////////////
    
    ' INITIALIZATION ROUTINE ///////////////////////////////////////////////////////
    LED   = 0                  ' TURN-OFF THE POWER LED
    RED   = 0                  ' TURN-OFF THE RED LED
    GREEN = 0                  ' TURN-OFF THE GREEN LED
    LED = 1                    ' TURN-ON THE POWER LED
    PAUSE 4000                 ' POWER UP OK
    LED = 0                    ' NOW TURN IT OFF
    ' END OF INITIALISATION ROUTINE ////////////////////////////////////////////////
    
    '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    INTCON = $90               ' SET UP THE GIE BITS AND RA2 INT BIT 
                               ' TO ENABLE INTERRUPT PROCESSING
    '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    
    ENABLE   ' INSTRUCT THE COMPILER TO PUT THE INTERRUPT HANDLING CALLS FROM NOW ON
    
    '////////////// THE MAIN ROUTINE THAT DOES SHORT RED FLASH /////////////////////
    MAIN: 
    RED = 1                    ' TURN-ON THE RED-LED
    I   = 0                    ' RESET THE VARIABLE (FOR-NEXT LOOP)
    
    FOR I = 1 TO 200           ' DO A PAUSE IN A LOOP 200 X 5 = 1000mS 
    PAUSE 5                    ' REDUCES INTERRUPT PROCESSING LATENCY BY PBP
    NEXT I
    
    RED = 0
    
    FOR I = 1 TO 200           ' DO A PAUSE IN A LOOP 200 X 5 = 1000mS 
    PAUSE 5                    ' REDUCES INTERRUPT PROCESSING LATENCY BY PBP
    NEXT I
    
    GOTO MAIN                  ' DO-IT FOR-EVER
    
    '///////////////////////////////////////////////////////////////////////////////
    
    
    DISABLE ' INSTRUCT THE COMPILER NOT TO PUT THE INTERRUPT HANDLING CALLS FROM NOW ON
    
    '/// THE ACTUAL INTERRUPT HANDLER IS RIGHT BELOW ///////////////////////////////
    INT_GREEN:
    INTCON = $80               ' CLEAR THE INTERRUPT FLAG BUT KEEP GLOBAL ENABLED
                               ' OTHERWISE PBP WILL RE-ENTER THIS ROUTINE
    LED   = 1                  ' ON-TILL IN THIS ROUTINE
    RED   = 0                  ' TURN-OFF THE RED LED IF IT WAS ON BY A PREVIOUS INSTANCE
    GREEN = 1                  ' TURN-ON THE GREEN TO SHOW THAT INSIDE THIS ROUTINE
    PAUSE 1000                 ' WAIT A SECOND
    
    GREEN = 0 : PAUSE 1000     ' TURN-OFF AND WAIT
    GREEN = 1 : PAUSE 1000     ' TURN-ON AND WAIT
    GREEN = 0 : PAUSE 1000     ' TURN-OFF AND WAIT
    GREEN = 1 : PAUSE 1000     ' TURN-ON AND WAIT
    GREEN = 0 : PAUSE 1000     ' TURN-OFF AND WAIT
    
    LED = 0                    ' GREEN-BLINK DONE NOW TIME TO QUIT
    INTCON = $90               ' TURN-ON THE RA2 INTERRUPT BIT  FOR FURTHER PROCESSING
    RESUME                     ' GO BACK TO WHAT IT WAS DOING
    ENABLE
    BTW I commented out the device command as I use MPASM and it compiled okay. Hope this helps.

    Copy the code and paste it in MICROCODE STUDIO for better readability.

    Regards

    Sougata

  3. #3
    trying's Avatar
    trying Guest


    Did you find this post helpful? Yes | No

    Default thanks

    thanks sougata it compiled with cdlite. but I have not had time to play with it.
    But it has helped me understand a few things better. I'm learning 1 project at time thanks again

Similar Threads

  1. Instant Interrupts - Revisited
    By Darrel Taylor in forum Code Examples
    Replies: 772
    Last Post: - 17th February 2016, 23:14
  2. Clock using Instant Interrupts
    By PICpocket in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 16th February 2009, 22:43
  3. Microcode studio - PIC16F877A Interrupts
    By mcbeasleyjr in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 8th January 2009, 07:10
  4. DT's Instant Interrupts trouble
    By Tomexx in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 24th November 2008, 21:48
  5. help: TMR0 interrupts disabling PORTAchange interrupts???
    By xnihilo in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 19th August 2008, 16:10

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

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