Autor Tema: Flanco de la interrupcion  (Leído 4057 veces)

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

Desconectado zer0007

  • PIC16
  • ***
  • Mensajes: 106
Flanco de la interrupcion
« en: 20 de Septiembre de 2005, 12:03:00 »
Estoy haciendo funcionar un menu con unos pulsadores, en los cuales uso los CN (Change notify) me ocurre que al pulsar me salta 2 el menu, creo que lo que pasa es que me captura la interrupcion en flanco de subida y bajada (pulsar y dejar de pulsar) es eso posible ?, hay alguna manera de decir al c30 que son solo de bajada o de subida algunas interrupciones, que solucion tengo ??


Grácias de nuevo y es pero vuestras respuestas.

Desconectado Sispic

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1700
    • winpic800
RE: Flanco de la interrupcion
« Respuesta #1 en: 20 de Septiembre de 2005, 13:33:00 »


 #include <ports.h>


ConfigINT1(RISING_EDGE_INT );    

ó

ConfigINT1(FALLING_EDGE_INT);

para aque no pares Giño

Desconectado zer0007

  • PIC16
  • ***
  • Mensajes: 106
RE: Flanco de la interrupcion
« Respuesta #2 en: 21 de Septiembre de 2005, 00:39:00 »
Creo que esa interrupcion solo vale para int0 al int 4, existe para cn pero no un parametro para configurar el flanco.

/********************************************************************
* Function Name     : ConfigIntCN
* Description       : Enables/Disables the individual CN interrupts
*                     and sets priority and enables/disables CN.
* Parameters        : None
* Return Value      : None
*********************************************************************/


No se si existe alguna manera de hacerlo.

Gracias de nuevo.

Por cierto además de la anterior pregunta, alguien sabe la diferencia entre usar LAT o PORT para mirar un puerto ?

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Flanco de la interrupcion
« Respuesta #3 en: 21 de Septiembre de 2005, 02:52:00 »
Parece que en las interrupciones generadas por Input Change Notification no existe la posibilidad de configurar el flanco, tan sólo puedes cambiar su prioridad y nada más.
De todas formas, siempre puedes poner un "if" al principio de la interrupción que compare el valor del pin con 0 o 1 según te interese y sólo se ejecutará en ese estado.
No obstante, si sigues interesado en hacerlo con detección de flanco podrías usar las Interrupciones Externas o el módulo Input Capture, ya que en ambas opciones tienes esa posibilidad.

Desconectado zer0007

  • PIC16
  • ***
  • Mensajes: 106
RE: Flanco de la interrupcion
« Respuesta #4 en: 21 de Septiembre de 2005, 03:18:00 »
Muchas gracias, eso ya lo hacia, me he dado cuenta de que el problema estaba en la pulsacion, tiene que ser muy rapida para que solo detecte una, la solucion que he encontrado  (no se si es buena) es llamar desde dentro del vector a una funcion antirebote que lo que hace es desabilitar la interrupcione CN esperar 300 milis y volver a habilitarla y ya funciona bien.
Te parece acertada nocturno o sispic ?

Gracias de nuevo a los dos y es un alivio tener gente a quien recurrir cuando no se sabe que hacer, y que te hace pensar un poco mas

Sonrisa

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Flanco de la interrupcion
« Respuesta #5 en: 21 de Septiembre de 2005, 03:40:00 »
Si no quieres tener ocupado al dsPIC en un retardo para evitar el rebote, siempre puedes conectarle un condensador a la entrada del pin, como en el gráfico de la izquierda:

Desconectado zer0007

  • PIC16
  • ***
  • Mensajes: 106
RE: Flanco de la interrupcion
« Respuesta #6 en: 21 de Septiembre de 2005, 04:24:00 »
Muchas gracias nocturno, seguramente recurrire al waitmilis, en el curro prefieren no poner mas hard.

Gracias otra vez.

Una pregunta: si me entra un dato (que me genera una interrupcion) en el momento en el que estoy en el waitMilis que podria pasar ?

(El waitMilis es con un bucle)

void waitMilis(float b)   
{
    b = b*8;       // Lo hacemos para ajustarlo a un mili aprox.
   
    while(b != 0){
    b--;
    asm("clrwdt"Giño;
    }  
}

Atenderia la interrupcion y luego volveria pero podria haber algún rebote ?


Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Flanco de la interrupcion
« Respuesta #7 en: 21 de Septiembre de 2005, 05:23:00 »
¿Te refieres a si te entra un dato por otro lado o a si te entra un nuevo pulso en el interruptor?

Si es lo primero no veo ningún inconveniente. Si es lo segundo tampoco, porque mientras ejecutas la interrupción, está deshabilitada para atender otro pulso.

De todas formas, los retardos en las rutinas de interrupción me hacen poco tilín. Siempre he tendido a hacerlas lo más cortas posible.

Desconectado zer0007

  • PIC16
  • ***
  • Mensajes: 106
RE: Flanco de la interrupcion
« Respuesta #8 en: 21 de Septiembre de 2005, 07:22:00 »
Es una interrupcion de un lector de dtmf de holtek que por las pruebas que he hecho no ha afectado, a lo mejor recurro a lo del condensador, (a ver que dice el jefe de modificar la placa)