View previous topic :: View next topic |
Author |
Message |
Eduardo__
Joined: 23 Nov 2011 Posts: 197 Location: Brazil
|
RTC does not run when debugging? |
Posted: Mon Jun 25, 2012 11:41 am |
|
|
I'm using MPLAB with CCS C and ICD2 programmer/debugger.
My uC is the PIC18F26J11.
Despite of 32kHz clock is running (I checked with an oscilloscope), it seems that RTC does not run (does not count seconds, days...) when I stop the program.
Anyone knows whether is it possible to get RTC running even when debugging (even when it is stopped at a breakpoint)?
Thanks a lot for any idea =D _________________ Eduardo Guilherme Brandt |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Mon Jun 25, 2012 11:48 am |
|
|
Use Google to search the Microchip forum. Use their forum as a KnowledgeBase. Search for this:
Quote: | site:microchip.com/forums RTC OR RTCC debug OR debugger OR debugging |
Then you find threads like this:
http://www.microchip.com/forums/m442150-print.aspx
There might be other useful threads. |
|
|
Eduardo__
Joined: 23 Nov 2011 Posts: 197 Location: Brazil
|
|
Posted: Mon Jun 25, 2012 8:16 pm |
|
|
Thank you very much.
Just one thing more:
With U40 Programmer/Debugger, RTC runs and counts date/time when uC stopped in a breakpoint?
thanks. _________________ Eduardo Guilherme Brandt |
|
|
asmboy
Joined: 20 Nov 2007 Posts: 2128 Location: albany ny
|
|
Posted: Tue Jun 26, 2012 9:36 am |
|
|
Quote: |
it seems that RTC does not run (does not count seconds, days...) when I stop the program. |
as i believe Richard Feynman once famously said:
"you can't do just ONE thing at a time"
the debugger has the potential to interfere with any aspect of your program, but ESPECIALLY in the time domain.
i have never used debug break points and probably never will.
there are other ( and IMHO BETTER) methods to figure out programming problems than carrying the overhead and operating interference that insertion of debug code creates. If you don't understand where your program is going wrong , adding more uncertainty to it's execution does not seem like a benefit, at least to me.
leds that flash , pins that can be read toggling at a given rate on on
an oscope, and serial conditional printf() scaffolding ALL come quickly to mind.
|
|
|
Eduardo__
Joined: 23 Nov 2011 Posts: 197 Location: Brazil
|
|
Posted: Tue Jun 26, 2012 10:23 am |
|
|
Thank you Mr. Asmboy.
I think that you´re right. In this case, debugger seems to stop something in uC that could work even in a Sleep.
But I´ve already programmed without debugger. After I begun using debugger, I would like never have to come back again.
very thanks again. I appreciate CCS forum help _________________ Eduardo Guilherme Brandt |
|
|
bkamen
Joined: 07 Jan 2004 Posts: 1615 Location: Central Illinois, USA
|
|
Posted: Tue Jun 26, 2012 10:56 pm |
|
|
There is a setting in MPLAB under the ICD menus to "freeze" or "halt" peripherals while the debugger is running that you can turn off.
So things like timers and clocks keep spinning -- although their code may not.
Check it out.. _________________ Dazed and confused? I don't think so. Just "plain lost" will do. :D |
|
|
Eduardo__
Joined: 23 Nov 2011 Posts: 197 Location: Brazil
|
|
Posted: Wed Jun 27, 2012 7:07 am |
|
|
Very thanks Mr. bkamen. You solved the question.
Under MPLAB menu, I click in "Debugger", then click "Settings", tab "Freeze".
I´ve not tested it yet, but Thank you a lot! _________________ Eduardo Guilherme Brandt |
|
|
bkamen
Joined: 07 Jan 2004 Posts: 1615 Location: Central Illinois, USA
|
|
Posted: Wed Jun 27, 2012 11:34 pm |
|
|
Eduardo__ wrote: | Very thanks Mr. bkamen. You solved the question.
Under MPLAB menu, I click in "Debugger", then click "Settings", tab "Freeze".
I´ve not tested it yet, but Thank you a lot! |
That's why were here...
:D Don't forget to change the subject of your original post to include "[SOLVED]" so others can find it.
-Ben _________________ Dazed and confused? I don't think so. Just "plain lost" will do. :D |
|
|
Eduardo__
Joined: 23 Nov 2011 Posts: 197 Location: Brazil
|
|
Posted: Thu Jun 28, 2012 6:42 am |
|
|
Mr bkamen.
Just one more question: Do you´ve MPLAB?
I do not know why my MPLAB ICD2 does not leave me to change Peripheral Freezing (it not allows uncheck it). Do you know why? _________________ Eduardo Guilherme Brandt |
|
|
bkamen
Joined: 07 Jan 2004 Posts: 1615 Location: Central Illinois, USA
|
|
Posted: Thu Jun 28, 2012 8:26 pm |
|
|
Eduardo__ wrote: | Mr bkamen.
Just one more question: Do you´ve MPLAB?
I do not know why my MPLAB ICD2 does not leave me to change Peripheral Freezing (it not allows uncheck it). Do you know why? |
yes, I use MPLAB exclusively.
As for your question, I would have to go check. It may not work with some devices or some other MPLAB feature...
I can't get to it right now -- another project is clogging up my bench.
-Ben _________________ Dazed and confused? I don't think so. Just "plain lost" will do. :D |
|
|
Eduardo__
Joined: 23 Nov 2011 Posts: 197 Location: Brazil
|
|
Posted: Fri Jun 29, 2012 7:30 am |
|
|
thanks Mr Bkamen for helping.
You can answer when you could, no problem.
I actually use PIC18F24J11. _________________ Eduardo Guilherme Brandt |
|
|
hemasc_
Joined: 01 Aug 2012 Posts: 15 Location: Brazil
|
|
Posted: Wed Aug 01, 2012 8:28 am |
|
|
Edward (rs), I want to use 18F87k90 RTC.
I would like to configure hour and date.
Can you send me some example?
Last edited by hemasc_ on Wed Aug 01, 2012 9:35 am; edited 1 time in total |
|
|
Eduardo__
Joined: 23 Nov 2011 Posts: 197 Location: Brazil
|
|
Posted: Wed Aug 01, 2012 9:01 am |
|
|
Dear hemasc_, you need to write in same forum language(english). Sorry, but these´re rules.
Yes, it´s very very simple with CCS.
There is a default time/date structure(see. 18F87k90 header file(18F87k90.h)).
Code: | typedef struct {
int8 tm_year;
int8 tm_yday; // Not used by built in functions
int8 tm_mday;
int8 tm_mon;
int8 tm_hour;
int8 tm_wday;
int8 tm_sec;
int8 tm_min;
int8 tm_isdst; // Not used by built in functions
} rtc_time_t;
|
But there are commands for reading from and writing into PIC´s rtc peripherals, like Code: | rtc_write(), rtc_alarm_read(), rtc_alarm_write() |
Do not forget to put a 32kHz external Crystal and enable PIC´s rtc.
You can enable RTC interrupt if you want to. It can be useful for alarm events:
Code: |
#fuses HS,RTCOSC_T1,HSPLL
/***********************************/
void init() {
setup_rtc(RTC_ENABLE,0); //enables internal RTCC
//enable_interrupts(INT_RTC); //enable RTC interrupts
enable_interrupts(GLOBAL); //enable interrupts
}
/***********************************/
//inside main programm
void main() {
rtc_time_t Clock; //date/time structured variable
init();
Clock.tm_Hour=10;
Clock.tm_min=30;
Clock.tm_sec=0;
rtc_write(&Clock),
while(true) {
rtc_read(&Clock);
fprintf(" %02u:%02u:%02u \r\n",
Clock.tm_hour, Clock.tm_min, Clock.tm_sec );
//Connect to windows hyperterminal´s
//Donp´t forget to enable and set PIC RS232 serial configuration before
}
}
|
There is an Example file that comes with CCS documentation.
Good luck _________________ Eduardo Guilherme Brandt |
|
|
hemasc_
Joined: 01 Aug 2012 Posts: 15 Location: Brazil
|
|
Posted: Wed Aug 01, 2012 9:52 am |
|
|
I used the CCS example and I can write and read, but after some seconds, I read again and value of second doesn't modify.
I used RTCOSC_T1 fuse
I have a crystal of 32kHz in hardware.
I think the clock is not enabled. |
|
|
Eduardo__
Joined: 23 Nov 2011 Posts: 197 Location: Brazil
|
|
Posted: Wed Aug 01, 2012 10:20 am |
|
|
Check whether clock is running(with an oscilloscope).
Check whether RTC fuse is in(check before writing it to uC, in programmer view fuses). _________________ Eduardo Guilherme Brandt |
|
|
|