hola, estoy usando el pic12f683 y ccs 3.222, el siguiente programa funciona bien
#include <12F683.h>
#device adc=8
#use delay(clock=4000000, restart_wdt)
#fuses WDT,INTRC_IO, NOCPD, NOPROTECT, NOMCLR, NOPUT, NOBROWNOUT, NOIESO, NOFCMEN
#use rs232(baud=9600,parity=N,xmit=PIN_A0,rcv=PIN_A1,bits=8,restart_wdt,errors)//DISABLE_INTS
#ROM 0x7FF={0x3400}
#priority CCP1
long rise;
//--------------------------------
#int_CCP1
CCP1_isr()
{
putc("X");
}
/*si hay señal en el pin,, imprime una "X", sino imprime PER=0 cada 2 seg.*/
//---------------------------------
void Init (void);
void main()
{
restart_wdt();
printf("start
"

;
Init ();
while (1)
{
restart_wdt();
printf("PER: =%lu
", rise);
delay_ms(2000);
rise=0;
}
}
//-----------------------------------------------
void Init (void)
{
restart_wdt();
set_tris_a(0b001110);
#ASM
movlw 0x8f// OSCCON
movwf 0x04
movlw 0b1100101// 4M, intternal clock, stable
movwf 0x00
movlw 0x90// OSCTUNE – OSCILLATOR TUNING
movwf 0x04
movlw 0b00000 //
movwf 0x00
movlw 0x81 // OPTION REG
movwf 0x04
movlw 0b11001000 // pull up dis,prescaler a wdt
movwf 0x00
movlw 0x10 //T1CON
movwf 0x04
movlw 0b00001001
movwf 0x00
#ENDASM
set_timer1(0);
rise=0;
setup_adc_ports(0);
setup_adc(ADC_OFF);
setup_timer_2(T2_DISABLED,0,1);
setup_ccp1(CCP_CAPTURE_RE);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
enable_interrupts(INT_CCP1);
enable_interrupts(GLOBAL);
}
Ahora si en la fc que maneja la interrupcion cambio
#int_CCP1
CCP1_isr()
{
rise = get_timer1();
set_timer1(0);
}
Cuando se produce la interrupcion obtengo caracteres raros, como si cambiase la velocidad del clock. Como estoy usando el osc interno, creeria que al usar el timer1 se produce algun error. Puede ser por ahi el tema o alguien ve otra causa??