Autor Tema: Temporizador TMR0 para PIC16f84a  (Leído 4736 veces)

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

Desconectado Elisabeth

  • PIC10
  • *
  • Mensajes: 2
Temporizador TMR0 para PIC16f84a
« en: 22 de Mayo de 2017, 15:06:02 »
Hola, que tal?

« Última modificación: 24 de Mayo de 2017, 13:46:57 por Elisabeth »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Temporizador TMR0 para PIC16f84a
« Respuesta #1 en: 22 de Mayo de 2017, 16:30:04 »
No se cuanto tiempo tenes que tener abierta la canilla pero

En mi caso si fueran segundos, lo que haria es tener un Timer corriendo siempre, el cual cada interrupcion sea de 1 segundo ( o si es de 0.5s que sean 2 ), a lo que me estoy intentando hacer entender es que si tus tiempos son de segundos, con esto podemos saber cuantos segundos pasaron.

Haria una tabla, la cual seria algo asi:

Código: C
  1. uint8_t Tiempos[] = {90,80,70,60,50,40,30,20,10};

Si se presiono el boton, procedo a cargar el tiempo ese en una variable aparte, supongamos que esa variable se llame tiempo_actual. Tambien procedo a incrementar el indice ( variable : tiempo_indice ). Tambien estaria bueno tener una variable mas que se llame tiempo_reset la cual cargamos con 100 cada ves que detectamos un boton.

Entonces el funcionamiento seria:

- Solo leo los botones si tiempo_actual es 0.
- Aumento tiempo_indice si y solo si: Se presiono un boton Y tiempo_actual es igual a 0 (tiempo_actual igual a 0 me permite omitir los botones presionados durante la marcha)
- La salida se activa solo si tiempo_actual es distinto de 0. Sino esta desactivada.
- tiempo_reset debe volver a 100 si se presiona un boton.
- Si tiempo_reset llega a 0 debe ponerse un 0 en tiempo_indice.

Posibles problemas con esta implementacion:

- Al ser de 1 segundo cada ves que atendemos exige presionar el boton por 1 segundo como maximo. Pero tranquilamente podes reducir el tiempo de interrupcion a 0.5s de esa forma se ve mas rapido la presion del boton.

Espero que te sirva de idea. Solo necesitas en este caso la interrupcion del timer.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Temporizador TMR0 para PIC16f84a
« Respuesta #2 en: 22 de Mayo de 2017, 16:31:54 »
Una cosa mas...

http://www.todopic.com.ar/foros/index.php?topic=47731.0

No repitas varias veces el mismo mensaje. Sino se desvirtua

Desconectado Anastasia

  • PIC10
  • *
  • Mensajes: 3
Re:Temporizador TMR0 para PIC16f84a
« Respuesta #3 en: 22 de Mayo de 2017, 18:42:20 »
.
« Última modificación: 22 de Mayo de 2017, 19:01:23 por Anastasia »

Desconectado Elisabeth

  • PIC10
  • *
  • Mensajes: 2
Re:Temporizador TMR0 para PIC16f84a
« Respuesta #4 en: 22 de Mayo de 2017, 19:02:34 »
Puedo usar la misma idea en ensamblador mplab del pic? Porque lo que hago es controlar los ciclos de instruccion para que me el tiempo exacto que quiero contar

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Temporizador TMR0 para PIC16f84a
« Respuesta #5 en: 22 de Mayo de 2017, 19:15:52 »
Si, la idea es la misma, la podes implementar en ASM, en C, o lo que sea. Mi forma de hacerlo es usar una interrupcion unica (la del timer).

PD: Si podes conseguir un mejor integrado usalo. Ya que el PIC16F84A es obsoleto, caro a comparacion de otros con mayores prestaciones.Esto lo podes obviar si es que te exigen el PIC16F84A si o si.


 

anything