Hi Vasile, I had pull down on the input, set the pin 5,6 and 7 to output etc.... At Mid night I have changed the input from B4 to B0 and now it works perfect. So what to do if i want to use B4 ?? regards Hans
Op zondag 25 september 2022 om 08:08:08 UTC+2 schreef vasile: > Hi Hans, > This the way INT1 worked for me on PIC18F26J50, I think your PIC is more > or less the same, however each PIC has its own stupidity, so it might not > work as expected... > > You might want to set the pull-up resistor on your INT pin ( or not, as > your schematic requires). > If you are not using dedicated INT pin and your PIC micro has the stupid > PPS relocation, it will be additional headache, so check all of these... > good luck! > > -- -------interrupt of change > IOC------------------------------------------------------- > var bit MY_flag = low > procedure IOC() is > pragma interrupt > if INTCON3_INT1IF then > MY_flag = high > INTCON3_INT1IF = low > end if > end procedure > > RCON_IPEN = low ; low priority interrupt, PIC16 compatibility > INTCON_GIE = high ; enable global interrupts > INTCON_PEIE_GIEL = high ; enable pheripheral interrupts > INTCON3_INT1IE = high ; enable INT1 on pin_RB5 > INTCON2_INTEDG1 = high ; enable interrupt on rising edge > > > forever loop > -- use MY_flag for whatever > -- reset MY_flag > end loop > > > On Sat, Sep 24, 2022 at 9:33 PM hans <[email protected]> wrote: > >> Hi Rob, >> I did with the attached file in another pcd-set with no other things. The >> led wichh gives the pulses show a regular (1 sec) blink but the output from >> the interrupt goes on and something off. >> Hans >> >> Op zaterdag 24 september 2022 om 20:04:23 UTC+2 schreef >> [email protected]: >> >>> Hi Hans, >>> >>> I see that this PIC has interrupts with prioirities. >>> >>> Since you only use interrupt 0 as a regular interrupt can you change >>> this (make FALSE instead of TRUE): >>> >>> INTCON_PEIE = FALSE >>> >>> If I look in the schematic diagram of the datahseet, setting this to >>> TRUE enables the other priority interrupt vector but it does not have any >>> effect on INT0. >>> >>> Not sure if it helps but you can give it a try. >>> >>> Kind regards, >>> >>> Rob >>> >>> ------------------------------ >>> *Van:* [email protected] <[email protected]> namens hans < >>> [email protected]> >>> *Verzonden:* zaterdag 24 september 2022 19:19 >>> >>> *Aan:* jallib <[email protected]> >>> *Onderwerp:* Re: [jallib] Re: 18F4520 interrupt >>> >>> My last try. Loaded in another set. On the output from A 1 shows a led a >>> steady on/off. So also at the entrance of B4. The led on A0 flashes very >>> fast but there is no connection with the input >>> >>> Op zaterdag 24 september 2022 om 10:39:51 UTC+2 schreef hans: >>> >>> Hi Rob, >>> I did already but no result. A led in the interrupt and one on the >>> pinB4. The last one shows the action but the led inside teh pragme not. >>> I have now made an procedure which i am calling on several places in my >>> program and it worked. >>> procedure DTMF_receive is >>> if portD_low != DTMF_old then >>> DTMF = portD_low >>> end if >>> end procedure >>> >>> Op zaterdag 24 september 2022 om 09:45:51 UTC+2 schreef >>> [email protected]: >>> >>> Hi Hans, >>> >>> The code looks OK. Maybe as a test you can activate a LED in the >>> interrupt routine to check if it gets there. >>> >>> What exactly the behaviour? >>> >>> Kind regards, >>> >>> Rob >>> >>> ------------------------------ >>> *Van:* [email protected] <[email protected]> namens hans < >>> [email protected]> >>> *Verzonden:* zaterdag 24 september 2022 08:33 >>> *Aan:* jallib <[email protected]> >>> *Onderwerp:* Re: [jallib] Re: 18F4520 interrupt >>> >>> I have changed the program part as follows from the example port B0 , >>> compiling is ok but no result >>> >>> -- alias the interrupt flags so they are readable. >>> alias INT_0_ENABLE_BIT is INTCON_INT0IE >>> alias INT_0_FLAG_BIT is INTCON_INT0IF >>> alias INT_0_EDGE_BIT is INTCON2_INTEDG0 >>> >>> -- enable global interrupts >>> INTCON_GIE = TRUE -- Enables all unmasked interrupts >>> INTCON_PEIE = TRUE -- Enables all unmasked peripheral interrupts >>> >>> -- define your interrupt pin >>> alias interrupt_pin is pin_B4 >>> alias interrupt_pin_direction is pin_B4_direction >>> interrupt_pin_direction = INPUT -- interrupt pin is input >>> INT_0_ENABLE_BIT = TRUE -- interrupt pin enable bit for B0 >>> procedure int_on_change_b0() -- procedure is written later >>> >>> -- main interrupt handler >>> procedure interrupt() is >>> pragma interrupt >>> -- Check if interrupt pin 0 (B0) has an interrupt. >>> if INT_0_FLAG_BIT then >>> DTMF = portD_low >>> INT_0_FLAG_BIT = FALSE -- reset interrupt flag >>> end if >>> end procedure >>> >>> a led on the interrupt pin B4 shows the short blink as soon as a dtmf >>> tone is received. The received value remains on portD-low untill the next >>> tone. So i can read it afterwards. My idea was to wait some time before >>> reading the port. >>> >>> Op zaterdag 24 september 2022 om 08:08:47 UTC+2 schreef hans: >>> >>> Here is how i have started and having no reslut i did the (wrong??) >>> chnages >>> >>> -- choose pins to use for int on change >>> const byte int_on_change_pins[] = {"B",4} >>> include interrupt_on_change >>> int_on_change_init() >>> >>> -- interrupt for pin B4 >>> procedure int_on_change_callback_0() is >>> pragma inline >>> DTMF = portD_low >>> end procedure >>> >>> Op zaterdag 24 september 2022 om 08:07:18 UTC+2 schreef hans: >>> >>> Hello, >>> I tried to use the example in the ample sequence 18F4620 Interrupt on >>> change for the 18F4520. It does not work. What's going on? >>> regards >>> Hans >>> >>> Op zaterdag 24 september 2022 om 07:42:24 UTC+2 schreef >>> [email protected]: >>> >>> Hi Vasile, he is using the interrupt on change library. It has "pragma >>> interrupt" and needs the strange line "const byte int_on_change_pins[] = >>> {"B",4}". >>> >>> I agree about the delay, but that depends on the use as you pointed out. >>> It may be ok for the code that is there now, but another way would be to >>> start a timer then when the timer is up use the timer interrupt to read >>> portD_low. >>> >>> There is also sample 18f4620_interrupt_on_change_pin_b0.jal that shows >>> the use of interrupt on change without using the library. >>> >>> Matt. >>> >>> On Saturday, September 24, 2022 at 1:21:09 AM UTC-4 vasile wrote: >>> >>> Hans, >>> I do not see any "pragma interrupt", it's that OK? >>> An interrupt procedure needs it no matter the name it has, without it >>> there would be no jump to the ISR interrupt vector. >>> >>> This line looks strange to me here (but I'm not a master of programming): >>> const byte int_on_change_pins[] = {"B",4} >>> >>> BTW, you do not want to use a software delay in an ISR routine, an ISR >>> must be fast by definition because it consumes a period of time which is >>> lost in the main loop. Exceptions for hardware resources of which >>> programming time do not interfere too much with the main loop. Check if >>> your pic has registers to detect which edge is used on interrupt on change. >>> If yes you should program those too. >>> >>> I hope these would be helpful. In my opinion you should solve the >>> problem by yourself, is the only way you can understand. >>> >>> >>> On Sat, Sep 24, 2022 at 8:03 AM Matthew Schinkel <[email protected]> >>> wrote: >>> >>> Hi Hans, without me testing or knowing the DTMF module your using. I >>> think it looks ok. It should be easy to test. >>> >>> Just to make your code easier to read I would alias the pins and >>> directions to useful names. You read code 10 times more than you write it. >>> I don't know what pin_C3 is for, and pin_C3_direction isn't being set. >>> >>> Looks like your code will wait for an interrupt on pin_B4 then read the >>> lower 4 bits of portd >>> >>> If the original sample works for you, you can add a sample for 18F4520. >>> The library may need to be modified to support more chips. >>> >>> Matt. >>> >>> On Friday, September 23, 2022 at 12:44:59 PM UTC-4 hans wrote: >>> >>> The basic file: >>> >>> include 18f4520 -- target PICmicro >>> -- >>> -- This program uses the internal oscillator at 4 MHz. >>> pragma target clock 4_000_000 -- oscillator frequency >>> -- >>> pragma target OSC INTOSC_NOCLKOUT -- internal oscillator >>> pragma target WDT CONTROL -- watchdog >>> pragma target XINST DISABLED -- do not use extended >>> instructionset >>> pragma target DEBUG DISABLED -- no debugging >>> pragma target BROWNOUT DISABLED -- no brownout reset >>> pragma target FCMEN DISABLED -- no clock monitoring >>> pragma target IESO DISABLED -- no int/ext osc >>> switching >>> pragma target LVP DISABLED -- low voltage >>> programming >>> pragma target MCLR EXTERNAL -- external reset >>> -- >>> -- The configuration bit settings above are only a selection, sufficient >>> -- for this program. Other programs may need more or different settings. >>> -- >>> WDTCON_SWDTEN = OFF -- disable WDT >>> OSCCON_SCS = 0 -- select primary oscillator >>> OSCCON_IRCF = 0b110 -- 4 MHz >>> OSCTUNE_PLLEN = FALSE -- no PLL >>> -- >>> enable_digital_io() -- make all pins digital I/O >>> -- >>> >>> -- DTMF programma >>> pin_D0_direction = input >>> pin_D1_direction = input >>> pin_D2_direction = input >>> pin_D3_direction = input >>> pin_B4_direction = input -- for interrupt >>> >>> >>> var byte DTMF >>> >>> >>> -- choose pins to use for int on change >>> const byte int_on_change_pins[] = {"B",4} >>> include interrupt_on_change >>> int_on_change_init() >>> >>> -- interrupt for pin B4 >>> procedure int_on_change_callback_0() is >>> pragma inline >>> pin_C3 = low >>> delay_1mS(400) >>> DTMF = portD_low >>> pin_C3 = high >>> end procedure >>> >>> >>> Op vrijdag 23 september 2022 om 14:59:53 UTC+2 schreef hans: >>> >>> Hello, >>> I am trying to read a DTMF module with an interrupt on a 18F4520.pin B4. >>> I found something in the examples. Is thissufficient and correct? Direct >>> reading of portD_low is working correct. >>> >>> -- choose pins to use for int on change >>> const byte int_on_change_pins[] = {"B",4} >>> include interrupt_on_change >>> int_on_change_init() >>> >>> -- interrupt for pin B4 >>> procedure int_on_change_callback_0() is >>> pragma inline >>> delay_1mS(400) >>> DTMF = portD_low >>> end procedure >>> regards >>> Hans >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "jallib" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/jallib/df18aa34-b7fc-4d5d-bfe5-65e1a4b741d9n%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/jallib/df18aa34-b7fc-4d5d-bfe5-65e1a4b741d9n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "jallib" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/jallib/f9987acb-6a37-40e6-8f36-d32046365d44n%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/jallib/f9987acb-6a37-40e6-8f36-d32046365d44n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "jallib" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/jallib/45e0a656-9db6-45c6-b583-5ea2a7597bf6n%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/jallib/45e0a656-9db6-45c6-b583-5ea2a7597bf6n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "jallib" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> > To view this discussion on the web visit >> https://groups.google.com/d/msgid/jallib/722bfca5-af9b-4839-8857-f8484e827aabn%40googlegroups.com >> >> <https://groups.google.com/d/msgid/jallib/722bfca5-af9b-4839-8857-f8484e827aabn%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "jallib" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jallib/bd0cd083-5a54-44e0-a727-2ec4bbe79547n%40googlegroups.com.
18f4520_interrupt_test.jal
Description: Binary data
