Documentos de Académico
Documentos de Profesional
Documentos de Cultura
de un lazo que se repite varias veces, dentro de otro lazo que se repite otro numero de veces y as
sucesivamente hasta alcanzar el tiempo que necesitamos en nuestra aplicacin, las formas sencillas
normalmente son inexactas y pueden ser usadas cuando las aplicaciones que estamos construyendo no
requieren estrictamente el tiempo que nos piden.
Por ejemplo en nuestra primera actividad tenemos una sirena de 1seg, realmente nadie notara la diferencia
si la sirena suena 0.8seg o 1seg. Pero en otros casos la exactitud es crtica, como en nuestra segunda
prctica donde se quiere controlar tiempo para activar una campana, o en aplicaciones de comunicaciones
por ejemplo los retardos deben tener exactitud intachable.
En stos casos utilizamos algunas tcnicas que nos toman mas tiempo pero garantizan mayor precisin en
nuestros proyectos.
Finalmente, luego de la creacin del cdigo se pueden usar herramientas como MPLAB para medir el tiempo
exacto que estn registrando nuestros retardos.
Bueno, antes que se me duerman con sta lectura entremos en materia:
Si utilizamos un cristal externo para el PIC de 4MHz tenemos que todas las instrucciones se ejecutan en 1uS
porque cada instruccin se toma 4 ciclos de reloj:
Ciclo de reloj: 1/4MHz: 0,00000025 segundos
4 Ciclos de reloj: 4 x 0,00000025= 0,000001 = 1uS
Cada lnea que contenga instruccin (ejemplo: ptob equ 06) tarda 1 micro segundo en ejecutarse.
Exceptuando las instrucciones que tiene saltos que tardan 2 ciclos (decfsz por ejemplo), es decir 2uS.
Tomando en cuenta eso vamos a generar nuestros retardos, pero siempre partiendo de la suposicin de que
se esta trabajando a una frecuencia de 4MHz, si es as, crear rutinas de retardo para nuestro pic es muy
sencillo.
Tranquilos estas ecuaciones no muerden no salgan corriendo, necesitamos hallar N para que nuestro retardo
sea de 100us.
A la derecha de cada instruccin aparece el nmero de ciclos que tomar cada una. Las primeras dos toman
solamente 1 ciclo.
La tercera decfsz toma 1*(N-1)+2, porque decrementar N-1 veces
la variable N y en el ltimo decremento har un salto, es por eso el
+2.
La instruccin goto se ejecuta en 2 ciclos y se ejecutar N-1 veces,
es por eso que se toma como 2*(N-1).
De esta forma tenemos que el nmero de ciclos, y por lo tanto el
tiempo que tendremos de retardo est dado por la siguiente
expresin:
1 + 1 + (1)*(N-1)+2 + (2)*(N-1)
4 +
(N-1)
+ (2N-2)
, o lo que es lo mismo
[3N+1]
Si queremos un retardo de 100uS entonces tenemos que 3N+1=100 porque:
Cansados?
Yo tambin, pero
nimo si entendemos esta parte
no tendremos mas dudas acerca
de los retardos, sigamos
As podemos seguir anidando
retardos. Para obtener un retardo
de 1 segundo utilizaremos la
siguiente rutina.
Aqu vemos que la variable P
afecta a los dos retardos que ya
habamos definido de modo que la expresin para calcular el nuevo retardo total seria:
1 +1 + [[3N+1]*M + 3M + 1]*P
+
(1)*(P-1)+2 +
(2)*(P-1)
,
1 +1 + [[3N+1]*M + 3M + 1]*P
expresin seria:
[[3N+1]*M + 3M + 1]*P
P-1+2
2P-2
, y reduciendo trminos la
3P + 1
3M +
tenemos
1]*P
que
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
DECFSZ
GOTO
DECFSZ
GOTO
DECFSZ
GOTO
RETURN
.100
;1
CONT3
;1
.97
;1
CONT2
;1
.33
;1
CONT
;1
CONT,F
;1*(N-1)+2
CICLO
;2*(N-1)
CONT2,F
;1*(M-1)+2
CICLO2
;2*(M-1)
CONT3,F
;1*(P-1)+2
CICLO3
;2*(P-1)
Hoy en da existen infinidad de herramientas para crear el cdigo donde solo tienes que ingresar la frecuencia del
cristal (4MHz en este caso) y el tiempo que necesitas del retardo y ahorrarte todos estos clculos: he aqu
algunos enlaces proporcionados por los dems compaeros del curso:
http://www.piclist.com/cgi-bin/delay.exe
http://www.todopic.com.ar/utiles/calcular_retardos.zip
FIN
Fuente de informacin:
http://micropic.wordpress.com/2007/02/09/retardos-por-software/