Retardos1 Por Software en Los Microcontroladores Pic

download Retardos1 Por Software en Los Microcontroladores Pic

of 3

Transcript of Retardos1 Por Software en Los Microcontroladores Pic

  • UNIVERSIDAD RICARDO PALMA ESCUELA DE INGENIERA MECATRNICA MICROPROCESADORES Y MICROCONTROLADORES

    ING. Luis Pacheco Cribillero

    RETARDOS POR SOFTWARE EN LOS MICROCONTROLADORES PIC.

    La vez pasada, se habl un poco sobre los retardos por software. Ahora vamos a ver esto de la

    lgica de los retardos un poco ms a fondo para poder crear nuestras propias subrutinas.

    Como ya se dijo el pic 16F84A puede usar un oscilador externo de 4MHz, entonces la frecuencia

    interna de trabajo ser esta frecuencia externa dividida entre 4, o sea 4MHz/4= 1Mhz, si

    utilizamos este oscilador tenemos que todas las instrucciones se ejecutan a 1uS, internamente la

    frecuencia es de 1Mhz, exceptuando los saltos que tardan 2 ciclos, es decir 2uS. Tomando en

    cuenta eso vamos a generar nuestros retardos, pero siempre partiendo de la suposicin de que se

    est trabajando a una frecuencia de 4MHz, si es as, crear rutinas de retardo para nuestro pic es

    muy sencillo.

    F = 1 Mhz 1/F = 1/(1Mhz) = 1/(106hz) = T = 10-6seg = 1useg

    Tren de pulsos

    PERODO

    Vamos a utilizar este FORMATO de

    CONTADOR para implementar nuestro

    primer retardo usando un solo

    CONTADOR.

    Supongamos que tenemos la siguiente rutina:

    CONTINUAR BSF PORTB,5; RB5

  • UNIVERSIDAD RICARDO PALMA ESCUELA DE INGENIERA MECATRNICA MICROPROCESADORES Y MICROCONTROLADORES

    ING. Luis Pacheco Cribillero

    Volviendo al formato inicial de RETARDOS, 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 (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, despejando

    tenemos N=(100-1)/3=33, asi que para tener un retardo de 100uS el valor de la variable N debe

    ser 33.

    Ahora veamos esta rutina:

    Podemos darnos cuenta que ahora nuestra

    rutina original (desde CICLO2 hasta goto

    CICLO) est afectada por la variable M, as

    que es como si M multiplicara a nuestro

    retardo.

    Para saber el nuevo valor del retardo de

    nuevo sumamos todos los ciclos, tomando

    en cuenta que M multiplica al retardo

    original de modo que la expresin ahora

    queda de la siguiente manera:

    [3N+1]M+1+1+(1)(M-1)+2+(2)(M-1), o lo que es lo mismo [3N+1]M+3M+1, de manera que

    tenemos dos retardos anidados.

    Para saber cunto sera el retardo total primero calculamos el retardo bsico, si queremos que

    ese retardo sea de 100uS entonces N=33, si ahora queremos que el retardo total sea de 10mS

    entonces necesitamos completar 10000 ciclos, as que igualamos nuestra expresin a ese

    nmero: [(3*33)+1]M+3M+1=10000, despejando tenemos M=(9999)/103, esto es

    aproximadamente igual a 97, as que para un retardo de 10mS nuestra variable N debe valer 33 y

    la variable M debe tener un valor de 97.

    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:

    [(3N+1)M + 3M+1]P +1 + 1 + (1)(P-1)+2

    + (2)(P-1), y reduciendo trminos la

    expresin seria: [(3N+1)M +3M+1]P +

    3P + 1.

    Queremos un retardo de 1 segundo,

    esto son 1000000 ciclos, por lo que

    nuestra expresin del retardo debe ser

    igual a un milln: [(3N+1)M+3M+1 ]P+3P+1=1000000.

  • UNIVERSIDAD RICARDO PALMA ESCUELA DE INGENIERA MECATRNICA MICROPROCESADORES Y MICROCONTROLADORES

    ING. Luis Pacheco Cribillero

    Sustituyendo N y M tenemos 9995P+1=1000000, entonces tenemos que P=(999999)/9995 y P

    entonces es aproximadamente igual a 100.

    Esta no es la forma ms precisa de realizar retardos, utilizando los valores para las variables N, M

    y P que calculamos tenemos que al final del retardo solamente se realizaron 999501 ciclos, en

    tiempo esto es aproximadamente igual a 0.99 segundos pero no el segundo completo, sin

    embargo para aplicaciones que no necesitan una gran precisin este mtodo funciona, y funciona

    muy bien!

    VERIFIQUE CON EL MPLAB Y EL PROTEUS, LA RUTINA PARA ENCENDER Y APAGAR UN

    LED USANDO EL PIC 16F628A

    ESCRIBA EL PROGRAMA QUE CONTROLE EL MOTOR M1, GIRANDO UN TIEMPO EN UN SENTIDO Y OTRO TIEMPO EN EL OTRO

    SENTIDO: MPLAB, PROTEUS, Y DETERMINE UD SUS TIEMPOS A PARTIR DE LO MOSTRADO EN EL DOCUMENTO!.....OK?