Consigo gerar o PWM no CCP1 mas nem entrar na rotina de interrupção do CCP2 entra (coloquei um led pra sinalizar isso). Estou usando o CCS V4.093 e Proteus 7.5 SP3. Se alguém puder ajudar a resolver, agradeço.
http://rapidshare.com/files/291291580/Capture.DSN.html
ou
http://www.easy-share.com/1908083569/Capture.DSN
- Código: Selecionar todos
#include "16F876A.h"
#fuses HS, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock = 4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
int16 fall,freq;
#int_ext
void ext_isr()
{
freq=get_timer1();
set_timer1(0);
}
#int_ccp2
void isr()
{
output_high(PIN_B1);
fall=CCP_2;
}
main()
{
setup_ccp1(CCP_PWM); // Configura CCP1 as a PWM
setup_timer_2(T2_DIV_BY_16,200,1);
set_pwm2_duty(900);
ext_int_edge(L_TO_H);
enable_interrupts(INT_EXT);
setup_ccp2(CCP_CAPTURE_FE); //captura na borda da descida
setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);
clear_interrupt(INT_CCP2);
enable_interrupts(INT_CCP2);
enable_interrupts(GLOBAL);
while(1)
{
delay_ms(500);
disable_interrupts(INT_EXT);
printf("\n\r%lu us, freq=%lu Hz",fall,125000/freq*8); //1Mhz/ext = freq
enable_interrupts(INT_EXT);
}
}