TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: lucasnvf en 23 de Enero de 2009, 10:32:15

Título: Interrupciones pic16f877
Publicado por: lucasnvf en 23 de Enero de 2009, 10:32:15
Hola, estoy haciendo un programa donde uso 2 interrupciones:
int_RB
int_timer0
Luego de habilitar las interrupciones y demas cosas(en el main), y sin q cambie ningun de los puertos RB4 - RB7 , me salta a la rutina de int_RB. Alguien me pude decir q estoy haciendo mal
Aca dejo el main y la rutina de int_RB

#INT_RB
void cruce(void)
{   
int aux=0;
#asm
   movwf   savew
   swapf   STATUS,0
   movwf   savestatus
   clrwdt         
   bcf      INTCON,0      
#endasm

aux = envio;
aux = aux & 2;
if (aux == 0)
   enviar();

#asm
   swapf   savestatus,0
   movwf   STATUS
   swapf   savew,1
   swapf   savew,0
#endasm
}

void main(void)

set_tris_a(0x00); 
set_tris_b(0x80); 
set_tris_c(0x00);
set_tris_d(0x00);
output_low(pin_D0);
output_low(pin_D1);
output_low(pin_D2);

output_a(0x00);
output_b(0x00);
output_c(0x00);
output_d(0x00);

enable_interrupts(GLOBAL);               // Habilito Interrupciones
enable_interrupts(INT_RB);
enable_interrupts(INT_RTCC);             // Habilito Interrupción RTCC
setup_counters(RTCC_INTERNAL,RTCC_DIV_256);// TIMER0: Clock Interno, Presescaler 256.
set_timer0(252);   //T = (256 - precarga) * Preescaler * 4 / Fosc --->>> precarga=252

setup_adc_ports(NO_ANALOGS);
setup_adc_ports(RA0_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);             // Reloj interno para el ADC
set_adc_channel(0);   //Canal 0.
Título: Re: Interrupciones pic16f877
Publicado por: pibe en 23 de Enero de 2009, 14:30:41
Le has puesto una resistencia de 10k  A POSITIVO al Rb0? porque si la tienes al aire puede dispararse sola.
También examina la hoja de datos, si activas INT cuando cae Rb0 o cuando sube Rb0. Es que no entiendo C.
Título: Re: Interrupciones pic16f877
Publicado por: lucasnvf en 23 de Enero de 2009, 18:02:20
No hay problema con RB0 porque no uso esa interrupcion. Estoy usando int_RB que tiene en cuenta lo que pasa en las patas RB4 a RB7
Título: Re: Interrupciones pic16f877
Publicado por: Chenao en 27 de Enero de 2009, 14:01:45
Saludos

Donde termina el programa.
Título: Re: Interrupciones pic16f877
Publicado por: lucasnvf en 28 de Enero de 2009, 10:56:21
Ya lo solucione, era porq las funciones en C me modificaban el trisb, entonces hay q corregirlo manualmente luego q cambia. Muchas gracias por la disposicion.
Cualquier cosulta no duden en mandarme