Autor Tema: PIC 16f84a - Consulta interrupciones  (Leído 4737 veces)

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

Desconectado fernando_realico

  • PIC10
  • *
  • Mensajes: 44
PIC 16f84a - Consulta interrupciones
« en: 26 de Agosto de 2010, 13:26:34 »
Estimados:

Estoy haciendo un proyecto, una plaqueta universal para lavarropa automático.
He hecho algunas peguntas por ejemplo el tema de eliminar el ruido eléctrico, decidí rediseñar la plaqueta distribuyendo los componentes de otra forma y teniendo en cuenta la distribución de masa.

El tema que quiero tratqar es cómo puedo producir una pausa y apagado con el mismo botón que acepto el comienzo de un programa.

Paso a explicitarme mejor: designé RB0 para aceptar el los programas y RA4 para seleccionar diferentes programas. El tema es que desearía, poder, además de lo que logré, presionando RB0 acepta el programa, tener la posibilidad de presionarlo otra vez para que vaya a la pausa y pulsarlo 2 veces para apagar todo, (parar el programa). Recien ahora estoy leyendo algo sobre las interrupciones.
En su defecto decir, bueno, no pongo pausa pero si mantengo pulsado el botón unos 5 segundos, se apague.

Bueno desde ya muchas gracias amigos.

Adjunto el programa para que lo vean.
Saludos
Fernando Gutierrez

Desconectado thegame

  • PIC18
  • ****
  • Mensajes: 439
    • Mcu Tronics
Re: PIC 16f84a - Consulta interrupciones
« Respuesta #1 en: 26 de Agosto de 2010, 16:25:10 »
Que tal fernando, bueno pues talves te sea util utilizar banderas o alguna variable contadora dentro de la interrupcion para poder saber cuantas veces se ha pulsado el boton y asi hacer lo que tu quieras, o talves con un modelo de maquina de estados te pueda servir.

Lo malo es que tu codigo esta en ensamblador y yo la verdad soy malito para ensamblador.

Saludos y suerte
Nunca se deja de aprender

Desconectado fernando_realico

  • PIC10
  • *
  • Mensajes: 44
Re: PIC 16f84a - Consulta interrupciones
« Respuesta #2 en: 26 de Agosto de 2010, 16:53:06 »
Estimado, gracias, a las banderas o flag, las se usar en los plc, pero en el pic todavía no se, y está el código en ensamblador, porque me compré un libro el año pasado y aprendí a programar de esa forma, se que se puede programar en "c" o en niple, pero nunca probé.

gracias por responder, voy a ponerme a averiguar.

Saludos Fernando

Desconectado isfan

  • PIC16
  • ***
  • Mensajes: 145
Re: PIC 16f84a - Consulta interrupciones
« Respuesta #3 en: 26 de Agosto de 2010, 19:58:51 »
Te pongo un trozo de ejemplo para que te oriente mas o menos.

testboton
btfss rb0       // RB0 esta pulsado? si no lo esta, se sale del test y sigue el programa, si lo esta, preguntamos por el contador
goto salirtest  // sigue la secuencia normal del programa porque no se pulso ningún botón y sale del bucle
decf conta5seg   // si por el contrario detecto el boton pulsado, creamos un registro contador llamado conta5seg por ejemplo y vamos decrementando el contador
btfss intcon,z   // al llegar a 00 y pasar a FF el registro Z se pondra a 1 indicuara que el contador a terminado de contar
goto testboton   // en caso de no provocarse la interrupcion indicaria que el pulsador no a estado 5 segundo presionado y saldria
bcf intcon,z     // Reseteamos la bandera
goto apagar     // hace la funcion de los 5 segundos pulsado.

Nota:    Para calcular el tiempo tiene que tener el cuenta varias cosas:
1.Puedes contar tiempo de 2 maneras creando registro y decremendandolos, puedes anidar registro tmb. si el tiempo es muy grande.
o por el TMR0 en mi caso te puse un ejemplo de decremento en un registro.

2. La frencuencia externa: ya sea por un cristal de cuarzo tiene que ver la velocidad. supongo que lo tendras a 4Mhz.
3. Jugar con los predivisores de frencuencias.
Mirate la hoja de datos o programas para calcular retardos hay muchas aplicaciones para ella.
4. Ten cuidado cuando anides tantos goto o Call en el pic16f84 no puedes de anidar más de 8 niveles.
     

Desconectado fernando_realico

  • PIC10
  • *
  • Mensajes: 44
Re: PIC 16f84a - Consulta interrupciones
« Respuesta #4 en: 26 de Agosto de 2010, 22:58:51 »
Gracias, te entendí érfecto, ahora creo que se complica por ejemplo, decir, si en menos de 1 segundo presiono 2 veces el pulsador, se apague no?

El ejemplo que me diste está de diez, cuando mucho no uso pausa, sino apagado.

Tuve un problema cuando controlaba el motor de lavarropa, se quedará colgado por el tema de anidar muchos loop? o el ruido electromagnético.

Bueno me fui del tema jaja, perdón.

Bueno gracias por responder y brindar su tiempo, la vedad muy agradecido, ya que no soy ingeniero voy aprendiendo mediante el ensayo y el error.

Gracias amigos.

Saludos desde Argentina
Fernando Gutierrez

Desconectado isfan

  • PIC16
  • ***
  • Mensajes: 145
Re: PIC 16f84a - Consulta interrupciones
« Respuesta #5 en: 27 de Agosto de 2010, 03:16:13 »
Si pulsa 2 veces el boton en menos de 1 seg  te hara lo mismo que si lo pulsas una vez con este codigo, este codigo solo sirve para dejar el botón pulsado durante  5 segundo o el tiempo que programes. si quieres que te haga algo por pulsar 2 veces el botón tienes que programar una nueva rutina.

prueba en un simulador para depurar los errores. como el MPlab o el SIMUPIC (http://www.oshonsoft.com/pic.html)

« Última modificación: 27 de Agosto de 2010, 03:18:29 por isfan »

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re: PIC 16f84a - Consulta interrupciones
« Respuesta #6 en: 29 de Agosto de 2010, 16:24:28 »
Hola, mira si tenes que leer teclas no te conviene usar interrupciones, ya que por los rebotes del pulsador nunca o casi nunca hace lo que queres. Te aconsejo que uses algo como :

LEER PUERTO
PULSO TECLA?
SI PULSO TECLA ESPERAR A QUE LA SUELTE(ENTRADA DE PUERTO 0 Ó 1)
SI SOLTO TECLA INCREMENTAR CONTADOR DE PULSACIONES EN 1
----------------------------------------------------------------------------------------
La idea es que cuando pulses una tecla esperes a que la suelte para leerla.

Desconectado fernando_realico

  • PIC10
  • *
  • Mensajes: 44
Re: PIC 16f84a - Consulta interrupciones
« Respuesta #7 en: 02 de Septiembre de 2010, 00:12:47 »
Gracias amigos por responder.

El tema que quería lograr como las plaquetas coreanas que vienen, en cualquier momento uno puede realizar una pausa y si presiona ese mismi pulsador en menos de 1 segundo, se apaga todo, la verdad no se como hacerlo, por el momento uso 1 pulsador para elegir 3 programas y el reset para apagar todo.

Gracias nuevamente amigos por brindar su tiempo.

Saludos.
Fernando

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: PIC 16f84a - Consulta interrupciones
« Respuesta #8 en: 02 de Septiembre de 2010, 10:31:31 »
Yo he utilizado interrupciones para leer pulsadores pero claro, nunca en programas muy complejos.

La idea es que tenés que hacer rutinas antirebote, yo suelo utilizar alrededor de 10ms. Pero también es cierto que no es aconsejable perder demasiado tiempo dentro de la rutina de interrupción. Aunque si sólo vas a utilizar la interrupción para una sola cosa (en este caso sería la tecla) no habría problemas.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas


 

anything