Hola amigos estoy usando un PIC18f4580 para hacer un "watimetro" el watimetro realmente es un mcp3905, este me da una salida en frecuencia mi problema es el siguiente:
tengo hecho un programa que convierte frecuencia a valor con una interrupcion externa por rb0 y un timer, luego tb necesitoque envie y reciba datos por el rs 232 pero cuando junto todo m i programa que lleva mas cosas no me entra en la interrupción externa, llevo unos dias dandole vueltas podeis mirarlo estoy desesperado:S:S
#include <18F4580.h>
#device adc=10
#FUSES NOWDT,NOPROTECT,NOLVP,HS //No Watch Dog Timer
#FUSES
#use delay(clock=20000000)
#use rs232(baud=19200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#use i2c(Master,Fast,sda=PIN_C4,scl=PIN_C3)
#include <ctype.h>
#include <string.h>
#include <lcd.c>
#int_EXT
void EXT_isr()
{
printf("jajaaj");
switch (flancos)
{
case 0: //Primer flanco de subida
set_timer1(0);
desbordes=0;
flancos =1;
printf("jajaaj");
break;
case 1: //Segundo Flanco de subida
TIMER1=get_timer1();
//medir_frecuencia();
flancos=2;
printf("ejej");
break;
}
}
//----------------Interrupcion puerto serie --------------------------------
#int_RDA
void serial_isr()
{
rcvchar=0x00;
if (kbhit())
{
cbuff[xbuff++]=getc();
if (xbuff>longitud)
xbuff=longitud;
}
}
#INT_TIMER1
void desborda_T1()
{
desbordes++;
}
//##############################################################################
//## ##
//## Programa ##
//## ##
//##############################################################################
void main()
{
setup_adc_ports(ALL_ANALOG );
setup_adc(ADC_CLOCK_INTERNAL);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);
setup_timer_2(T2_DIV_BY_1,0,1);
enable_interrupts(INT_RDA);
ext_int_edge(0,H_TO_L); //Interrupcion 0 por flanco de subida
enable_interrupts(INT_TIMER1);
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
while (true)
{\\mi código}
}