CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

timer in c

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
mourad



Joined: 02 Apr 2014
Posts: 7

View user's profile Send private message

timer in c
PostPosted: Mon May 05, 2014 10:29 am     Reply with quote

Hello,

I am just wondering if there are any timers in c standard library.

I just need a simple timer that will start and stop.
example. Enter the function and start the timer. After a certain condition
stop the timer.

Many thanks,
Ttelmah



Joined: 11 Mar 2010
Posts: 19539

View user's profile Send private message

PostPosted: Mon May 05, 2014 11:11 am     Reply with quote

The PIC (depending on the one involved), has hardware 'timers'. These are just counters, which increment from a source (either an external clock or a division from the master clock), that can be 'read' or set at will. So you clear one, and then at any time can read it, and know how many counts have passed from when it was cleared.
You can trigger an event at a particular count, with the 'CTC' module.

Then there is the #USE TIMER ability.
This uses one of the hardware timers, to give a system 'tick', which can be used for simple reading, or to schedule events.

Then some PIC's have an RTC module, giving times in a 'clock' form, rather than just a count.
mourad



Joined: 02 Apr 2014
Posts: 7

View user's profile Send private message

PostPosted: Mon May 05, 2014 11:19 am     Reply with quote

i'm actually using a pic18f4520 and my objective is to start a function when the timer starts and i just can't figure a code to solve the problem Sad
Ttelmah



Joined: 11 Mar 2010
Posts: 19539

View user's profile Send private message

PostPosted: Mon May 05, 2014 11:28 am     Reply with quote

The timer starts when you start it....
I suspect you mean when it times out?. If so then it'd depend on the sort of timescale involved. For short timescales, the CTC. This can interrupt when a particular count is reached. For longer timescales, then just generate a 'tick' interrupt, and have it set a flag when the required number of counts has passed. Call your routine when the flag is set.
asmboy



Joined: 20 Nov 2007
Posts: 2128
Location: albany ny

View user's profile Send private message AIM Address

PostPosted: Mon May 05, 2014 12:36 pm     Reply with quote

can you post the code that you have written so far?
temtronic



Joined: 01 Jul 2010
Posts: 9243
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Mon May 05, 2014 1:36 pm     Reply with quote

there is an example of a 'stopwatch' in the examples folder that CCS supplies, that might be useful ?
I think it's called ex_swtc.ex or something close......

hth
jay
Ttelmah



Joined: 11 Mar 2010
Posts: 19539

View user's profile Send private message

PostPosted: Mon May 05, 2014 1:49 pm     Reply with quote

Also, the #USE TIMER manual entry, shows how to use this to toggle a pin at 1 second intervals.
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Mon May 05, 2014 3:59 pm     Reply with quote

Quote:

Enter the function and start the timer. After a certain condition
stop the timer.

Do you want to measure the time required to complete a function, or
do you want to do a timeout for it ?

Instead of asking in general terms, tell us specifically what you want.
Explain the whole problem, such as "The getc() function blocks. My
program can't accept this. How can I do a timeout for getc() ?".
There will likely be example code in the forum archives that we can
point you to, or we accurately suggest a solution.
mourad



Joined: 02 Apr 2014
Posts: 7

View user's profile Send private message

PostPosted: Tue May 06, 2014 3:01 pm     Reply with quote

my project is to create a RJ45 cable tester ( straight through or cross over)
and i'm using 2 microchips ( master-slave)
the thing is i'm testing pair per pair of wires.
the concept that i thought of is simple :
lets say we're testing the 1st pair
pinD0 of the master micro sends '1', if pinD0 from the slave micro receives '1' it sends a '1' from pinD1 (slave) to pinD1(master).

i'm a beginner in programming microchips and that's the timer i thought of:
the Master micro:
Code:

int1 TestSTPair(int8 p)             // Test traight-through pair p
{
   int address;
   address = p<<1;

   bit_set(PORTD,address);          // test High
   for(int i=0;i<100;i++)
   {
   if (!bit_test(PORTD,address+1))
      return 0;
   delay_ms(1);
   }

   bit_clear(PORTD,address);        // test Low
   for(int j=0;j<100;j++)
   {
   if (bit_test(PORTD,address+1))
      return 0;
   delay_ms(1);
   }
   return 1;
}

the Slave micro:
Code:

void main()             
{
int address=0;
while(address<7)
{
if(bit_test(PORTD,address))
   bit_set(PORTD,address+1);
if(!bit_test(PORTD,address))
   bit_clear(PORTD,address+1);
address++;
}
}
Mike Walne



Joined: 19 Feb 2004
Posts: 1785
Location: Boston Spa UK

View user's profile Send private message

PostPosted: Tue May 06, 2014 4:40 pm     Reply with quote

I'm no wiser as to how your 'simple' method will work.

This is at least your third go at an RJ45 cable tester.

PCM programmer pointed you towards a solution previously.

Why use two chips, which will then have to talk to each other?

What is wrong with the KISS principle using one chip only?

Mike
mourad



Joined: 02 Apr 2014
Posts: 7

View user's profile Send private message

PostPosted: Wed May 07, 2014 12:13 pm     Reply with quote

if the cable was long and already installed and can not be removed from it place, we can use 2 devices to test the cable if it's working or not.
we put one in an edge and the other in the other edge.
Ttelmah



Joined: 11 Mar 2010
Posts: 19539

View user's profile Send private message

PostPosted: Wed May 07, 2014 12:38 pm     Reply with quote

That is why most testers have a loopback connector you put at the other end.
mourad



Joined: 02 Apr 2014
Posts: 7

View user's profile Send private message

PostPosted: Wed May 07, 2014 12:57 pm     Reply with quote

you've just make my work easier :D
thx man :P
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group