Vous êtes sur la page 1sur 2

Apuntes de Microprocesadores.

Clase 12
TEMA III. TEMPORIZACIN La generacin de retardos de tiempo resulta til cuando se desea detener momentneamente la ejecucin de un programa o para temporizar eventos. El objetivo es crear un subprograma o procedure que sirva como unidad de tiempo y luego contar la cantidad de veces que se ejecuta. Si el nmero de ejecuciones se conoce o ija con anticipacin! el propsito ser"a la introduccin de un par#ntesis temporal en el lujo de un programa$ pero si las repeticiones del procedure son una variable a determinar! la inalidad consistir"a en conocer la duracin de un suceso. Esto puede lograrse mediante el uso de un %ard&are especializado 'astables! monostables! divisores de recuencia( o a trav#s de recursos de programacin. ) continuacin se describen las variantes para desarrollar ambas posibilidades con microcontroladores* + + ,etardo por so t&are -so de Timers internos

Retardo por Software .ara generar retardos mediante t#cnicas de programacin es necesario conocer los detalles de arquitectura que determinan la duracin de las instrucciones. /omo se observa en la igura 0! la se1al del oscilador introducida por el terminal 2sc0 es dividida por cuatro para dar origen a otra de nombre 30. El lanco descendente de 30 se usa para iniciar la onda 34! repiti#ndose el procedimiento con esta para que empiece 35 y luego 36. .or causa de 30 suceden dos cosas! la instruccin apuntada por el ./ es cargada en el 7, ' Fetch( y su contenido 'el del ./( es incrementado para que apunte a la siguiente instruccin del programa. Luego! con 34! 35 y 36 se completa la ejecucin de la instruccin 'Execute(! ley#ndose los operandos durante 34 y escribi#ndose los resultados durante 36.

2sc0 30 34 35 36 :etc% de la inst i E;ecute de la inst i+0 :etc% de la inst i<0 E;ecute de la inst i

"i#. $. Ciclos de "etc% E&ecute "uente' (atas%eet del )icrocontrolador PIC$*"+,, La sucesin de 30! 34! 35 y 36 equivale a cuatro pulsos o ciclos de reloj que constitu en un ciclo de instrucci!n. 2bs#rvese que mientras inicia el Fetch de una instruccin 'actualizacin del ./( se est concretando el Execute de la instruccin anterior. Este procedimiento se conoce como pipeline. 8o importa si la instruccin a ejecutar carece de operandos! involucra dos de ellos o si el direccionamiento es inmediato o indirecto$ el proceso de ejecucin tarda cuatro ciclos de reloj o bien un ciclo de instruccin! de manera que todas ellas duran lo mismo. Esto acilita en gran medida el clculo del tiempo en que se ejecuta un procedure o un programa completo! lo cual resulta incmodo en aquellas arquitecturas donde cada instruccin implica una cantidad di erente de ciclos de reloj. La nica complicacin al momento de computar el tiempo de una rutina de retardo para un .7/ ocurre por causa de las instrucciones que implican saltos y rompen el lujo normal del programa. El Execute de una instruccin de salto '/all! ,eturn! 9oto! etc( consiste en un nuevo Fetch! de manera que el contenido recientemente actualizado del ./ debe ser guardado en el Stack y sustituido por el nmero de la instruccin a donde se va a saltar. Esto signi ica que tales instrucciones se ejecutan en el doble de tiempo requerido para las dems. El siguiente algoritmo es til para implementar una rutina de retardo*

Wilmer Sanz F.

Apuntes de Microprocesadores. Clase 12


Jecrementar Jelay4 Si

7nicio

Jelay0?> Si

Jelay4?>

,etornar

8o

Jelay0KC

Jecrementar Jelay0

8o

Jelay4KC

,etardo Jelay0*?>0 /arga Jelay4*?>4 /iclo Jelay4*?Jelay4+0 Si Jelay4 KC 9oto /iclo Jelay0*?Jelay0+0 Si Jelay0 KC 9oto /arga ,etornar

$ 0 vez $ >0 veces $ >0=>4 veces $ >0=>4 veces $ >0 veces $ >0 veces $ 0 vez

"i#. 2 Al#orit)o .3sico para rutinas de retardo "uente' Ela.oraci!n Propia

Los dos saltos condicionados duran dos ciclos de instruccin si la condicin se veri ica$ y uno solo! si alla. La mayor"a de las veces dic%os saltos se concretarn! por lo que se procede a calcular el tiempo de la rutina con esta premisa! incurriendo en un peque1o error que respecto al valor real. )parte de los saltos! nicamente el retorno dilata dos ciclos de instruccin! de manera que se tiene*

Ciclos = 0 + K0= '0 +0 + 4( + K0= K 4'0 + 4( + 4


>0 y >4 son parmetros a determinar para ijar una cantidad deseada de ciclos de instruccin$ y por tanto! un tiempo espec" ico para la rutina de retardo. 8tese que se %a dejado e;pl"cita! entre par#ntesis! la cantidad de instrucciones asociadas a cada ciclo. :inalmente! debe considerarse que un ciclo de instruccin tarda cuatro veces el per"odo del se1al proveniente del oscilador! con lo cual se puede traducir el clculo anterior a unidades de tiempo 't?/iclos=6@ rec(. ;*** Rutina de Retardo de 100 us*** ;*** Con un reloj de 20MHz, cada instruccin se ejecuta en 0.2 us pero una instruccin de salto requiere el doble ;*** = 0.! us. "obre esta base se deter#inan los $alores del literal % Retardo M&'() M&')* % +ela,0 ;0.2 us. ;0.2 us.

;*** -ste ciclo se repite . $eces /ucle +-C*"0 1&2& R-23R4 +ela,0,1 /ucle ;0.2 us. ;0.! us. ;0.! us.

;*** -l ciclo co#prende una instruccion de 0.2 us , una de 0.! us, en total 0.5 us ;*** 100 us = 60.2 7 0.2 7 %*0.570.!8 us ;*** +e aqu9 se desprende que %=15: 6;:8

-i.lio#raf/a + Aicroc%ip Bec%nology 7nc. '4CC0(. PIC$*"+,0 (ata S%eet. &&&.micro%ip.com DEn l"neaE Fltimo acceso* C0+CG+4CCH + Sanz I. '4CC4(. (ise1o de interfaces con unidades de controlo )icropro#ra)a.les . -niversidad de /arabobo.

Wilmer Sanz F.