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.