Hi Vasile, have changed my test program in the same environment ( working with Bo). Pulse now to B4. but now i see both led continues on. So also the puls is not working. attached the altered test version. regArds Hans
Op zondag 25 september 2022 om 20:34:53 UTC+2 schreef vasile: > Well, from 102-103 it seems it should work on RB4... try the following > pseudocode. > Pin B4 must be set as input and toggled by your hardware. > > RCON_IPEN = low ; low priority interrupt, > INTCON_GIE = high ; enable global interrupts > INTCON_PEIE_GIEL = high ; enable pheripheral interrupts > INTCON_RBIE = high ; enable interrupts on change on port B4-B7 > var byte MY_data = 0 > > procedure IOC() is > pragma interrupt > if INTCON_RBIF then > MY_data = port_B > -- from datasheet page 87: a mismatch condition will continue to set this > bit. Reading PORTB will end the mismatch condition and allow the bit to be > cleared > MY_bit = pin_B4 > INTCON_RBIF = low > end if > end procedure > > forever loop > LED = MY_bit > end loop > > > > > > On Sun, Sep 25, 2022 at 7:59 PM hans <[email protected]> wrote: > >> Hi Vasile, >> I've tried to understand page 103, but I shouldn't have. Anyway, an >> adjustment to my PCB and we happily continue. (to bed on time tonight) >> Thanks for all your responses >> Hans >> >> Op zondag 25 september 2022 om 10:43:11 UTC+2 schreef vasile: >> >>> I guess nothing can be done. This pic (if I don't miss anything) has >>> three interrupts on B0, B1 and B2. I don't see any PPS module. BTW I >>> thought seniors are starting at 3am and sleep at midnight... >>> >>> On Sun 25 Sep 2022, 10:27 AM hans <[email protected] wrote: >>> >>>> 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 >>>> >>>> <https://groups.google.com/d/msgid/jallib/bd0cd083-5a54-44e0-a727-2ec4bbe79547n%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/1a80e651-8371-4c87-ac4c-6a86681d99cdn%40googlegroups.com >> >> <https://groups.google.com/d/msgid/jallib/1a80e651-8371-4c87-ac4c-6a86681d99cdn%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/311bc5a5-4210-4734-9134-5911b62a29bfn%40googlegroups.com.
18f4520_interrupt_test_V.jal
Description: Binary data
