|
|
View previous topic :: View next topic |
Author |
Message |
waqas_shafique
Joined: 06 Feb 2011 Posts: 8 Location: Pakistan
|
Measuring Pulse low time |
Posted: Sat Dec 03, 2011 4:01 am |
|
|
Hi
I'm using CCS C's example file to measure pulse width( high time). I want to change this example program to measure pulse low time. Can you please help me how can I do that ?
Attached is the example file which measure high time. Code: |
#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
long rise,fall,pulse_width;
#int_ccp2
void isr()
{
rise = CCP_1;
fall = CCP_2;
pulse_width = fall - rise; // CCP_1 is the time the pulse went high
} // CCP_2 is the time the pulse went low
// pulse_width/(clock/4) is the time
// In order for this to work the ISR
// overhead must be less than the
// low time. For this program the
// overhead is 45 instructions. The
// low time must then be at least
// 9 us.
void main()
{
printf("\n\rHigh time (sampled every second):\n\r");
setup_ccp1(CCP_CAPTURE_RE); // Configure CCP1 to capture rise
setup_ccp2(CCP_CAPTURE_FE); // Configure CCP2 to capture fall
setup_timer_1(T1_INTERNAL); // Start timer 1
enable_interrupts(INT_CCP2); // Setup interrupt on falling edge
enable_interrupts(GLOBAL);
while(TRUE) {
delay_ms(1000);
printf("\r%lu us ", pulse_width/5 );
}
} |
|
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19499
|
|
Posted: Sat Dec 03, 2011 5:56 am |
|
|
Just change these two lines:
Code: |
setup_ccp1(CCP_CAPTURE_RE); // Configure CCP1 to capture rise
setup_ccp2(CCP_CAPTURE_FE); // Configure CCP2 to capture fall
|
To these:
Code: |
setup_ccp1(CCP_CAPTURE_FE); // Configure CCP1 to capture rise
setup_ccp2(CCP_CAPTURE_RE); // Configure CCP2 to capture fall
|
These set which edges the code treats as the 'start', and 'stop' of the pulse. Swapping the edges as shown, means the 'rise' start point will now happen on the falling edge, and the 'stop' point on the rising edge.
Now if you wanted to be really 'elegant', and document this, then change all the mentions of 'rise' to 'start', and all mentions of 'fall' to 'stop', and change the comments on the lines to:
//Configure CCP1(start) to falling edge
//Configure CCP2(stop) to rising edge
Best Wishes |
|
|
waqas_shafique
Joined: 06 Feb 2011 Posts: 8 Location: Pakistan
|
|
Posted: Sat Dec 03, 2011 6:09 am |
|
|
Thanks a lot for your help , I already come to this point few mins ago and problem solved. |
|
|
|
|
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
|