SoloCodigo
Programación Específica => Microcontroladores => Mensaje iniciado por: jpaler en Lunes 9 de Agosto de 2004, 22:14
-
Hola a todos ! ! !
Quisiera saber como hago un retardo de aproximadamente de
1 o 2 (o lo que sea) segundos para el pic-16f84...
Creo que se utiliza algo llamdo 'perro guardian', pero en
verdad no se que és ni como se trabaja, me gustaria que
fuera lo mas sencilla posible, pero si es necesario hacer
uso del 'perro guardian' no importa, lo k importa es que sea
facil de entender.
gracias a todos ! ! !
-
HOLA COMO TE VA ESPERO QUE BIEN BUSCA POR INTERNET UN PROGRAMITA QUE TE CALCULA LOS TIEMPO QUE VOS NESECITAS SE LLAMA PICLOOP
:hola: KIMERA
-
El retardo mas facil y comun es el que se hace mediante bucles anidados. un ejemplo sencillo:
cblock 0x20
CONT1
endc
movlw k
movwf CONT1
Bucle:
decfsz CONT1,F
goto Bucle
.
.
.
END
para calcular el tiempo del retardo entonces:
operacion num ciclos
movlw k 1
movwf 1
decfsz CONT1,F k-1 (mientras CONT1 no llegue a 0)
decfsz CONT1,F 2 (por el salto al llegar CONT1 a 0)
goto Bucle 2*(k-1)
total (3*k) + 1 ciclos
cada ciclo maquina toma 1 microsegundo si el XTAL es de 4mhz.
como k no puede ser mayor que 255 el numero obtendras un maximo de
766 microsegundos con este retardo basico.
para 1 segundo se necesitan 1 millon de ciclos, asi que se debe anidar este retardo a su maximo en uno mayor entonces:
cblock 0x20
CONT1
CONT2
endc
movlw k2
movwf CONT2
Bucle_2:
movlw k1
movwf CONT1
Bucle:
decfsz CONT1,F
goto Bucle
decfsz CONT2,F
goto Bucle_2
.
.
.
END
asi
operaciones ciclos
movlw k2 1
movwf CONT2 1
movlw k1 k2-1
movwf CONT1 k2-1
decfsz CONT1,F (k2-1)*(k1-1) (mientras no llegue a 0)
decfsz CONT1,F 2 * (k2-1) (al llegar a 0)
goto Bucle 2 * (K2-1)*(k1-1)
decfsz CONT2,F k2-1 (mientras no llegue a 0)
decfsz CONT2,F 2 (al llegar a 0)
goto Bucle_2 2* (k2-1)
TOTAL 4 + ((k2-1)*(4 + 3k1)) ciclos
si reemplazamos k1 =255 y k2 =255 tenemos un total de 195330 microsegundos, aproximadamente 0.2 segundos, sera necesario hacer un 3 bucle.
Bien, siguiendo este ejemplo yo creo que ya podras acabar 3 el bucle tu mismo para completar el de 1, 2 o tantos segundos como quieras.
por otro lado cabe aclarar que el "perro guardian" se usa como medida de seguridad, ya que por X o Y circunstancia el programa de nuestro PIC puede dejar de operar (por ejemplo entrar en un bucle infinito), esto seria catastrofico en un sistema de control. al usar el perro guardian se le configura un tiempo de acción, despues del tiempo programado, el "Perro guardian" realiza un "Reset" del programa. para evitar que el perro guardian reinicie nuestro programa a cada instante, hay que "patearlo" (kick the dog) es decir colocar en segmentos del codigo la funcion "clrwdt" para que se ejecute y no permita que el contador del perro guardian alcance el limite.
espero que esto te sea de alguna ayuda.
-
:) Hola, como dice Kimera hay un programa para calcular retardos lo puedes descargar en http://www.todopic.com.ar/ (http://www.todopic.com.ar/)
te metes donde dice utiles ahi hay varios programas pero el que necesitas es calcular_retardos.zip. solo le colocas el tiempo que necesitas en milisegundos y la frecuencia del reloj de el pic que estas usando y le das calcular ciclos y finalmente generar codigo y ya!! aparece tu codigo con diferentes instrucciones y lazos bastante eficientes que te generan el retardo deseado.
:comp:
-
Muchisimas gracias a todos por contestarme y tener paciencia con las preguntas de los novatos . . .