facultad de telemática - wordpress.com

16
1 Facultad de telemática SISTEMAS EMBEBIDOS 4°H PUENTE MEDINA JOSE MARCOS Profesor PRÁCTICA #2 “Calculadora aritmética binaria de 13bits” EQUIPO #4: -Alexis Alcaraz Tafoya -Mayré Orelly Valencia Fletes -Jonni Eduardo Aguilar -Aldo Orlando Ayala Gaspar Introducción

Upload: others

Post on 05-Jul-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Facultad de telemática - WordPress.com

1

Facultad de telemática

SISTEMAS EMBEBIDOS

4°H

PUENTE MEDINA JOSE MARCOS

Profesor

PRÁCTICA #2

“Calculadora aritmética binaria de 13bits”

EQUIPO #4:

-Alexis Alcaraz Tafoya

-Mayré Orelly Valencia Fletes

-Jonni Eduardo Aguilar

-Aldo Orlando Ayala Gaspar

Introducción

Page 2: Facultad de telemática - WordPress.com

2

En este documento estaremos llevando a cabo una revisión lo más

completa posible de cómo fue que implementamos una calculadora

aritmética binaria, veremos el proceso que tuvimos que hacer para

poder llegar a implementarla, así como también algunas pruebas que

realizamos para verificar el funcionamiento correcto de la calculadora.

Hablaremos un poco sobre algunas características del

microcontrolador que utilizamos para armar nuestra práctica el cual

tiene integrada una función para poder hacer uso de las

interrupciones.

Objetivo

Page 3: Facultad de telemática - WordPress.com

3

Diseñar y programar una calculadora aritmética utilizando los puertos

de entrada y salida del PIC18f4620, la calculadora deberá realizar

operaciones sencillas como suma, resta, multiplicación y división, así

como también tiene que mostrar números negativos en complemento

a 2, además de que la calculadora tendrá que ser montada y puesta

en función.

Índice

Calculadora aritmética práctica #2-------------------------------------------------------------- 5

Características eléctricas-------------------------------------------------------------------------- 6

Page 4: Facultad de telemática - WordPress.com

4

Verificación-------------------------------------------------------------------------------------------- 7

Interrupciones----------------------------------------------------------------------------------------10

Competencias--------------------------------------------------------------------------------------- 11

Observaciones---------------------------------------------------------------------------------------14

Conclusiones-----------------------------------------------------------------------------------------15

Bibliografía--------------------------------------------------------------------------------------------16

Calculadora aritmética práctica #2

● Realizamos nuestro informe de requerimientos. ● Conociendo lo que necesitamos empezamos a hacer el

pseudocódigo. ● Realizamos nuestro código. ● Después armamos el sistema gráfico del circuito en proteus

conectando todos los componentes necesarios en cada puerto

Page 5: Facultad de telemática - WordPress.com

5

correspondiente, usando resistencias entre el microcontrolador y

los leds, también agregamos los botones para manipular los

datos.

● Cargamos el archivo del programa en el proteus para hacer pruebas.

● Después fue prueba y error haciéndole modificaciones al pseudocódigo junto con el código hasta encontrar el mejor funcionamiento posible.

● Teniendo ya el esquema en proteus continuamos a montarlo en una protoboard basándonos en el diagrama del proteus.

● Utilizamos el programa bootloader para programar el pic e hicimos las pruebas necesarias.

Características eléctricas

+Vdd: Tensión positiva de alimentación.(Drenador) -Vss: Tensión conectada a tierra o negativa de alimentación.(Surtidor) +Vcc: (Colector) -Vee: (Emisor) Máxima corriente de salida bajo(PIN) 25mA Máxima corriente de salida alto(PIN) 25mA.

Page 6: Facultad de telemática - WordPress.com

6

Máxima corriente de salida para el vss pin 300mA. Máxima corriente de entrada para el vdd pin 250mA Máxima corriente de salida alto(PUERTO A) 80mA. Máxima corriente de salida bajo(PUERTO A) 50mA. Máxima corriente de salida alto(PUERTO B) 150mA. Máxima corriente de salida bajo(PUERTO B) 100mA.

Verificación

Primera

Resta (1b - 10b)

A la hora de realizar la siguiente operación (1b - 10b) nos da como

resultado los primeros 8 bits en alto, afectando también los botones,

ya que estos dejan de funcionar.

Page 7: Facultad de telemática - WordPress.com

7

Solución

Tuvimos que cambiar la forma en que declaramos los botones, en un

principio se declararon de esta forma: interruptor=input_b(); con esto

estamos diciendo que la variable “interruptor” era igual a lo que entra

por el puerto “B” y después hacíamos la evaluación de la variable con

un switch, pero cuando mostrabamos un resultado que abarcaba hasta

los 2 primeros bits del puerto “B”, provocándose un cambio de estado

en alto, hacía que la variable “interruptor” sea equivalente a una

cantidad la cual no está dentro de la evaluación de los casos del

switch y que además no tiene caso agregarla ya que si lo hiciéramos

estaríamos haciendo mucho más extensa la evaluación y no tiene

caso hacerlo así.

Cambiamos ese código por la declaración de control IF, y hacemos

una evaluación directa de los botones en los pines del pic, y así nos

evitamos volver a tener el mismo problema que teníamos

anteriormente.

Este sería el nuevo código:

if(input(pin_b4)==0)

interruptor=1;

if(input(pin_b5)==0)

interruptor=2;

if(input(pin_b6)==0)

interruptor=3;

if(input(pin_b7)==0)

Page 8: Facultad de telemática - WordPress.com

8

interruptor=4;

Segunda

Multiplicación (0111 1111b x 1000 0000b).

A la hora de realizar esta multiplicación nos debería de dar como

resultado: 11 1111 1000 0000b, por lo tanto, se tendría que poner en

alto los últimos 6 bits porque el resultado lo estamos truncando a solo

13 bits, pero en este caso el problema es que solo está encendiendo

el bit número 8.

Solución

En este caso era un problema simple ya que solo teníamos que

modificar el ancho de las variables antes de hacer cualquier operación

o hacerle lo que llamamos un casting, que es una conversión de

variables, por lo tanto, cada operación quedaría de esta forma:

resultado=(int16)datoC - (int16)datoD;

Tercera

Resta (011100b – 100001b)

Al realizar esta receta nos tendría que dar como resultado un número

negativo ya que el puerto “C” está fungiendo como el minuendo de la

Page 9: Facultad de telemática - WordPress.com

9

resta y el puerto “D” es el sustraendo, por lo tanto, el minuendo es

menor que el es sustraendo así que como resultado tendría que

mostrar un número negativo directamente en complemento a 2, es

decir, que nosotros no tuvimos que hacer la programación para

calcular el complemento a 2, ya que la ALU del pic por naturaleza

muestra todos los números negativos en complemento a 2 y esto no

solo es para la resta sino que también funciona para cualquier

operación que realice.

Interrupciones

Una interrupción es un aviso provocado por un módulo del PIC, por un cambio en el estado de un pin o un recordatorio de que ha pasado un cierto tiempo. Como su nombre indica este aviso interrumpirá la tarea que se este haciendo en ese momento y pasaremos a ejecutar una rutina de servicio o gestión de la interrupción. Existen varios tipos de interrupciones, pero nosotros estaremos usando la Interrupción por cambio de estado lógico en el puerto “B” en los pines RB4 a RB7. La ventaja de utilizar interrupciones es que mientras se espera a que se presente el evento que produce la interrupción el microcontrolador puede estar ejecutando cualquier otra tarea. De ese modo el micro no esta ciclado en una sola tarea sino que puede seguir trabajando en otras hasta que una interrupción haga que el programa salte y ejecute la tarea que se quiera y al terminarla el programa continuará su

Page 10: Facultad de telemática - WordPress.com

10

ejecución en el punto en el que se encontraba en el momento de presentarse la interrupción. Para habilitar las interrupciones por cambio de estado de RB4-RB7.

La directiva usada es #INT_RB y se debe acompañar de las siguientes funciones:

Habilitar el bit de habilitación global de interrupciones GIE del registro INTCON (enable_interrupts (GLOBAL)).

● GIE: Permiso global de interrupción. 1 – Permite todas las interrupciones. 0 – Prohíbe todas las interrupciones.

Habilitar el bit correspondiente a cada interrupción particular (enable_interrupts (INT_RB)).

● RBI: Permiso de interrupción por cambio de estado en RB7:RB4. 1 – Permite la interrupción. 0 –Prohíbe está interrupción.

Limpiar la bandera correspondiente a la interrupción habilitada para evitar falsas interrupciones. Cuando esto suceda es fundamental que en dicha posición tengamos un código válido para gestionar la interrupción. A dicho código se le denomina rutina de servicio de la interrupción (Interrupt Service Routine o ISR).

Competencias

1. ¿Qué lógica reciben las entradas de datos para las operaciones aritméticas con los interruptores en configuración Pull-Down?, justifique la respuesta. En la configuración pull down, cuando el circuito está en reposo, la caída de tensión en la resistencia es prácticamente 0V (low o cero lógico), en cambio si pulsamos P1, dejará pasar la corriente y tendremos una diferencia de potencial de 5V (high o uno lógico).

2. ¿Qué es el efecto de rebote en los interruptores de presión? Y ¿cómo fue eliminado este efecto en el diseño electrónico? Es un efecto mecánico-eléctrico que se presenta cuando se cierra o se abre un interruptor, aunque uno sabe que se está presionando el botón, a nivel microscópico hay pequeños rebotes mecánicos, es decir el contacto se cierra y se abre varias veces antes de quedar en la

Page 11: Facultad de telemática - WordPress.com

11

posición final. Esto se traduce en un pequeño tren de impulsos en lugar de un cambio de nivel simple. El fenómeno se puede dar tanto al cerrar el circuito como al abrirlo.

Este efecto fue eliminado utilizando un arreglo RC, el cual conectamos a la salida del botón una resistencia a tierra y un capacitor a la corriente.

3. ¿Qué técnica fue empleada en el programa para monitorizar la actividad de los interruptores de presión que seleccionan la operación aritmética a ejecutar? Utilizamos el método de interrupciones por cambio de estado lógico en los puertos RB7:RB4.

4. ¿Cuál es la máxima magnitud sin signo (en su equivalente decimal) posible de representar con 13 bits? 0 a 8,191.

5. ¿Cuál es el rango de representación en C-2 para n=13 bits?

-4,09610 ≤ X ≥ 4,09510

6. Represente -22510 en C-2 para n=13 bits. 1 1111 0001 1111

7. Calcular la resistencia necesaria para suministrar 6.5 mA a uno de los 13 LEDs, considerando VOH =5.0V y VD = 1.8V. 5.0v - 1.8v = 3.2v R=Vr/I R= 3.2v/6.5mA R= 492ohm

8. ¿Cuáles son las directivas de preprocesamiento mínimas indispensables para compilar un programa funcional en lenguaje C? Todas las directivas de preprocesador o comandos inician con un #. La directiva #define especifica un nombre que será reemplazado por un cierto valor en todos los lugares del programa donde se haga referencia. La directiva de preprocesador #include se usa para “incluir” las declaraciones de otro fichero en la compilación. Cuando el preprocesador encuentra una línea #include <fichero>, entonces reemplaza esta línea por el fichero incluido. #fuses Esta directiva define qué fusibles deben establecerse en la parte cuando está programado. #use.

Page 12: Facultad de telemática - WordPress.com

12

9. ¿Qué es el proceso de depuración? El proceso de prueba suele desvelar errores, un término genérico que abarca todo lo que hace su programa que no se esperaba que hiciese. Al proceso de suprimir estos errores del programa se conoce como la depuración.

10. Indique diferencias, ventajas y desventajas de la simulación y la emulación. El simulador imita el funcionamiento del programa, el emulador imita los sistemas de hardware como un pic, la ventaja del simulador es que podemos ver el comportamiento del proyecto antes de ensamblarlo y asi estar seguro de que no hay errores y al final ensamblarlo. La ventaja del emulador es que podemos usar para ver el funcionamiento de algún sistema que no se conocía, la desventaja es que podría no imita el 100% de lo que quiere emular.

una desventaja del simulador es que hay casos en que un bug pueda afectar en el funcionamiento del proyecto.

11. ¿Por qué razón es importante la simulación antes de la programación del firmware en el sistema embebido? Para comprobar el funcionamiento del programa y detectar errores en el mismo.

Page 13: Facultad de telemática - WordPress.com

13

Observaciones

Lo que más me causó curiosidad fue el tema de las interrupciones ya que nunca había escuchado que se realizan interrupciones; otro tema que igual me causo curiosidad fue la realización de la práctica de manera física.

-Mayré Orelly Valencia Fletes

Durante la práctica se me hizo muy interesante el comprender el funcionamiento de la calculadora binaria, y trabajar con el complemento A2, así como el análisis de las interrupciones, ya que son algo complejas de entender, pero muy útiles ya

que ahorran trabajo y código. -Alexis Alcaraz Tafoya

Durante la práctica, observamos que el funcionamiento del esquema funcionaba en ciertos puntos al hacer operaciones, había errores y se tuvo que modificar el

código, y volver a hacer el test. -Aldo Orlando Ayala Gaspar

Al realizar la práctica tuvimos la necesidad de implementar resistencias para

protección del micro, pero procurando no afectar el rango del voltaje entre 2,2V y 5V para así alcanzar lo que sería el 1 lógico, por eso conectamos resistencias

para suministrar los switches y además del otro extremo conectamos otras resistencias a tierra para que así no quedarán flotando los pines y con esto dimos

lugar a lo que sería un divisor de voltaje lo que quiere decir que una parte del

Page 14: Facultad de telemática - WordPress.com

14

voltaje se reparte a la resistencia y otra entra al pic, así que las resistencias no tienen que ser muy grandes para que podamos alcanzar el 1 lógico.

Jonni Eduardo Aguilar

Conclusiones

Esta práctica logre comprender la funcionalidad de una calculadora por medio del PIC, vimos algunos métodos para lograr que funcionara, hubo errores al hacer el test y se tuvo que modificar el código, pero en algunos casos las operaciones si las realizaba bien. -Aldo Orlando Ayala Gaspar Al realizar esta práctica comprendí cómo funciona realmente una calculadora binaria; para programar era hacerlo con la lógica normal de una calculadora, pero de manera binaria, pero al realizar la práctica de manera física fue algo más tedioso, ya que cualquier movimiento brusco o inconsciente podíamos desconectar algún cable, circuito o led; por tal motivo fue algo más tedioso esta realización. -Mayré Orelly Valencia Fletes

Page 15: Facultad de telemática - WordPress.com

15

Conocí algunos conceptos nuevos para mí dentro de la programación del PIC para

esta práctica, como lo es el PullDown, Efecto Rebote, Directivas De Pre-

Procesamiento, y sobre todo las Interrupciones, cómo es que se activan y se

manejan cada una de ellas y los diferentes tipos que podemos utilizar. Fue un

poco tedioso para mi, ya que no tenía bien definido estos conceptos, y me

producían errores al momento de pasarlo a código, de ahí en más fue interesante

el comprender cómo es que funciona una calculadora binaria desde operaciones

básicas.

-Alexis Alcaraz Tafoya

Con esta práctica aprendí cómo usar y administrar los puertos para establecerlos

de cualquier forma en que sean necesarios, también la importancia del uso de

resistencias para proteger la corriente que entra al microcontrolador y algo muy

importante, el complemento a 2, ya que este por default ya viene integrado por

naturaleza en los microcontroladores para mostrar números negativos.

Jonni Eduardo Aguilar

Bibliografía

https://www.tutorialesprogramacionya.com/cmasmasya/detalleconcepto.php?punto

=55&codigo=186&inicio=45

https://trucosinformaticos.wordpress.com/2012/10/14/como-usar-include-en-c-y-c/

https://arde.cc/foro/viewtopic.php?t=2305

https://programarfacil.com/blog/arduino-blog/resistencia-pull-up-y-pull-down/

https://www.fing.edu.uy/inco/cursos/firmware/teorico/clase05-manejoES.pdf

http://www.cortoc.com/p/digital.html

https://www.ibm.com/support/knowledgecenter/es/SSQ2R2_9.5.1/com.ibm.etools.

pl1.win.doc/topics/debug.html

Page 16: Facultad de telemática - WordPress.com

16

http://www.aquihayapuntes.com/indice-practicas-pic-en-c/interrupcion-cambio-de-

estado-rb4-rb7.html

http://www.circuitoselectronicos.org/2011/03/manejo-de-interrupciones-en-los.html