Autor Tema: 6 interrupciones por cambio de estado  (Leído 3149 veces)

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

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
6 interrupciones por cambio de estado
« en: 07 de Abril de 2007, 08:22:49 »
¿Hay alguna forma de obtener mas de 4 pines con interrupcion por cambio de estado con un 16F877?
En principio tengo de RB4 a RB7 que son 4 entradas pero  necesito 6 entradas con interrupcion de cambio de estado, ¿es posible de alguna forma?
Y si no lo es, que pic me recomendais, solo necesito adicionales 4 entradas y 10 salidas mas aparte de estas de las interrupciones, es decir 20 E/S de las cuales 6 deben generar interrupcion.
Mil gracias por vuestra ayuda como siempre

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: 6 interrupciones por cambio de estado
« Respuesta #1 en: 07 de Abril de 2007, 08:25:24 »
Cual es la razon que necesites tantas interrupciones??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Re: 6 interrupciones por cambio de estado
« Respuesta #2 en: 07 de Abril de 2007, 08:39:35 »
Porque quiero controlar tres encoders por interrupcion, hice la rutina sin interrupcion y es lenta, quiero hacerlo con interrupciones por cambio de estado, asi funciona mil veces mas rapida y no pierde pulsos por la velocidad.
Ya la he probado con un encoder, pero si solo tengo 4 entradas solo puedo chequear dos encoders y necesito tres.

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Re: 6 interrupciones por cambio de estado
« Respuesta #3 en: 07 de Abril de 2007, 08:42:30 »
ME valdria un pic que usase interrupcion RA pero no se cual lo tiene y no se si tendre que pasarme a la serie 18 que nunca he usado y no se si podre conseguir

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: 6 interrupciones por cambio de estado
« Respuesta #4 en: 07 de Abril de 2007, 08:46:59 »
Entra en la pagina de Microchip, escribe PIC en el buscador y te lleva al selector de PIC's.
Alli puedes elegir por las caracteristicas, donde puedes poner la cantidad minima de interrupciones necesarias, por ejemplo, y te muestra lo que existe...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Re: 6 interrupciones por cambio de estado
« Respuesta #5 en: 07 de Abril de 2007, 08:52:14 »
Claro pero solo indica el numero de interrupciones, no cuantas tiene por cambio de estado de entradas.
Lo cierto es que me gustaria usar el 16F877 ya que tengo varios, pero si no queda mas remedio...

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: 6 interrupciones por cambio de estado
« Respuesta #6 en: 07 de Abril de 2007, 09:19:17 »
Y si haces lo mismo que se hace con los teclados matriciales??
Multiplexas la entrada y luego miras cual es la que activo la interrupcion??
Se que es dificil, pero no veo como podrias, salvo que uses 3 entradas comunes para ver el sentido luego de ocurrida la interrupcion del conteo, por lo que veo usas una interrupcion por conteo y una por sentido...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: 6 interrupciones por cambio de estado
« Respuesta #7 en: 07 de Abril de 2007, 09:33:59 »
En el 16F877 puedes usar, con distintas implementaciones pero para conseguir el mismo resultado:

RB0 Interrupcion Externa.
RB4..7 Interrupción por cambio de estado.
RC1 Interrupción Capture CCP2
RC2 Interrupción Capture CCP1

Creo que son 7 pines que responden a cambios externos. Una idea de cómo utilizarlos puedes tenerla en la serie que abrí midiendo ancho de pulsos en Serie Técnicas en C Estan realizados para el 18F4550 pero la técnica es similar y creo que te puede ser fácil adaptar estos ejemplos.  :mrgreen:


Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Re: 6 interrupciones por cambio de estado
« Respuesta #8 en: 07 de Abril de 2007, 10:40:52 »
Gracias de nuevo, voy a ver los del RC con interrupciones CCP a ver si con esto puedo gestionar el tercer encoder, creo que podria ser una buena solucion ya que los otros dos con RB4 a 7 tengo lo que necesito.
Ya os comento gracias.

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: 6 interrupciones por cambio de estado
« Respuesta #9 en: 07 de Abril de 2007, 11:38:47 »
tambien podrias hacer lo siguiente: usar la interrupcion del timer0, como? asi, calibrala para q su desborde produzca una interrupcion cada (por ejemplo para 4Mhz) 255*256/1000000 = 65280 useg (esto lo consigues jugando con el prescaler que esta en el option_reg) entonces vas a tener que cada 65280usg tu programa va a acudir a la interrupcion y luego regresar, listo, lo siguiente es hacer un rutina dentro de la interrupcion que revise el cambio de estado de los pines del todo el puerto B, simplemente se podria almacenar en un registro PORTB_TEMP el estado de los pines del portb al iniciar el programa y luego constantemente compararlo con el actual hasta que este valor cambie o sea diferente del que almacenastes en PORTB_TEMP, luego debido al cambio actualizas ese registro PORTB_TEMP y asi haces sucesivamente, con esto puedes identificar q pines estan cambiando, ahora para tener una deteccion mas rapida nada mas tienes que modificar el tiempo de desborde del timer0 en su preescaler el minimo valor es 2*256  y puedes alcanzar hasta 1*256 dandole todo el prescaler al WDT y el timer0 se queda con ese valor 1*256.  :-/ exitos!!!
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Re: 6 interrupciones por cambio de estado
« Respuesta #10 en: 07 de Abril de 2007, 12:12:51 »
Lo de la interrupcion del timmer lo habia pensado, pero por lo que he leido aunque funciona bien, da menos fiabilidad de si la interrupcion es hard por cambio de estado.
De todas formas mil gracias, si no puedo con cambios de estado tambien probare con el timmer a ver si asi no tengo que cambiar de pic.

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Re: 6 interrupciones por cambio de estado
« Respuesta #11 en: 07 de Abril de 2007, 14:14:56 »
Bien estuve jugando con el RTTC y me sirve, lee hasta 2500 RPM con tres encoders de 20 Pulsos/revolucion, asi que mas que suficiente para mi. Paso a ponerlo en proyectos ya terminado por si alguien le interesa.
Funciona en Proteus y en real aunque con placa de prototipos
Mil gracias de nuevo por todo


 

anything