TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: zeus2 en 08 de Julio de 2005, 16:57:00

Título: Problema Novato Interrupciones RB4-7
Publicado por: zeus2 en 08 de Julio de 2005, 16:57:00
Hola,

Soy un novato en esto de los PIC y he encontrado mi primer problema al tratar de probar las interrupciones del 16F84A (en concreto la que salta al cambiar RB4-7). El código es:

#include <16F84A.h>
#fuses NOWDT,XT, NOPUT, NOPROTECT
#use delay( clock = 4000000 ) /* reloj de 4 MHz */
#byte puerto_b = 06

#int_rb
rsi_puerto_b()
{
   delay_us(500000);
   bit_set(puerto_b, 0);
   delay_us(500000);
   bit_clear(puerto_b, 0);
}

void main(void)
{
   set_tris_b(0xF0);
   enable_interrupts(INT_RB);
   enable_interrupts(GLOBAL);
   puerto_b = 0;
   for (;;);
}

Y el problema es que la interrupción me salta continuamente (tengo un pulsador conectado a RB5, pero no hay problemas de rebote ya que si dejo en CA RB4-7 sigue igual). Me gustaría que alguien me ayudara y así poder seguir aprendiendo.

Un saludo desde Canarias.
Título: RE: Problema Novato Interrupciones RB4-7
Publicado por: piriots en 08 de Julio de 2005, 17:59:00
Creo que lo que te pasa es que como la interrupcion es por cambio de estado en cualquiera de las patillas, te salta la interupcion cuando pulsas el pulsador y cuando lo sueltas vuelve a entrar a la interrupcion. Prueba a usar esta mascara.

delay_ms(70);   //  esperamos para evitar rebotes
  if(!(port_b^0xF0)) // si se produce al soltar el pulsador
  return;         // salimos de la interrupcion.

Salu2