DT_Ints w/18F26K22 stop if incorrect baud rate


Closed Thread
Results 1 to 22 of 22

Hybrid View

  1. #1
    Join Date
    Jul 2009
    Location
    Ohio, USA
    Posts
    57


    Did you find this post helpful? Yes | No

    Default Re: DT_Ints w/18F26K22 stop if incorrect baud rate

    I know this is an old thread but I am trying to get the DT_INTS to work with the 18F26k22, so far no luck with either RX1 or RX2,the program will not jump to the label in the ASM macro

    Code:
            INCLUDE "modedefs.bas"
            INCLUDE"ALLDIGITAL.pbp"
            INCLUDE "HomeAutomationVars.bas"  'Open with PBP editor
            INCLUDE "DT_INTS-18.bas"     ; Base Interrupt System
            INCLUDE "ReEnterPBP-18.bas"     ; Include if using PBP interrupts
    
        DEFINE PULSIN_MAX 1000
        DEFINE HSER_RCSTA 90h   'Hser receive status init
        DEFINE HSER_TXSTA 24h   'Hser transmit status init
        DEFINE HSER_BAUD 9600  'Hser baud rate
        DEFINE HSER_SPBRG 25
        DEFINE HSER_CLROERR 1
        DEFINE RX2_INT   PIR4,RC2IF, PIE4,RC2IE
        DEFINE TX2_INT   PIR4,TX2IF, PIE4,TXIE
        DEFINE DEBUG_REG PORTB  
        DEFINE DEBUG_BIT 0
        DEFINE DEBUG_BAUD 9600 
        ' Set Debug mode: 0 = true, 1 = inverted
        DEFINE DEBUG_MODE 1
        x var word
        
        Main:
        debug "here",cr
    ASM
    INT_LIST  macro    ; IntSource,        Label,  Type, ResetFlag?
            INT_Handler    RX_INT,    _read_serial,   PBP,  yes
            
    
       endm
        INT_CREATE             ; Creates the interrupt processor
    ENDASM    
    T0CON = %10010010 
    @   INT_ENABLE   RX_INT     ; enable external (RX) interrupts    
        
        
        for x = 1 to 1000
         pause 1
         next x
    
        Goto main
        
        
    read_serial:
    Debug "got it!!",cr    
    pause 1000
    goto main
    Is there a fuse bit that I need to set? I had no problems with an 18F1320


    Mike

  2. #2
    Join Date
    May 2013
    Location
    australia
    Posts
    2,653


    Did you find this post helpful? Yes | No

    Default Re: DT_Ints w/18F26K22 stop if incorrect baud rate

    no config section
    no define OSC
    no version of pbp



    what osc freq do you expect the chip to be running at ?

    power on default for that chip is ?

    thats an awful lot of guessing
    Warning I'm not a teacher

  3. #3
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,612


    Did you find this post helpful? Yes | No

    Default Re: DT_Ints w/18F26K22 stop if incorrect baud rate

    Hi,

    A couple of things that sticks out:

    I'm fairly sure that the DEFINE HSER stuff isn't DOING anything UNTIL you actually USE a HSERIN/HSEROUT statement in your code - which you don't. Try adding a dummy HSERIN/HSEROUT - or set USART registers up yourself.

    The ISR is ending with a GOTO which is not what it's supposed to do.

    You don't want the ResetFlag option enabled since the EUSART hardware clears the flag i automatically.

    /Henrik.

  4. #4
    Join Date
    Jul 2009
    Location
    Ohio, USA
    Posts
    57


    Did you find this post helpful? Yes | No

    Default Re: DT_Ints w/18F26K22 stop if incorrect baud rate

    Richard, thank you for the respose,
    PBP version is 4.0.0.0

    Henrick, I altered the code to include a hserin but still no luck

    Code:
    '****************************************************************
        INCLUDE "modedefs.bas"
        include "ALLDIGITAL.pbp"      
        include "HomeAutomationVars.bas"  'Open with PBP editor       
        INCLUDE "DT_INTS-18.bas"     ; Base Interrupt System
        INCLUDE "ReEnterPBP-18.bas"     ; Include if using PBP interrupts
      
        OSCCON = %11010010 'Internal oscillator is set to 4MHz  $D2
       'OSCTUNE = %10000000 'HFINTOSC selected; PLL disabled; Factory calibrated frequency
        ADCON0.0 = 0 'Disable ADC 
      
        DEFINE OSC 4 
       ' DEFINE RX2_INT   PIR4,RC2IF, PIE4,RC2IE
        'DEFINE TX2_INT   PIR4,TX2IF, PIE4,TXIE
        DEFINE DEBUG_REG PORTB  
        DEFINE DEBUG_BIT 0
        DEFINE DEBUG_BAUD 9600 
        DEFINE HSER_RCSTA 90h   'Hser receive status init
        DEFINE HSER_TXSTA 24h   'Hser transmit status init
        DEFINE HSER_BAUD 9600  'Hser baud rate
        define HSER_SPBRG 25
        Define HSER_CLROERR 1
        ' Set Debug mode: 0 = true, 1 = inverted
        DEFINE DEBUG_MODE 1
        
        
        Main:
        debug "here",cr
    ASM
    INT_LIST  macro    ; IntSource,        Label,  Type, ResetFlag?
            INT_Handler    RX1_INT,    _read_serial,   PBP,  yes
            
    
       endm
        INT_CREATE             ; Creates the interrupt processor
    ENDASM    
    T0CON = %10010010 
    @   INT_ENABLE   RX1_INT     ; enable external (RX) interrupts    
        
        
        for x = 1 to 1000
         pause 1
        next x
    
        Goto main
        
        
    read_serial:
    Debug "got it!!",cr 
    hserin 250, timeup, [x]   
    pause 1000
    @ INT_RETURN   
    timeup:
    debug "no rs232",cr
    goto main
    This is the include file in the pbp folder
    Code:
     INCLUDE "P18F26K22.INC"	; MPASM  Header
            __CONFIG    _CONFIG1H, _FOSC_INTIO67_1H
            __CONFIG    _CONFIG3H, _PBADEN_OFF_3H
            __CONFIG    _CONFIG4L, _LVP_OFF_4L & _XINST_OFF_4L
            NOLIST
    Mike

  5. #5
    Join Date
    May 2013
    Location
    australia
    Posts
    2,653


    Did you find this post helpful? Yes | No

    Default Re: DT_Ints w/18F26K22 stop if incorrect baud rate

    PBP version is 4.0.0.0
    there is no pbp4

    its
    pbp2.xxx
    or
    pbp3.xxx


    INCLUDE "P18F26K22.INC" ; MPASM Header
    __CONFIG _CONFIG1H, _FOSC_INTIO67_1H
    __CONFIG _CONFIG3H, _PBADEN_OFF_3H
    __CONFIG _CONFIG4L, _LVP_OFF_4L & _XINST_OFF_4L
    NOLIST
    makes me think pbp2. something


    and
    using partial [incomplete configs] is asking for trouble those settings that are omitted revert to power on default after an erase, not even pbp defaults
    and can lead to difficult to understand mis-operation


    having an isr like this will never work properly

    Code:
    read_serial:
    Debug "got it!!",cr 
    hserin 250, timeup, [x]   
    pause 1000
    @ INT_RETURN
    an isr should not :-
    have a pause
    or
    any blocking code
    or
    any lengthy {timewise} commands
    if its to work properly

    I would do it this way

    note the config section is for pbp3

    Code:
    #CONFIG
      CONFIG  FOSC = INTIO67
      CONFIG  PLLCFG = OFF
      CONFIG  PRICLKEN = OFF
      CONFIG  FCMEN = OFF
      CONFIG  IESO = OFF
      CONFIG  PWRTEN = OFF
      CONFIG  BOREN = SBORDIS
      CONFIG  BORV = 190
      CONFIG  WDTEN = ON
      CONFIG  WDTPS = 32768
      CONFIG  CCP2MX = PORTC1
      CONFIG  PBADEN = OFF
      CONFIG  CCP3MX = PORTB5
      CONFIG  HFOFST = ON
      CONFIG  T3CMX = PORTC0
      CONFIG  P2BMX = PORTB5
      CONFIG  MCLRE = EXTMCLR
      CONFIG  STVREN = ON
      CONFIG  LVP = OFF
      CONFIG  XINST = OFF
      CONFIG  DEBUG = OFF
      CONFIG  CP0 = OFF
      CONFIG  CP1 = OFF
      CONFIG  CP2 = OFF
      CONFIG  CP3 = OFF
      CONFIG  CPB = OFF
      CONFIG  CPD = OFF
      CONFIG  WRT0 = OFF
      CONFIG  WRT1 = OFF
      CONFIG  WRT2 = OFF
      CONFIG  WRT3 = OFF
      CONFIG  WRTC = OFF
      CONFIG  WRTB = OFF
      CONFIG  WRTD = OFF
      CONFIG  EBTR0 = OFF
      CONFIG  EBTR1 = OFF
      CONFIG  EBTR2 = OFF
      CONFIG  EBTR3 = OFF
      CONFIG  EBTRB = OFF
    #ENDCONFIG
      
      
            ;INCLUDE "modedefs.bas"
            ;INCLUDE"ALLDIGITAL.pbp"
            ;INCLUDE "HomeAutomationVars.bas"  'Open with PBP editor
            INCLUDE "DT_INTS-18.bas"     ; Base Interrupt System
            INCLUDE "ReEnterPBP-18.bas"     ; Include if using PBP interrupts
    
        define OSC 8
        DEFINE PULSIN_MAX 1000
        DEFINE HSER_RCSTA 90h   'Hser receive status init
        DEFINE HSER_TXSTA 24h   'Hser transmit status init
        DEFINE HSER_BAUD 9600   'Hser baud rate
        DEFINE HSER_SPBRG 25
        DEFINE HSER_CLROERR 1
        
        DEFINE DEBUG_REG PORTB  
        DEFINE DEBUG_BIT 0
        DEFINE DEBUG_BAUD 9600 
        ' Set Debug mode: 0 = true, 1 = inverted
        DEFINE DEBUG_MODE 1
        x var word
        rxflag   var bit
        rxchar var byte
    ASM
    INT_LIST  macro    ; IntSource,        Label,  Type, ResetFlag?
     INT_Handler    RX1_INT ,    _read_serial,   PBP,  yes
     endm
     INT_CREATE             ; Creates the interrupt processor
    ENDASM    
    OSCCON = $60   ;  OSC 8
    @   INT_ENABLE   RX1_INT     ; enable external (RX) interrupts    
    debug "running",13,10      
    Main:
        debug "."    
        for x = 1 to 1000
          if rxflag then
             Debug 13,10,"got !! asc chr",#rxchar,13,10
             rxflag=0
          endif 
          pauseus 1000
        next x 
         
    Goto main   
        
        
    read_serial:
        rxflag = 1
        rxchar = rc1reg  
    @   INT_RETURN
    Warning I'm not a teacher

  6. #6
    Join Date
    Jul 2009
    Location
    Ohio, USA
    Posts
    57


    Did you find this post helpful? Yes | No

    Default Re: DT_Ints w/18F26K22 stop if incorrect baud rate

    Richard, you are right, microcode studio version is 4.0.0.0, and the PicBasic Pro version is 2.6L

  7. #7
    Join Date
    May 2013
    Location
    australia
    Posts
    2,653


    Did you find this post helpful? Yes | No

    Default Re: DT_Ints w/18F26K22 stop if incorrect baud rate

    and Henrik is right
    about this
    USE a HSERIN/HSEROUT statement in your code - which you don't. Try adding a dummy

    Code:
    #CONFIG
      CONFIG  FOSC = INTIO67
      CONFIG  PLLCFG = OFF
      CONFIG  PRICLKEN = OFF
      CONFIG  FCMEN = OFF
      CONFIG  IESO = OFF
      CONFIG  PWRTEN = OFF
      CONFIG  BOREN = SBORDIS
      CONFIG  BORV = 190
      CONFIG  WDTEN = ON
      CONFIG  WDTPS = 32768
      CONFIG  CCP2MX = PORTC1
      CONFIG  PBADEN = OFF
      CONFIG  CCP3MX = PORTB5
      CONFIG  HFOFST = ON
      CONFIG  T3CMX = PORTC0
      CONFIG  P2BMX = PORTB5
      CONFIG  MCLRE = EXTMCLR
      CONFIG  STVREN = ON
      CONFIG  LVP = OFF
      CONFIG  XINST = OFF
      CONFIG  DEBUG = OFF
      CONFIG  CP0 = OFF
      CONFIG  CP1 = OFF
      CONFIG  CP2 = OFF
      CONFIG  CP3 = OFF
      CONFIG  CPB = OFF
      CONFIG  CPD = OFF
      CONFIG  WRT0 = OFF
      CONFIG  WRT1 = OFF
      CONFIG  WRT2 = OFF
      CONFIG  WRT3 = OFF
      CONFIG  WRTC = OFF
      CONFIG  WRTB = OFF
      CONFIG  WRTD = OFF
      CONFIG  EBTR0 = OFF
      CONFIG  EBTR1 = OFF
      CONFIG  EBTR2 = OFF
      CONFIG  EBTR3 = OFF
      CONFIG  EBTRB = OFF
    #ENDCONFIG
      
      
            ;INCLUDE "modedefs.bas"
            ;INCLUDE"ALLDIGITAL.pbp"
            ;INCLUDE "HomeAutomationVars.bas"  'Open with PBP editor
            INCLUDE "DT_INTS-18.bas"     ; Base Interrupt System
            INCLUDE "ReEnterPBP-18.bas"     ; Include if using PBP interrupts
    
        define OSC 8
       
        DEFINE HSER_RCSTA 90h   'Hser receive status init
        DEFINE HSER_TXSTA 24h   'Hser transmit status init
        DEFINE HSER_BAUD 9600   'Hser baud rate
        DEFINE HSER_SPBRG 25
        DEFINE HSER_CLROERR 1
        
        DEFINE DEBUG_REG PORTB  
        DEFINE DEBUG_BIT 0
        DEFINE DEBUG_BAUD 9600 
        ' Set Debug mode: 0 = true, 1 = inverted
        DEFINE DEBUG_MODE 1
        x         var  word
        rxflag   var bit
        rxchar  var byte
    ASM
    INT_LIST  macro    ; IntSource,        Label,  Type, ResetFlag?
     INT_Handler    RX1_INT ,    _read_serial,   PBP,  yes
     endm
     INT_CREATE             ; Creates the interrupt processor
    ENDASM    
    OSCCON = $60   ;  OSC 8
    @   INT_ENABLE   RX1_INT     ; enable external (RX) interrupts    
    debug "running",13,10 
    hserout "running",13,10     ;dummy
    Main:
        debug "."    
        for x = 1 to 1000
          if rxflag then
             Debug 13,10,"got !! asc chr",#rxchar,13,10
             rxflag=0
          endif 
          pauseus 1000
        next x 
         
    Goto main   
        
        
    read_serial:
        rxflag = 1
        rxchar = rc1reg  
    @   INT_RETURN
    Warning I'm not a teacher

  8. #8
    Join Date
    Jul 2009
    Location
    Ohio, USA
    Posts
    57


    Did you find this post helpful? Yes | No

    Default Re: DT_Ints w/18F26K22 stop if incorrect baud rate

    OK, Pic Basic Pro 2.6L will compile the project
    Version 2.60A gives these errors:
    Unknown Processor(18F26k22)
    Cannot open file (Include file "Pic18F26K22.inc" not found)
    Processor type is undefined


    Etc...
    Compiler Version 3.1.0.4 gives these errors
    Warning: Unable to open INCLUDE file DT INTS-18.BAS
    Warning: unable to open INCLUDE file REENTERPBP-18.BAS
    and a whole host of ASM errors associated


    Anyone have an idea of what to do now?

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