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.

Attachment: 18f4520_interrupt_test.jal
Description: Binary data

Reply via email to