already done that can't understand it well enough im afraid![]()
on interrupt is painful compared to Darrel Taylor's interrupts. Check out:
http://darreltaylor.com/DT_INTS-14/intro.html
and some talk about using the 12f683 with DT_INTS
http://www.picbasic.co.uk/forum/show...?t=3251&page=3
Walter
OK thanks. Can anyone show me how to set up a simple interrupt as per my original post using DT Interrupts?
hI retepsnikrep,
Sorry for the delay. DT_INTS-14.bas Works excelently as is for all the 14 bit core PICs with ports defined as PortA, PortB . . . . I ran into a little snag porting it to the 12F series for GPIO on change in the port naming convention, and the fact they do not have RBC port to interrupt. I tried making appropriate changes in DT ints but got flag errors, so I took another tact which works. I added aliases in the P12F683.inc file of mpasm so as to give the compiler the belief that GPIO and PortB were the same.
I added this to it in the area of INTCON Bits
This tells the assembler to act on RBIF as the same as GPIF and RBIE as GPIE .Code:RBIF EQU H'0000' ; ADDED FOR dt INTS RBIE EQU H'0003' ;ADDED
I didn't have a 683 so I compiled for a 683 and loaded into a 675, it works anyway, maybe Darrel has better ideas, this is what I was able to do.
Code:@ __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _MCLRE_OFF & _CP_OFF DEFINE OSC 4 Include "DT_INTS-14.bas" CMCON0 = 7 ' comparator pins configured as I/O ANSEL = 0 ' all I/O as digital OSCCON = %01100000 ' 96 decimal GPIO = %00000000 TRISIO = %00001000 ' GPIO Input all others as Outputs Option_Reg = %01000000 ' Interrupt on rising edge INTEDG bit IOC = %00001000 ' Enable interrupt on change gpio.3 i var byte Mainloop: ASM INT_LIST macro ; IntSource, Label, Type, ResetFlag? INT_Handler RBC_INT, _Do_This, ASM, no endm INT_CREATE ; Creates the interrupt processor ENDASM @ INT_ENABLE RBC_INT ; enable external (INT) interrupts for i = 0 to 9 GPIO.0 = 1 pause 500 gpio.0 = 0 pause 500 next i gpio = 0 Goto Mainloop end Do_This: ;@ INT_DISABLE RBC_INT gpio.1 = 1 INTCON.0 = 0 ;@ INT_ENABLE RBC_INT goto mainloop
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.
That was nice of you to do that Joe.
I think Darrel may have fixed that in his new version of interrupts. It is v1.00. You can find it at the bottom of this page:
http://darreltaylor.com/DT_INTS-14/intro2.html
It says it has GPC_INT -- GPIO Int On Change , among a bunch of other additions. But I have not played much with the DT-INTS-14 ... yet.
Thanks, I was still using ver .93, I will download the newer ver now. I am curious to see what I missed in my attempt. I got the defines and the ifdefs but couldn't figure out the flag handler.
EDIT:
Well Darrel's been busy ! Added GPIO and PortA interrupts too and it looks like a whole lot more. <font color=red>Thanks Darrel !,</font color>
So using DT_INTS-14.bas ver 1.0
Do not forget to open DT_INTS and uncomment these 2 linesCode:@ __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _MCLRE_OFF & _CP_OFF DEFINE OSC 4 Include "DT_INTS-14.bas" CMCON0 = 7 ' comparator pins configured as I/O ANSEL = 0 ' all I/O as digital OSCCON = %01100000 ' 96 decimal GPIO = %00000000 TRISIO = %00001000 ' GPIO Input all others as Outputs Option_Reg = %01000000 ' Interrupt on rising edge INTEDG bit IOC = %00001000 ' Enable interrupt on change gpio.3 i var byte Mainloop: ASM INT_LIST macro ; IntSource, Label, Type, ResetFlag? INT_Handler GPC_INT, _Do_This, ASM, no endm INT_CREATE ; Creates the interrupt processor ENDASM @ INT_ENABLE GPC_INT ; enable external (INT) interrupts for i = 0 to 9 GPIO.0 = 1 pause 500 gpio.0 = 0 pause 500 next i gpio = 0 Goto Mainloop end Do_This: gpio.1 = 1 goto mainloop
Code:wsave VAR BYTE $20 SYSTEM ' location for W if in bank0 wsave1 VAR BYTE $A0 SYSTEM ' location for W if in bank1
Last edited by Archangel; - 13th January 2010 at 07:17.
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.
Bookmarks