darrel taylor's instant interrupt compiler error


Closed Thread
Results 1 to 17 of 17

Hybrid View

  1. #1

    Default darrel taylor's instant interrupt compiler error

    hello everyone!!

    i got the code of darrel taylor's instant interrupts and eagerly tried his program of toggling an led. but when i tried to compile it inside microcode studio using PIC16F84A as the target processor, i get an assembler error that says like this:

    Error[113]c:\progra~1\mecani~1\mcs\instan~1.asm 115:Symbol not previously defined (PIR1)

    When i compiled it with PIC16F628A,it was succesful but has no hex file generated. Do i need to comment out some lines in his DT_INTS-14.bas and ReEnterPBP.bas include files?

    any suggestions or comments is highly appreciated. Thank you very much!!

  2. #2
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    Are you using MPASM for the assembler?
    Dave
    Always wear safety glasses while programming.

  3. #3
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    The very first PIC with EEPROM memory was the 16C84.
    The 16F84 is simply the flash memory upgrade to a VERY OLD chip.

    I wish everyone would Stop using 16F84's!!!!!!
    They are worthless, and very expensive.<hr>As for the error ...

    You are probably trying to compile the example that uses Timer1 to blink an LED.
    But the 16F84A doesn't have a Timer1. Or a PIR1, or a USART, or an A/D module, or a ....

    You could try using Timer0.
    The "Combine" example has some Timer0 code.
    <br>
    DT

  4. #4


    Did you find this post helpful? Yes | No

    Default

    first of all thank you very much for the immediate reply..

    as for mackrackit: yes i am using MPASM as my assembler but why do i still get this same error?

    as for darrel taylor thank you for suggesting on not using 'F84s anymore but you see i don't have any available PICs beside the PIC16F84A and i haven't mastered yet PICBasic Pro language yet..
    Code:
    LED1   VAR  PORTB.1
    
    INCLUDE "DT_INTS-14.bas"     ' Base Interrupt System
    INCLUDE "ReEnterPBP.bas"     ' Include if using PBP interrupts
    
    ASM
    INT_LIST  macro    ; IntSource,        Label,  Type, ResetFlag?
            INT_Handler    INT_INT,  _ToggleLED1,   PBP,  yes
        endm
        INT_CREATE               ; Creates the interrupt processor
    
        INT_ENABLE   INT_INT     ; enable external (INT) interrupts
    ENDASM
    
    Main:
      PAUSE 1
    GOTO Main
    
    '---[INT - interrupt handler]---------------------------------------------------
    ToggleLED1:
         TOGGLE LED1
    @ INT_RETURN
    this is your example that i was trying to compile using microcode studio..
    pardon me for the inconvenience..

    i think that your code is the best way to service interrupts in picbasic environment which i can very much use for my led dot matrix(5x7) scrolling display..

    thank you very much!!

  5. #5
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Add this line before the INT_LIST.
    Code:
    @PIR1 = EECON1
    DT

  6. #6


    Did you find this post helpful? Yes | No

    Thumbs up darrel taylor's instant interrupt compiler error

    a big thanks to you sir expert darrel taylor!!!

    it's already working!!

    thank you very much for the assistance!!

    by the way,is EECON1 a register in the PIC?

    thanks!!!

  7. #7
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Hi Al,

    You're welcome. And Happy Holiday's to you too.
    Whichever Holiday's they may be.

    Quote Originally Posted by delta_boogie View Post
    by the way,is EECON1 a register in the PIC?
    Yes, EECON1 is a register in the PIC.
    On the 16F84, it contains the EEIF bit (EEPROM Write Operation Interrupt Flag bit).
    On the other PIC16F's, that bit is located in either the PIR1 or PIR2 registers.

    The @PIR1 = EECON1 line tells the compiler to look at the EECON1 register for the EEIF bit, since there isn't a PIR1 or PIR2 in the 16F84.

    hth,
    DT

  8. #8
    Join Date
    Aug 2006
    Location
    Look, behind you.
    Posts
    2,818


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Darrel Taylor View Post
    I wish everyone would Stop using 16F84's!!!!!!
    They are worthless, and very expensive.

    Hi Darrel, The thing is, Since it is so old and simple in terms of having very few enhancements, most of the PIC Basic books for beginners specify them, as the default configs set them up correctly, so the authors do not have to hassel explaining how to set config statements.
    Last edited by Archangel; - 13th December 2008 at 17:43.
    If you do not believe in MAGIC, Consider how currency has value simply by printing it, and is then traded for real assets.
    .
    Gold is the money of kings, silver is the money of gentlemen, barter is the money of peasants - but debt is the money of slaves
    .
    There simply is no "Happy Spam" If you do it you will disappear from this forum.

  9. #9
    Join Date
    May 2008
    Location
    Italy
    Posts
    825


    Did you find this post helpful? Yes | No

    Default I am anable to compile it

    Very likely I am missing somthing because I am unable to compile the DT_Ints-14 with 16F84A & 16F873 while 16F876 will compile with some warnings.

    Here the simple code:
    Code:
    LED1 VAR PORTB.1
    INCLUDE "DT_INTS-14.bas" ; Base Interrupt System
    INCLUDE "ReEnterPBP.bas" ; Include if using PBP interrupts
    
    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
    GOTO Main
    '---[INT - interrupt handler]---------------------------------------------------
    ToggleLED1:
    TOGGLE LED1
    @ INT_RETURN
    These are the errors with 16F84A with "@PIR1 = EECON1" or w/o it (Flash 1024)
    ERROR: Variable wsave3 position request 416 beyond RAM_END 79.
    ERROR: Variable wsave2 position request 288 beyond RAM_END 79.
    ERROR: Variable wsave1 position request 160 beyond RAM_END 79.

    These are the erros with 16F873 & 16F874 (Flash 4096)
    ERROR: Variable wsave3 position request 416 beyond RAM_END 255.
    ERROR: Variable wsave2 position request 288 beyond RAM_END 255.

    These are the warnings with 16F876 (Flash 8192)
    Warning[205]c:\..................................\led_int.asm 495:Found directive in column 1. (endm)
    Warning[206]c:\..................................\led_int.asm 496:Found call to macro in column 1. (INT_CREATE)
    Warning[206]c:\..................................\led_int.asm 494:Found call to macro in column 1. (INT_Handler)
    I did not check if the above compilation was working or not ( the harware I had prepared was for 16F84A)
    The only explanation I am giving is the ram space, but since others have used with success the 16F84A with the same program, that means that the problem is with my compiler (ver 2.47) or something wrong I am doing.

    Any help will be greatly appreciated.

    Al.
    Last edited by aratti; - 14th December 2008 at 12:09.
    All progress began with an idea

  10. #10
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    For the wsave errors. Open the DT_INTS-14.bas file and at the top you'll see a section that says ...
    Code:
    ' --- IF any of these three lines cause an error ?? ----------------------------
    '       Comment them out to fix the problem ----
    ' -- It depends on which Chip you are using, as to which variables are needed --
    wsave1      var byte    $A0     SYSTEM      ' location for W if in bank1
    wsave2      var byte    $120    SYSTEM      ' location for W if in bank2
    wsave3      var byte    $1A0    SYSTEM      ' location for W if in bank3
    '-------------------------------------------------------------------------------
    For the "Found in column 1" warnings.
    You must maintain the proper indentation of the ASM blocks, as seen in the original examples.

    DT_INTS-14 (Hello World)
    http://www.darreltaylor.com/DT_INTS-14/hello.html
    DT

  11. #11
    Join Date
    May 2008
    Location
    Italy
    Posts
    825


    Did you find this post helpful? Yes | No

    Default

    Thank you Darel, for the prompt answer. Problem has been fixed.
    Now program compile (using @PIR1 = EECON1) correctly, and I can proceed experimenting with interrupts.

    Thank you again for your kindness. With the occasion, I whish you:

    Merry Christmas and Happy New Year

    Al.
    All progress began with an idea

Similar Threads

  1. Optimizing DIV
    By skimask in forum mel PIC BASIC Pro
    Replies: 41
    Last Post: - 22nd September 2008, 04:58
  2. Usart with Darrel Instant Interrupt
    By Pedro Pinto in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 17th February 2008, 00:09
  3. using darrel taylor's instant interrupts
    By Michael Wakileh in forum mel PIC BASIC Pro
    Replies: 13
    Last Post: - 31st July 2007, 04:07
  4. Ping Darrel Taylor - Timer0 Instant Interrupt
    By JEC in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 9th January 2007, 11:20
  5. Instant Interrupt Error
    By cool_justin in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 8th June 2006, 23:40

Members who have read this thread : 1

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