TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: modelo75 en 15 de Abril de 2005, 08:12:00
-
Hola
quiero medir periodo de una señal utilizando la interrupcion "interrup on change" del pin GP3 de este PIC (utilizo este pin porque es el unico que tengo libre). Mi problema es que todavia no tengo este pic, por lo que estoy intentando simularlo con proteus 6.5, pero no se si tengo mal configurado algo, pero la simulacion es extremadamente lenta (esta bien que tiene que realizar calculos, pero nunca llega nada). Pregunte en el foro de simulacion pero no he obtenido respuesta, por eso molesto en este. Dejo el codigo a ver si alguien me puede decir si funciona, o como hacer para simularlo. Gracias Saludos
#include <12F675.h>
#fuses intrc_io,nomclr,wdt,noprotect,nocpd,nobrownout,put
#use delay(clock=4000000,RESTART_WDT)
#use rs232(baud=9600,parity=N,xmit=PIN_A1,rcv=PIN_A0,RESTART_WDT)
#byte STATUS=0x03
#byte WPU=0x95
#byte OSCCAL=0x90
long rise;
#int_EXT
EXT_isr()
{
rise=get_timer1();
set_timer1(0);
}
void main() {
restart_wdt();
set_tris_a(0b001101); //gp3 entrada
port_a_pullups(TRUE);
setup_comparator(NC_NC_NC_NC);
//Load Factory Calibration Value Into OSCCAL
#asm
call 0x3FF
bsf STATUS,5
movwf OSCCAL
#endasm
//-------------------------------------------
setup_timer_1(T1_INTERNAL);
set_timer1(0);
ext_int_edge(L_TO_H);
enable_interrupts(INT_EXT);
enable_interrupts(global);
while(TRUE)
{
delay_ms(500);
printf("Periodo=%lu us",rise);
restart_wdt();
}
}