jueves, 21 de noviembre de 2019

LABORATORIO N°12


MICROCONTROLADORES




Laboratorio N°12:



MANEJO DE TIMER Y LAS INTERRUPCIONES.

I. CAPACIDAD TERMINAL

  • Utilizar al microcontrolador en aplicaciones de control electrónico.
  • Desarrollar y ejecutar programas en un microcontrolador PIC.
  • Programar y configurar interfaces básicas del microcontrolador.

II. COMPETENCIA ESPECÍFICA DE LA SESIÓN

  • Conocer el funcioamiento y la configuración de las Interrupciones.
  • Conocer el funcionamiento y la configuración del Timer cero.
  • Aplicar estos conocimientos en la realización de un cronómetro.

III. FUNDAMENTO TEÓRICOS

A. TIMER0 PIC

El timer0 Pic es un temporizador contador de 8 bits, el registro TMR0 es el temporizador contador timer0 PIC, cuando es utilizado como temporizador sus valores aumentaran de uno en uno entre 0 y 255 con cada 4 ciclos del reloj, cabe destacar que cada ciclo de instrucción del microcontrolador PIC es realizado en 4 ciclos de reloj.

El registro TMR0 del timer' PIC puede ser leido y escrito, puede ser prescalado para que el tiempo en su incremento de valor en una unidad sea mayor, el timer0 PIC cuando alcanza su valor máximo de 255 se reinicia, volviendo a incrementar sus valores de 0 a 255, además cuando llega a su valor máximo y se reinicia puede producir una interrupción, lo que se decide en la programación.

FUENTE: MRELBERNI

B. TIMER0 AVR: CONTADOR

Para el PIC 16F877A el registro TMR0 del timer0 PIC esta formador por 8 bits por lo que se puede contar desde 0 hasta 255, al utilizar timer0 PIC como contador este no aumentara sus valores o su cuenta con cada ciclo de instrucción, en este caso el timer0 estará conectado al pin TOCKI por donde se le hara llegar una señal, la cual al cambiar de estado hara que el timer0 PIC se incremente en una unidad, estos incrementos en su cuenta pueden ser por cada flanco de subida o cada por flanco de bajada de la señal, el flanco a utilizar se elige por programa, por ejemplo se elige el flanco de subida, quere decir que cada vez que la señal que llega al pin T0CKI pase de un bajo a un alto o de 0 a 1, el registro TMR0 aumentara en una unidad, de esta manera se le puede utilizar como contador , cuando la señal pase de un alto a un bajo o de 1 a 0 el registro TMR0 no aumentara su valor o no se incrementara.

FUENTE: MRELBERNI

¿QUÉ BITS SE UTILIZAN?

-> Bit 7: al poner este bit a ' se activan unas resistencia pull up internas que el micrcontrolador tiene en el puerto B.
-> Bit 6: es para cuando se utilice una interrupción externa por el pin INT, con este bit se elige si se quiere que la interrupción sea por flanco de subida o por flanco de bajada.
-> Bit5 TOCS este es el bit que en este caso interesa, al poner este bit a 1 se elige utilizar el timer0 PIC como contador, si se le pone a ' se elige utilizar el timer0 PIC como temporizador
-> Bit4 T0SE con este bit se elige si se quiere que el timer0 PIC cuente por flanco de subida, esto es cuando la señal que llega por el pi T0CKI pase de 0 a 1, o que cuente por flanco de bajada
-> Bit 3: es para utilización del prescaler para el timer 0, el prescaler se le puede asignar al timer0 o al WDT mediante este bit
-> Bit 2,1,0 son para elegir el prescaler a utilizar mediante las combinaciones de esots bits se tienen diferentes valores para el prescaler, el que a su vez dependerá de a quien se la ha asignado el prescaler mediante el bit3, como se puede observar en la imagen.

C. TIMER0 AVR: TEMPORIZADOR

El timer0 Pic como temporizador normalmente se utilizar el TMR0 del timer0 PIC ira aumentando sus valores con cada ciclo de instrucción del microcontrolador PIC, y para estos microcontroladores a cada ciclo de instrucción le toma 4 ciclos del oscilador que se esté utilizando, si se usa por ejemplo un cristal de Fosc=4Mhz entonces cada ciclo del oscilador sera de 0.25us, luego cada ciclo de instrucción tardara 4 veces este valor, es decir 4*(0.25us) lo que viene a ser 1us, a esto se le conoce como ciclo máquina Tcm= 4/Fosc, entonces el registro TMR0 aumentará en una unidad cada microsegundo cuando el oscilador es de 4Mhz.

Entonces como el registro TMR0 es de 8 bits este aumentara desde 0 o desde algún valor que se le ponga como valor inicial hasta un máximo de 255, por ejemplo si va desde 0 hasta 255 habrán transcurrido 255us luego volverá a 0 pero en esa vuelta a 0 transcurre a 1us mas, por lo que en ir de 0 a 255 y volver a 0 transcurren 256us.

El temporizador contador PIC TMR0 cuenta con prescaler esto hace que la frecuencia de trabajo Fosc, se divida por este prescaler, con lo que se logra que el temporizador contador pic tarde un poco mas en aumentar su valor en una unidad; el prescaler del timer0 PIC para el PIC16F877A puede tomar el valor 1, 2, 4, 8, 16, 32, 64, 128 o 256; estos valores se eligen mediante las combinaciones de los bits 0, 1 y 2 del registro OPTION_REG

FUENTE: MRELBERNI

¿QUÉ BITS SE UTILIZAN?

-> Bit 7: al poner este bit a ' se activan unas resistencia pull up internas que el micrcontrolador tiene en el puerto B.
-> Bit 6: es para cuando se utilice una interrupción externa por el pin INT, con este bit se elige si se quiere que la interrupción sea por flanco de subida o por flanco de bajada.
-> Bit5 TOCS este es el bit que en este caso interesa, al poner este bit a 1 se elige utilizar el timer0 PIC como contador, si se le pone a ' se elige utilizar el timer0 PIC como temporizador
-> Bit4 T0SE con este bit se elige si se quiere que el timer0 PIC cuente por flanco de subida, esto es cuando la señal que llega por el pi T0CKI pase de 0 a 1, o que cuente por flanco de bajada
-> Bit 3: es para utilización del prescaler para el timer 0, el prescaler se le puede asignar al timer0 o al WDT mediante este bit
-> Bit 2,1,0 son para elegir el prescaler a utilizar mediante las combinaciones de esots bits se tienen diferentes valores para el prescaler, el que a su vez dependerá de a quien se la ha asignado el prescaler mediante el bit3, como se puede observar en la imagen.

IV. DESARROLLO DE LAS TAREAS

Las condiciones encargadas en este laboratorio son:

a. Al presionar el pulsador D0 se debe incrementar segundos, el temporizador aún no debe estar contando el tiempo.

b. Al presionar el pulsador D1, iniciar CUENTA REGRESIVA desde los minutos previamente configurados.


d. Si la cuenta llega a 00:00, congelar la cuenta y sonar BIP 3 veces.

V. VÍDEO DEMOSTRATIVO




VI. OBSERVACIONES Y CONCLUSIONES

a. Observaciones:

  • Al realizar las configuraciones respectivas para lograr cumplir las indicaciones se tuvo complicaciones ya que al tener un temporizador ascendente se tenia que configurar los tiempos para que este sea descendente.
  • Al programar y realizar las pruebas correspondientes en el entrenador físico existía una pequeña interferencia, ya que al presionar el pulsador programado este no respondía correctamente, por lo que se reinicio el entrenador con lo que se logro solucionar el problema.
  • En las primeras pruebas que se realizo se utilizo el programa CCS Compiler en la maquina física pero existía confusiones ya que no encontraba variables como "i", por lo que se utilizo el CCS Compiler pero en la maquina virtual logrando compilar la misma programación.
  • Al realizar las pruebas de la programación en la máquina virtual, no se lograba escuchar los sonidos que se habían programado lo que causo que se revisara de nuevo la programación pero el error era que en la maquina virtual no lograba emitir el sonido, pero en la código en el Proteus de la maquina física si logro emitir el sonido de los "BIP".

b. Conclusiones


  • Se logro elaborar la programación que satisfaga las condiciones que se proporcionaron en este laboratorio, logrando un temporizador descendente controlando su inicio y determinando el tiempo a descender.
  • Se concluye que al existir errores de compilación se debe buscar otras opciones como el uso de la maquina virtual que en este laboratorio ayudo a lograr concluir satisfactoriamente.
  • Se concluye que se debe tener cuidado al simular la programación, ya que el error no solo radica en la programación si no que hay varios elementos que pueden hacer que no funcione correctamente, como el daño del software, las limitaciones de la computadora, etc.

No hay comentarios:

Publicar un comentario