Hi Filipe, That timer library is using interrupts but if the code in your forever loop has a delay you will not benefit from it.
So what should be done is that the action you want to execute when the timer has an interrupt should be part of that timer0 interrupt routine and not in your forever loop. Some libraries - but not this one - have an option to call a user defined procedure when it is defined. A quick - and dirty - fix is to make a local copy of this timer library and add your specific code to the procedure ISR() in timer0_isr_interval. Note that when you do that, your code must be fast since interrupt routine should be a short as possible. An option would be to extend this library and call a user defined procedure from the timer interrupt if it was defined by the user. Kind regards, Rob ________________________________ Van: [email protected] <[email protected]> namens flyway38 <[email protected]> Verzonden: donderdag 12 januari 2023 12:02 Aan: jallib <[email protected]> Onderwerp: Re: [jallib] PIC16F19176 rtc help Hello Rob, Yes, am using this code: -- This program uses the internal oscillator at 32 MHz. pragma target clock 32_000_000 -- oscillator frequency pragma target OSC OFF -- internal oscillator pragma target RSTOSC HFINT32 -- select 32 MHz pragma target CLKOUTEN DISABLED -- no clock output pragma target WDT DISABLED -- watchdog pragma target BROWNOUT DISABLED -- no brownout reset pragma target FCMEN DISABLED -- no clock monitoring pragma target CSWEN ENABLED -- allow writing OSCCON1 NOSC and NDIV pragma target LVP ENABLED -- low voltage programming pragma target MCLR INTERNAL -- internal reset -- OSCFRQ_HFFRQ = 0b110 -- Fosc 32 -> 32 MHz --OSCCON2 = 0x00 -- 32 MHz and no division -- -- Enable weak pull up for all inputs. --WPUA = 0b1111_1111 WPUB = 0b1111_1111 WPUC = 0b1111_1111 WPUD = 0b1111_1111 WPUE = 0b0000_1111 ... -- Timer0_isr_interval Lib const DELAY_SLOTS = 1 -- support 2 delays at the same time const word TIMER0_ISR_RATE = 1000 -- 1 kHz isr rate include timer0_isr_interval timer0_isr_init() -- init timer0 isr -- set_delay(0, 2_000) -- Init timer0 pointer var word wTimeSync = 0 -- Init Time Sync clock And inside FOREVER LOOP: -- Checking TIMER0 - Time Sync if (check_delay(0)) then wTimeSync = wTimeSync + 1 -- -- ticks (of 2s) on delay-slot 0 set_delay(0, 2_000) -- if (!LedAM & wTimeSync%10 == 0) then Krnl_CheckModem() end if end if Problem is this code don't use interrupts. So my var "wTimerSync" don't get updated when PIC is doing longer time consuming tasks... Can you help? Thank you. Cheers, FS On Thursday, January 12, 2023 at 9:59:11 AM UTC [email protected] wrote: Hi Filipe, In that case you could use a timer. Did you have a look at a timer library? Met vriendelijke groet, Rob Jansen ________________________________ From: [email protected] <[email protected]> on behalf of flyway38 <[email protected]> Sent: Thursday, January 12, 2023 10:16:41 AM To: jallib <[email protected]> Subject: Re: [jallib] PIC16F19176 rtc help Hi Rob and Vasile, Thank you for your input. My code is very big (and confuse) by now. Anyways, only need an effective RTC to increment a variable, no matter what PIC is doing... Problem is I have no experience using interrupts (software ones) with PICs. Good point about that second oscillator. Remember now, my eyes crossing that info in the datasheet... But, I think that will not need that. I don't need a precise RTC. My code will use a time base of 10seconds. Problem is when PIC is doing some actions like reading SMSs, deleting SMSs, resetting modem, etc.... those actions take almost a minute, so I need interrupts to keep track of elapsed time. Thank you very much. Cheers, FS On Thursday, January 12, 2023 at 5:09:14 AM UTC vasile wrote: Yep. If a secondary oscillator available, definitely yes for the RTC, except maybe for running at -20C where a good TCXO is expensive, using only one could be an option. Apples with pears are still fruits, not very bad comparison. :) On Wed, Jan 11, 2023 at 7:46 PM Rob CJ <[email protected]> wrote: Hi Filipe, It helps if you send your program otherwise we are comparing apples with pears. There is another possibility. Your PIC has a secondary oscillator, meant for connecting a 32 kHz crystal. If you use that, you can make your own RTC and the only thing you need is a 32 kHz crystal and a small piece of software. Kind regards, Rob ________________________________ Van: [email protected] <[email protected]> namens flyway38 <[email protected]> Verzonden: woensdag 11 januari 2023 14:53 Aan: jallib <[email protected]> Onderwerp: Re: [jallib] PIC16F19176 rtc help Hello Vasile, I think that have already tried that sample, but as said before, think i fall into some LIB errors... Will check again, but maybe get stuck while adapting it to my PIC... Will back here with results. Thank you very much. Cheers, FS On Wednesday, January 11, 2023 at 3:50:33 AM UTC vasile wrote: Hi Fellipe, You will not like my ideea but any rtc can be implemented in any pic, much better than using an external RTC, by using Bresenham zero error algorithm. It's in the sample and works perfect with all timers. It's set to seconds but works down to 1ms for fast pics. You have just to set a flag in the isr when time passed and reset it in the main after you have read it. The only thing to care is the total lenght of your isr, including your own application which must be shorter than time genetated (aka 1 second or shorter). On Tue 10 Jan 2023, 9:25 PM flyway38 <[email protected] wrote: Hi Rob, It seems something not working... Not sure why, but using your sample (part of it, check below what have integrated in my code from your sample), it doesn't even reach the FOREVER LOOP... Maybe because am using serial_hw_int_cts instead of serial_hardware, or even because am using timer0_isr_interval... don't know... Here's what am using from your sample: -- Settings for the RTC and intialization. alias rtc_sck is pin_C0 -- Pin 10 for 14 pin DIP alias rtc_sck_direction is pin_C0_direction alias rtc_sdo is pin_C1 -- Pin 9 for 14 pin DIP. alias rtc_sdo_direction is pin_C1_direction -- If you want to use software IIC, define the following constant. -- const RTC_SOFTWARE_IIC = TRUE include rtc_ds3231 -- Setting to check the alarm on a poll basis or interrupt bases. When -- defined the alarms are checked using the external interrupt of the PIC. -- Using the interrupt has its limitations for this rtc as explained in the -- sample interrupt routine below. -- const ALARM_ON_INTERRUPT = TRUE -- Print the current time of the rtc. procedure print_time() is var byte hours, minutes, seconds rtc_get_time_bin(hours, minutes, seconds) print_string(serial_hw_data, "H:") print_byte_dec(serial_hw_data, hours) print_string(serial_hw_data, " M:") print_byte_dec(serial_hw_data, minutes) print_string(serial_hw_data, " S:") print_byte_dec(serial_hw_data, seconds) print_crlf(serial_hw_data) end procedure -- Example of handling the alarm on an interrupt basis. Note that we cannot -- call any of the RTC procedures because it will interfere with the IIC -- transmission. We can only set a flag that can be checked later. Note that -- the interrupt is edge triggered. The rtc interrupt stays low as long as -- the alarm flag of the RTC is set. if defined(ALARM_ON_INTERRUPT) then procedure alarm_interrupt is pragma interrupt if INTCON_INTF then INTCON_INTF = FALSE alarm_was_given = TRUE end if end procedure end if rtc_init() -- Enable interrupts if setting is defined. if defined(ALARM_ON_INTERRUPT) then INTCON_INTE = TRUE -- Interrupt on falling edge. OPTION_REG_INTEDG = FALSE INTCON_GIE = TRUE rtc_enable_alarm_1_interrupt() rtc_enable_alarm_2_interrupt() end if Don't need to use any Alarms... But need to use Timer Interval to do some checks regularly. Anyways, have put just before FOREVER LOOP: -- Set some intial time hh:mm:ss in binary format and print it. rtc_set_time_bin(18, 51, 30) print_time() This code doesn't run... Any ideas? Thank you very much. FS On Tuesday, January 10, 2023 at 6:45:27 PM UTC flyway38 wrote: Hi Rob, Wow. Thank you very much for the fast reply. Will check and back here with results. Cheers, FS On Tuesday, January 10, 2023 at 6:35:45 PM UTC [email protected] wrote: Hi Filipe, I took the sample program 16f1825_rtc_ds3231.jal and changed it for the 16f19176. No compiler issues. See attachment. Kind regards, Rob ________________________________ Van: [email protected] <[email protected]> namens flyway38 <[email protected]> Verzonden: dinsdag 10 januari 2023 19:04 Aan: jallib <[email protected]> Onderwerp: [jallib] PIC16F19176 rtc help Hello all, Need help on coding for an rtc for the 16F19176. Have tried many samples with no luck. They get alot of failures, like not defined terms... Need to implement a simple RTC code to keep track of time even if PIC is handling "closed loop" routines, like reading Comm Port or resetting the gsm modem, etc... Need these routines to get interrupted, and finished after RTC updates time. It would be a very fast code, only to increment a variable. Need some sample code adapted for this PIC, please. Thank you Kind regards, Filipe Santos -- 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/4b03768d-331b-4a4c-aa10-afbf73fc952cn%40googlegroups.com<https://groups.google.com/d/msgid/jallib/4b03768d-331b-4a4c-aa10-afbf73fc952cn%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/792ae118-9ffe-496b-b214-9ef697d45133n%40googlegroups.com<https://groups.google.com/d/msgid/jallib/792ae118-9ffe-496b-b214-9ef697d45133n%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/2cd70652-2a40-4954-bfef-1b9ec4730363n%40googlegroups.com<https://groups.google.com/d/msgid/jallib/2cd70652-2a40-4954-bfef-1b9ec4730363n%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/GVXP195MB16377FF3705503B6715619CFE6FC9%40GVXP195MB1637.EURP195.PROD.OUTLOOK.COM<https://groups.google.com/d/msgid/jallib/GVXP195MB16377FF3705503B6715619CFE6FC9%40GVXP195MB1637.EURP195.PROD.OUTLOOK.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/6c46fd5a-b3a9-496f-8d8e-c4359afdf30en%40googlegroups.com<https://groups.google.com/d/msgid/jallib/6c46fd5a-b3a9-496f-8d8e-c4359afdf30en%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]<mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/jallib/2eac187a-5f82-426a-a2ea-db33470f1236n%40googlegroups.com<https://groups.google.com/d/msgid/jallib/2eac187a-5f82-426a-a2ea-db33470f1236n%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/GVXP195MB163789829EB0BCBE2847215BE6FD9%40GVXP195MB1637.EURP195.PROD.OUTLOOK.COM.
