CCP_CAPTURE
#include <18F2550.h>
#FUSES NOWDT, INTRC_IO, NOPUT, NOMCLR
#use delay(clock=4M)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,errors)
int16 pulse_start, pulse_end;
float freq,freq_period;
#int_CCP1
void CCP1_isr(void)
{
pulse_end=ccp_1+pulse_start;
pulse_;
set_timer1(0);
}
void main()
{
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
setup_ccp1(CCP_CAPTURE_RE);
enable_interrupts(INT_CCP1);
enable_interrupts(GLOBAL);
while (1)
{
freq_period=((float) pulse_end-(float)pulse_start)/1000;
freq=1000/freq_period;
printf("period = %f_mSec\n\r",freq_period);
printf("frequency = %f_Hz\n\r",freq);
}
}
Το παραπάνω μετράει την συχνότητα του σήματος που θα βάλουμε στο πιν CCP1 και βγάζει τα αποτελέσματα από το πιν RC6/TX ασύγχρονα σειριακά.
Στο capture mode όταν τριγκάρουμε το κατάλληλο ccpx pin τότε γράφει στους καταχωρητές του την τιμή του timer1 (σαν default) ή του timer3, το triger μπορεί να γίνει με αρνητικό ή θετικό μέτωπο παλμού ή ακόμη με 4 ή 16 rising edge
• every falling edge
• every rising edge
• every 4th rising edge
• every 16th rising edge
#FUSES NOWDT, INTRC_IO, NOPUT, NOMCLR
#use delay(clock=4M)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,errors)
int16 pulse_start, pulse_end;
float freq,freq_period;
#int_CCP1
void CCP1_isr(void)
{
pulse_end=ccp_1+pulse_start;
pulse_;
set_timer1(0);
}
void main()
{
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
setup_ccp1(CCP_CAPTURE_RE);
enable_interrupts(INT_CCP1);
enable_interrupts(GLOBAL);
while (1)
{
freq_period=((float) pulse_end-(float)pulse_start)/1000;
freq=1000/freq_period;
printf("period = %f_mSec\n\r",freq_period);
printf("frequency = %f_Hz\n\r",freq);
}
}
Το παραπάνω μετράει την συχνότητα του σήματος που θα βάλουμε στο πιν CCP1 και βγάζει τα αποτελέσματα από το πιν RC6/TX ασύγχρονα σειριακά.
Στο capture mode όταν τριγκάρουμε το κατάλληλο ccpx pin τότε γράφει στους καταχωρητές του την τιμή του timer1 (σαν default) ή του timer3, το triger μπορεί να γίνει με αρνητικό ή θετικό μέτωπο παλμού ή ακόμη με 4 ή 16 rising edge
• every falling edge
• every rising edge
• every 4th rising edge
• every 16th rising edge