Autor Tema: ¿por qué no interrumpe?  (Leído 4276 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: ¿por qué no interrumpe?
« Respuesta #15 en: 25 de Abril de 2008, 23:41:06 »
Jeje puede que sí Migsantiago... y de las preguntas difíciles vienen las investigaciones y soluciones más interesantes...  :-/
Es buena tu modestia... todos deberíamos mantener esa cualidad siempre.  :)
Eso es lo bueno de este foro, que todo el mundo se ayuda entre sí... a veces le toca el papel a uno de ayudar y muchas otras veces de ser el ayudado.
Saludos cordiales!
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: ¿por qué no interrumpe?
« Respuesta #16 en: 26 de Abril de 2008, 01:44:59 »
Hola, yo también me siento uno más de esta gran familia y me llena de satisfacción cuando a alguién le ha podido ser útil tu pequeño consejo.

Saludos cordiales.

Desconectado ro

  • PIC10
  • *
  • Mensajes: 13
Re: ¿por qué no interrumpe?
« Respuesta #17 en: 29 de Abril de 2008, 12:08:56 »
Hola de nuevo, una vez más me están volviendo loca las interrupciones, os cuento:
estoy intentando configurar la entrada IC2 (input capture) para que me cuente cuantos ciclos de relo está alta la señal que le meto por ese pin. Entonces hago (sólo el código importante):

void CONFIGcapture(void) {
  CloseCapture2();
  unsigned int configura = IC_DLE_STOP & IC_TIMER3_SRC & IC_INT_1CAPTURE & IC_EVERY_EDGE;
  //captura parada en modo idle, lectura del timer3, se interrumpe en la primera lectura y cada flanco de subida y de bajada
  OpenCapture2(configura);
 }

int void (main) {
  CONFIGcapture();
  while(1) {

  }
  return 1;
}


void __attribute__((__interrupt__)) _IC2Interrupt(void){
  IFS0bits.IC2IF = 0;
  putsUART1("interrupcion");
}



Sin embargo sólo me interrumpe una vez, lo sé por el mensaje de "interrupción" sólo me aparece una vez. ¿Tengo que hacer algo más en el caso de este tipo de interrupción además de limpiar el bit?

Muchas gracias




Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: ¿por qué no interrumpe?
« Respuesta #18 en: 29 de Abril de 2008, 20:46:22 »
Saludos!
No conozco el compilador que usas, el C30, yo uso el CCS... así que no sé a ciencia cierta qué hace al salir de la rutina de interrupción... Como hemos estado mencionado, CCS limpia automáticamente la bandera de interrupción... Pero si en C30 estás limpiando "manualmente" la bandera, no sé... prueba habilitar nuevamente la interrupción antes de salir de la rutina de servicio... a ver qué tal... aunque no creo que ese sea el problema, pero por si acaso...  :D
Exito en tu proyecto!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado ro

  • PIC10
  • *
  • Mensajes: 13
Re: ¿por qué no interrumpe?
« Respuesta #19 en: 30 de Abril de 2008, 04:28:06 »
hola estoy mandando el bit de enable de la interrupción directamente a un led y está encendido, asi que en ningún momento se me deshabilitan las interrupciones.

Otra cosa que me está sacando loca es que si pongo a los leds el registro IC2CON la primera vez (cuando escribe) se me ilumina el bit de "buffer no vacio" (perfecto) y cuando pasan otros 4 ciclos (donde supuestamente debería interrumpir) se ilumina el de overflow (que también está bien porque el tamaño del buffer es de cuatro, y al quinto desborda) pero... ¿como es posible que esté captando datos si no me está interrumpiendo?

Muchas gracias por la ayuda.