Autor Tema: Interrupcion en mcp23017  (Leído 3237 veces)

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

Desconectado jca

  • PIC12
  • **
  • Mensajes: 75
Interrupcion en mcp23017
« en: 18 de Diciembre de 2008, 22:08:48 »
Buenas a todos, ando haciendo pruebas con el mcp23017 y bueno, logro comunicarme con el sin ningun problema haciendo funcionar sus puertos con total normalidad, pero mi problema empieza al utilizar el dispositivo como entrada, el cual no consigo hacer funcionar sus pines de interrupción, creo que el problema esta en que no consigo configurar bien los registros, pero es que despues de leerme el manual del mcp como 20 veces tampoco tienen mucho misterio...y no se pq no funciona....
1-Configuro el IODIRA y  el IODIRB con un FF para poner los puertos como input
2-configuro el GPINTENA y el B con FF (Enable input pin for interrupt-on-change event)
3-Configuro el INTCONA y el con FF para habilitar las interrupciones
el IOCON no lo toco pq el pic lo pone por defecto a 0 y segun lo pone no hace falta tocarlo para que funcionen las interrupciones y para ordenar el mapa de memoria para que los registros se configuren de manera secuencial.
Despues de todo esto al ingresar 5v por cualquiera de sus dos puertos el pin de interrupcion de dicho puerto no se activa y no se que hacer ya....

1Saludo, espero que alguien me de alguna idea o haya trabajado con este dispositivo...pq despues de buscar en el foro no he encontrado nada que me pueda servir.....gracias.....

PD: los pines de interrupcion del mcp los tengo conectados a un 16f876 al PA0 y al PA1 y en el programa del pic escaneo constantemente estos dos pines a la espera de pillar la interrupcion del dispositivo para posteriormente proceder a leer el puerto correspondiente con el pin que haya producido la interrupión....
« Última modificación: 18 de Diciembre de 2008, 22:12:37 por jca »

Desconectado jca

  • PIC12
  • **
  • Mensajes: 75
Re: Interrupcion en mcp23017
« Respuesta #1 en: 19 de Diciembre de 2008, 17:54:36 »
Nadie me puede hechar una mano? :(

Desconectado omix

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 244
Re: Interrupcion en mcp23017
« Respuesta #2 en: 19 de Diciembre de 2008, 19:38:32 »
Hola,
yo he usado el mcp23S17 que basicamente es el mismo pero con interfaz SPI y el procedimiento que sigo para configurarlo es el siguiente:

1.- Configuro el registro IOCON con valor 0x48, para que genere interrupcion tanto por el pin INTA  como por el INTB.
2.- Configuro el registro INTCON con valor 0x00, para que use como referencia el valor anterior del puerto a la hora de comprobar si ha cambiado de estado y por tanto que genere interrupción.
3.- Configuro el registro GPINTEN con los pines que deseo que generen interrupción.
4.- Configuro el registro IPOL con el valor 0x00 para que no invierta la logica de los pines de los puertos GPA y GPB.
5.- Configuro el registro IODIR, con aquellos pines que quiero que sean entradas y cuales salidas.

Un saludo.

PD: Revisa tambien el documento de errata, por si hubiese alguno que te pueda afectar, ya que la version spi que yo usé tenia una errata que hacia que no se inicializasen correctamente.

Desconectado jca

  • PIC12
  • **
  • Mensajes: 75
Re: Interrupcion en mcp23017
« Respuesta #3 en: 19 de Diciembre de 2008, 22:59:46 »
A que te refieres con que revise el documento de errata? haciendole funcionar como dispositivo de salida si funciona(he probado esto por si estaba muerto), pero despues de configurar los registros como tu dices sigue sin funcionar la interrupción...que desesperación una cosa que parece tan sencilla y esta es la tercera tarde que pierdo sin conseguir nada....

un saludo......

Desconectado omix

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 244
Re: Interrupcion en mcp23017
« Respuesta #4 en: 20 de Diciembre de 2008, 08:32:19 »
A que te refieres con que revise el documento de errata?

Me refiero a un documento como este (este es para el mcp23s17): http://ww1.microchip.com/downloads/en/DeviceDoc/80311a.pdf

Pero me parece que el mcp2317 no dispone de ningun documento de errata.

Un saludo.