Customizing the DT_INTS-XX.bas Instant Interrupt


Closed Thread
Results 1 to 14 of 14

Hybrid View

  1. #1
    Join Date
    Feb 2008
    Location
    Michigan, USA
    Posts
    231


    Did you find this post helpful? Yes | No

    Default Re: Customizing the DT_INTS-XX.bas Instant Interrupt

    Dave,
    Thanks for sharing that. It behaves differently than the one i did, so I'll have to compare and learn what I missed. Still hasn't corrected my INT on Change (IOC_INT) issue, so I still have something wrong. It's always something....

    bo

  2. #2
    Join Date
    Mar 2003
    Location
    Commerce Michigan USA
    Posts
    1,166


    Did you find this post helpful? Yes | No

    Default Re: Customizing the DT_INTS-XX.bas Instant Interrupt

    Bo, I have NO issue using it with IOC or INT. I would make sure ALL registers are set for using IOC. I have attached the page that tells of all the resisters affected.
    Attached Images Attached Images
    Dave Purola,
    N8NTA
    EN82fn

  3. #3
    Join Date
    Feb 2008
    Location
    Michigan, USA
    Posts
    231


    Did you find this post helpful? Yes | No

    Default Re: Customizing the DT_INTS-XX.bas Instant Interrupt

    Dave,
    Thank you for the help. I have been trying to look through the registers, but obviously missing something.

    Here is the stripped down core of the program. I was under the impression that DT_INTS took care of some of these registers, but manually included them in case I'm missing something.

    The TMR code is working fine, I just can't the IOC to work.


    Code:
    '****************************************************************
    '                       16F18624,25,26
    '                ---------------u-----------------
    '      5v pwr  -1|VDD++                    -- VSS |14-    Gnd     
    '              -2|RA5                 RA0/ICSPDAT |13-        
    '  Gge/Tac Drv -3|RA4                         RA1 |12-        
    '              -4|RA3/MCLR/vpp                RA2 |11-    Neutral > ECM          
    '    Tach IN   -5|RC5                         RC0 |10-    Neut LED        
    '              -6|RC4                         RC1 |9-     VSS Led     
    '        VSS   -7|RC3                         RC2 |8-              
    '                ----------------------------------    
    
    '******************************************************************
    #CONFIG
       __config _CONFIG2, _MCLRE_OFF & _CP_OFF
    #ENDCONFIG
    INCLUDE "DT_INTS-16.bas"  ; v1.10 Modified for 16F18326 IOC_INT
    INCLUDE "ReEnterPBP.pbp"    ; Include for DT_INTS.  ver 3.4
    
    ' alias pins:
    Nout        var PORTA.2  ' Neutral switch output signal  
    TachDrv     var PORTA.4  ' Tach Drive 
    N_LED       VAR PORTC.0  ' LED for Neutral
    VSS_LED     VAR PORTC.1  ' LED for VSS
    VSS         var PORTC.3  ' Vehicle Speed Sensor output signal ON 
    TachIN      var PORTC.5  ' Monitor ECM tachometer signal 
    
    PIE0 =  %00010000        ' Enable interrupts (maybe not needed)
    INTCON = %1100001        ' Global and peripheral INTS enabled, Rising edge
    IOCCP = %00100000        ' Interrupt on change on RC5, tach input
    T0CON0 = %10010000       ' TMR0 Postscale=0, 16 bit
    T0CON1 = %01000000       ' Fosc/4, No Prescale
    T1CON = %00000001        ' TMR1 prescale=2, clock=Fosc/4, TMR1=on 
    T1GCON = 0
    PORTA = %00001000        ' Outputs except 3 for SpeedAdj 
    PORTC = %00100000        ' Outputs except 5 for Tach In input 
    TRISA = %00001000        ' Pins output(except 3 for Speed adj)
    TRISC = %00100000        ' Outputs except 5 for Tach In input
    ANSELA = 0
    ANSELC = 0
    ;----[High Priority Interrupts]----------------------------------------
    ASM
    INT_LIST  macro    ; IntSource,   Label,   Type, ResetFlag?
            INT_Handler   IOC_INT,   _Capture,  PBP,  yes
            INT_Handler   TMR0_INT,  _Timer0,   PBP,  yes
            INT_Handler   TMR1_INT,  _Timer1,   PBP, yes
        endm
        INT_CREATE               ; Creates the High Priority interrupt processor
    ENDASM
    @    INT_ENABLE  IOC_INT     ; enable Capture interrupts
    @    INT_ENABLE  TMR0_INT    ; enable Timer 0 interrupts
    @    INT_ENABLE  TMR1_INT    ; enable Timer 1 interrupts
    ;-----------------------------------------------------------------------
    Main: 
    GOTO Main
    '---[IOC - interrupt handler]------------------------------------------
    Capture:  ' Enter here with Tach Pulse from ECM (IOC)
        toggle VSS_led 
        toggle N_LED
        pulsout tachdrv, 50         ' normal 4 cy tach, 500uS  
    @ INT_RETURN 
    '---[TMR0 - interrupt handler]--  --------------------------------------
    Timer0:                         ' Set Idle flag if timer expires,
       toggle Nout
    @ INT_RETURN
    '---[TMR1 - interrupt handler]----------------------------------------
    Timer1:
        toggle VSS
    @ INT_RETURN
    
    END

  4. #4
    Join Date
    Apr 2014
    Location
    OK
    Posts
    557


    Did you find this post helpful? Yes | No

    Default Re: Customizing the DT_INTS-XX.bas Instant Interrupt

    Are you resetting the PIR0.IOCIF or IOCCF.5? This would be in the DT_INTs. It's possible you're trying to clear the wrong flag. PIR0.IOCIF is read only and is Hardware cleared when IOCCF.5 = 0.

  5. #5
    Join Date
    Mar 2003
    Location
    Commerce Michigan USA
    Posts
    1,166


    Did you find this post helpful? Yes | No

    Default Re: Customizing the DT_INTS-XX.bas Instant Interrupt

    I din't see where you are clearing the individual IOCCF flag bits before or after the interrupt?
    Dave Purola,
    N8NTA
    EN82fn

  6. #6
    Join Date
    Feb 2008
    Location
    Michigan, USA
    Posts
    231


    Did you find this post helpful? Yes | No

    Default Re: Customizing the DT_INTS-XX.bas Instant Interrupt

    Dave,
    It was my belief that the "yes" in
    Code:
    INT_Handler   IOC_INT,   _Capture,  PBP,  yes
    did that.
    I haven't dissected DT_INTS enough to verify that, and it may be an artifact of not originally being part of Darrel's program.
    I can look at that. Seems reasonable with the results I'm seeing.

    bo

  7. #7
    Join Date
    Feb 2008
    Location
    Michigan, USA
    Posts
    231


    Did you find this post helpful? Yes | No

    Default Re: Customizing the DT_INTS-XX.bas Instant Interrupt

    Well, looking at the DT_INTS-16 that Dave was so nice to share, I couldn't see the issue, so I just added a line to clear the flag and it seems to be reacting much better. If I get the time, I may look deeper into DT_INTS and see if I can understand how it works better than the 20% I can make sense of. Until then, this seems to solve my problem.
    Code:
    '---[IOC - interrupt handler]------------------------------------------
    Capture:  ' Enter here with Tach Pulse from ECM (IOC)
        toggle VSS_led 
        toggle N_LED
        pulsout tachdrv, 50         ' normal 4 cy tach, 500uS 
        IOCCF = 0 
    @ INT_RETURN
    Now to incorporate it back into the real program and see if I have the issue solved...

    Thank you guys for all the help. Would not likely have seen that with out it.

    bo
    Last edited by boroko; - 5th May 2020 at 20:43.

Similar Threads

  1. RTCC Interrupt for DT_INTS-18.bas
    By readitaloud in forum mel PIC BASIC Pro
    Replies: 0
    Last Post: - 29th November 2013, 22:33
  2. Can I use DT_INTS-18.bas and MIBAM.pbp together?
    By tacbanon in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 12th August 2013, 22:20
  3. DT_INTS-14.bas Reset Flag
    By Larryd in forum Serial
    Replies: 2
    Last Post: - 8th April 2013, 22:44
  4. Serial Interrupt with DT_Ints - Error
    By gadelhas in forum mel PIC BASIC Pro
    Replies: 8
    Last Post: - 11th August 2010, 13:26
  5. Problem with DT_INTS-14.bas and PIC16F628A
    By CesarP in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 9th August 2010, 05:31

Members who have read this thread : 3

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