PracticaSEGUNDO PARCIAL MICROPROCESADORES 2

April 8, 2023 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download PracticaSEGUNDO PARCIAL MICROPROCESADORES 2...

Description

 

UNIVERSIDAD APEC

 Decanato de Ingeniería e  Informática Práctica SP de MICRO II

SEPULVEDA   Matrícula A00103781  A00103781  Fecha: 10/07/2022  10/07/2022  Nombre: JOSE OSVALDO RODRIGUEZ SEPULVEDA 1. 1.   ¿Cuáles son los tipos de memorias con que cuentan los microcontroladores AVR?

  Memoria de programa (Flash/ROM).



  RAM (SRAM)



 



EEPROM 

2. 2.   ¿Cuáles de las memorias encontradas en los MCU (MicroController Unit ) AVR son volátil?

La única que cumple con esto es la SRAM, ya que la Flash y la EEPROM, mantienen su data al apagarse. La SRAM es una memoria volátil que significa que la información que se almacena temporalmente en el módulo se borra cuando reinicia o apaga su computadora. Debido a que la información se almacena de forma eléctrica en los transistores, cuando no hay corriente eléctrica, los datos desaparecen. Este tipo de memoria tiene como peculiaridad que la información se pierde con se interrumpe el flujo eléctrico. 3. 3.   ¿En cuál memoria se almacenan las instrucciones que ejecuta el MCU?

Esta se almacena en la memoria de programa (Flash/ROM). 4. 4.   ¿Qué tamaño, en bits, puede tener una instrucción de los AVRs?

De 16 o 32 bits 5. 5.   El MCU ATmega32, un miembro común de la familia AVR, tiene 32 KBytes de memoria de

programa(32,768 bytes), sin embargo, solo cuenta con 16K direcciones (ubicaciones). ¿Explicar por qué?

Esto debido a que las instrucciones en la memoria de programa tienen un tamaño de 16 bits. La memoria de programa se organiza en palabras de 16 bits, el doble de un byte (8 bits). La capacidad entonces, calculando la en palabras: (32KBytes)( 8 bits/byte ) ( 1  /16  ) = 16 . 6. 6.   ¿Cuántos registros de propósito general (GPR) tiene el núcleo d del el MCU AVR? ¿Qué tamaño

tiene cada uno? (en bytes).

Este cuenta con 32 registros, cada uno con un byte.

 

7. 7.   ¿Cuál es el nombre del registro que siempre contiene la dirección de la próxima

instrucción a serejecutada?

Contador de Programa, este registro, normalmente denominado PC, es totalmente equivalente al de todos los microprocesadores y contiene la dirección de la próxima instrucción a ejecutar. 8. 8.   Si un microcontrolador AVR opera con un reloj de 4 MHz, ¿cuál es la máxima cantidad de

instruccionesque puede ejecutarse en un segundo?

4 MIPS = 4 millones de instrucciones por segundo. Esto lo podemos encontrar en la página 3 datasheet ATmega32: "By exesutina Rewerful instructions instructions in a single glack suele the ATmega32 achieves, throughnuts, aparaushing I MIPS per MHz"   9. 9.   Cuando el microcontrolador AVR es reiniciado, ¿Cuál dirección se carga en el registro PC?

La dirección que se carga en el registro PC es $0000. 10.   Identifique cuatro fuentes de señales de reinicio (Reset) para un microcontrolador AVR. 10.

  Power-on Reset: Voltaje VCC menor al límite operacional (VPOT).   External Reset: Se presenta una señal LOW en el pin RESET





  Watchgod System Reset: Se expira el tiempo del Watchdog Timer, asumiendo que el resetpor



 



watchdog esté activado. Brown-out Reset: Cuando el voltaje VCC es menor al voltaje de Brown-out. 

11.  ¿Cómo se le llama a la 11.  l a sección de códigos que se ejecuta cuando ocurre una interrupción?

El número de interrupciones de interrupción de hardware externo varía en diferentes AVR. El ATmega32 tiene tres interrupciones de hardware externas: pines PD2 (PORTD.2), PD3 (PORTD.3) y PB2 (PORTB.2), designados como INTO, INTI e INT2, rrespectivam espectivamente. ente. En lenguaje C: En lenguaje C no hay instrucciones para gestionar gestionar las interrupciones. Entonces, en WinAVR se ha agregado lo siguiente para administrar las interrupciones:   Archivo de inclusión de interrupción: debemos incluir el archivo de encabezado de interrupción si



queremos usar interrupciones en nuestro programa.  



Definición de ISR: para escribir una ISR (rutina de servicio de interrupción) para una interrupción utilizar la siguiente estructura: ISR (nombre del vector de interrupción). 

12.   ¿En un MCU AVR, en cual dirección usualmente comienza la tabla de vectores de interrupción? 12.

La tabla de vectores de interrupción se encuentra desde $00 hasta $28. 13.  ¿Cuál interrupción no puede ser deshabilitada?

La interrupción RESET, la cual no puede ser deshabilitada.

 

14.   En un MCU AVR, ¿cuál es la función de los registros TCNT y TIFR? 14.

El registro TIFR es el que indica cuando una interrupción esta activa. No es necesario cambiar los valores de este registro, ya que cambian sus valores por automático automático.. El registro TCNT es un tipo de contador de 0 hasta 255, lo que permite hacer desbordamientos. desbordamientos. En pocas palabras, es un registro de 8 bits y cuenta con cada pulso. 15.   ¿Qué función realiza el Prescaler en la operación de los Timers? 15.

Un prescaler es un circuito divisor de frecuencia que se ubica a la entrada de un temporizador/contador. Divide la frecuencia del oscilador en determinadas determinadas relaciones entradasalida (1:n) que se configuran por medio de la programación. 16.   ¿Cuáles modos son generalmente usados en la operación del Timer0? 16.

Puede programarse en cuatro diferentes formas de operación:   Modo Normal   Modo CTC (Clear on Compare Match)   Fast PWM (Pulse Width Modulation)   Phase Correct PWM Mode   •







17.   ¿Cuál de los Timers del MCU ATmega32 opera en la condición de 16 bits? 17.

El timer1 es el que opera en la condición de 16bits 18.   ¿En qué se diferencia la operación del modo Normal y el modo CTC de los Timers? 18.

Modo normal: Es el modo más simple de operar, la dirección de conteo siempre se incrementa y

cuando llega a desbordarse llegando a su valor máximo de 8 bits se reinicia el conteo. Modo CTC: En este modo el contador se borra y se reinicia a cero cuando el valor de TCNTn es igual al

valor de OCRNA, esto nos ayuda a contar los eventos externos. 19.   ¿Cuál es el contenido del registro SREG al reiniciar el microcontrolador ATmega32? 19.

I = 0 significa que todas las interrupciones están enmasca enmascaradas radas y, como resultado, ninguna interrupción será respondida por el AVR. 20.   ¿Qué uso tiene el registro TIMSK? 20.

Este registro indica si se requiere que el Timer0 genere una interrupción cada vez que ocurra un desbordamiento (overflow (overflow al alcanzar el TCNT un valor de 255), o que genere una interrupción toda vez que el valor del TCNT0 sea igual al valor del OCR0. Del bit siete al bit dos el valor tiene que ser0. Si se requiere r equiere que se habilite la interrupción por comparación se deberá cargar un 1 al bit OCIE0 y si se desea que se habilite la interrupción por overflow hay que cargarle un 1 al bit TOIE0.

 

21.   ¿Por qué se usa la instrucción RETI después de una ISR? 21.

La instrucción RETI debe ser la última instrucción de ISR porque regresa al programa principal donde se genera la interrupción y establece el bit de habilitación de interrupción global en SREG. 22.   ¿Cuál es la dirección asignada para atender el evento de Overflow del Timer0? 22.

La dirección asignada a este es 0x16 23.  ¿Qué pasa si ocurre una interrupción mientras el MCU está atendiendo otra interrupción? 23. 

Si se activan dos interrupciones al mismo tiempo, la interrupción con mayor prioridad se atenderá primero. La prioridad de la interrupción de caché está relacionada con la dirección de esa interrupción en el vector de interrupción. La interrupción que tiene una dirección más baja tiene una prioridad más alta. 24.  En los MCU AVR, ¿Cuáles son los registros disponibles para programar los puertos I/O? 24. 

  PINx: Lectura de pines (solo lectura).



  DDRx: Modo de dirección (salida/entrada).   PORTx: Valor de salida/pull-up (dependiendo si el pin es entrada o salida) Donde la “x” puede





ser desde A-F, dependiendo del microcontrolador.  25.   ¿Qué valor toma el registro DDR cuando el MCU AVR se reinicia? 25.

Este toma el valor de 0x00 (todos como entradas) 26.   AVR es un microcontrolador de 8  bits 26. 27.   Los registros de propósito general tienen un ancho de 8 bits 27.

28.   El valor más grande que se puede 28. puede cargar en los GPRs es (en hex) 29.   El valor en LDI tiene un ancho de 8 bits  29. bits  30.  ¿Cuál es el resultado del código siguiente y donde se almacena? 30.   

  El resultado es R20= 0x28 (es decir el código anterior suma los valores 0x15 y 0x13 cargados



en los registros R20 y R21 y el valor se almacena en R2

 

31.  ¿Cuáles de las siguientes expresiones son incorrectas? 31. 

a)

b) c)

d)

LDI  LDI   LDI  LDI  

f)

LDI  LDI 

g)

LDI 

h) i)  j)

ADD  ADD   ADD  

e)

R20, 500  R23, 50  R1, 00  R16, $255  R42, $25  R23, 0xF5  123, 0x50  R20, R11  R16, R1  R52, R16 

  La expresión a es incorrecta porque no se puede cargar un decimal 500 a un registro    La expresión b es incorrecta porque no se puede cargar un decimal 50 a un registro    La expresión c es incorrecta 

• • •

       

• • •



La expresión e es incorrecta  La expresión g es incorrecta  La expresión i es incorrecta  La expresión j es incorrecta 

32.  Cual

es el resultado de la ejecuci ón de los siguientes c ódigos y donde se almacena?

a)  En este caso se carga el valor de 0x25 al registro R19 y luego se suma el registro R19 ccon on el valor de 0x1F

b)   En este caso se carga el valor de 0x15 al registro R21 y luego se suma el registro R21 ccon on el valor 0XEA

33.   Verdadero o falso: los registros de funciones especiales (SFRs) del AVR se denominan registros de 33. I/O 34.   Verdadero o falso: los registros de I/O son parte del espacio de la memoria de datos V  34. 35.  Verdadero o falso: los registros de propósito general no forman parte de la memoria de datos F  35.  36.   Verdadero o falso: la memoria de datos es del mismo tamaño en todos los miembros AVR V  36. 37.   Si juntamos los registros de I/O, la RAM interna y los GPRs, obtenemos el espacio total de 37.

.

38.  Encuentre el tamaño de la memoria de datos de los siguientes AVR: 38. 

 

  a)  a)  ATmega32

De 32KB b) b)   ATmega16

De 32Kb c) c)   ATtiny44

De 4kb 39.   Especifique la diferencia entre la EEPROM y el espacio de RAM de datos de los AVR. 39. 40.   ¿Podemos adquirir un chip AVR sin EEPROM? 40.

No 41.  ¿Podemos adquirir un chip AVR sin memoria de datos? 41. 

No   42. ¿Cuál es el rango de direcciones para la RAM interna del MCU Atmega32?

Desde 0x0100 a 0x00FF

43.   ¿Cuál es el número máximo de bytes que puede tener el AVR para la memoria de datos? 43.

32 bytes 44.  Muestre un código simple para cargar los valores $30 y $97 en las ubicaciones $105 y 44. 

$106,respectivamente.

LDI R16, 0x30 LDI R17, 0X97 STS 0X105, R16 STS 0X106, R17 45.   Muestre el código para cargar el valor de $55 en ubicaciones de $300 a $308. 45.

LDI R18, 0X55 STS 0X300, R18 STS 0X301, R18 STS 0X302, R18 STS 0X303, R18 STS 0X304, R18 STS 0X305, R18 STS 0X306, R18 STS 0X307, R18 STS 0X308, R18

46.   Muestre el código para cargar el valor $5F en el PORTB. 46.

 

LDI R22, 0X5F STS 0X38, R22 47.   Verdadero o falso: no podemos cargar valores inmediatos en la memoria RAM interna directamente 47. 48.   Muestre un código simple para cargar el valor $11 en las ubicaciones $100–$105, sumar los 48.

valores y colocar el resultado en R20.

LDI R19, 0X11 STS 0X100, R19 STS 0X101, R19 STS 0X102, R19 STS 0X103, R19 STS 0X104, R19 STS 0X105, R19 LDS R20, 0X100 LDS R21, 0X101 LDS R22, 0X102 LDS R23, 0X103 LDS R24, 0X104 LDS R25, 0X105 ADD R20, R21 ADD R20, R22 ADD R20, R23 ADD R20, R24 ADD R20, R25 (OBTENGO LA SUMA TOTAL CON U UN N VALOR DE 0X66 Y COLOCO EL RESULTADO RESULTADO EN R20) 49.   Repita el problema 48, excepto que coloque el resultado en la ubicación $105 después de 49.

realizar lasuma.

LDI R19, 0X11 STS 0X100, R19 STS 0X101, R19 STS 0X102, R19 STS 0X103, R19 STS 0X104, R19 STS 0X105, R19 LDS R20, 0X100 LDS R21, 0X101 LDS R22, 0X102 LDS R23, 0X103 LDS R24, 0X104 LDS R25, 0X105

 

ADD R20, R21 ADD R20, R22 ADD R20, R23 ADD R20, R24 ADD R20, R25 STS 0X105, R20 (ALMACENO EL RESULTADO DE LA SUM SUMA A FINAL 0X66, QUE SE ENCONTRABA EN EL REGISTRO R20, LO PASO A LA UBICACIÓN 0X105) 50.  Muestre un código simple para cargar el valor $15 en la ubicación $67, agregarlo a R19 cinco 50. 

veces ycolocar el resultado en R19 a medida que se suman los valores. R19 debe ser cero antes de que comience la suma.

LDI R16, 0X15 STS 0X67, R16 LDS R20, 0X67 ADD R19, R20

51.   Repita el problema 49, excepto que coloque el resultado en la ubicación $67. 51. 52.  Escriba un código simple para complementar el contenido de la ubicación $68 y colocar el 52. 

resultado en el registro R27. 53.   Escriba un código simple para copiar datos desde la ubicación $68 al Puerto C usando R19. 53. 54.   El registro de estado es de 8 bits 54. bits   55.   ¿Cuáles bits del registro de estado son usados para las banderas C y H? 55.

Para la bandera C se utiliza el bit 7 Para la bandera H se utiliza el bit 5 56.   ¿Cuáles bits del registro de estado se utilizan para las banderas V y N? 56.

Para la bandera V el bit 3 Para la bandera N el bit 2 57.   ¿Cuál es el estado de las banderas C y Z después de ejecutar el siguiente código? 57. LDI

LDI  ADD

 



R20, 0xFF R21,  1  R20, R21 

Con esta operación no se obtiene ningún resultado, ya que la instrucción LDI R21, 1 ES INCORRECTA

58.   Encuentre el valor de la bandera C después de ejecutar los códigos siguientes: 58.

 

a) LDI R20, 0x54 LDI  R25   0xC 4 ADD R20, R25  ,

b)

LDI LDI  ADD

R23, 0 R16   0x 0xFF FF R23, R16  ,

LDI R30, 0xFF R18   0x 0x05 LDI  05 ADD R30, R18  ,

c)

59.  Escriba un programa simple en el que el valor 0x55 es sumado 5 veces. 59. 

LDI R16, 0X55 LDI R17, 0X55 LDI R18, 0X55 LDI R19, 0X55 ADD R16, R17 (0X55 + 0X55) = 0X110 ADD R18, R19 (0X55 + 0X55) = 0X110 ADD R16, R18 (0X110 + 0X110) = 0X220 LDI R20, 0X55 ADD R20, R16 (0X220 + 0X55) = 0X275 60.  Indique el valor (en hexadecimal) utilizado para cada uno de los siguientes datos: 60.  .EQU  .EQU  .EQU  .EQU  .EQU  .EQU  .EQU  .EQU  .EQU  .EQU  .EQU  .EQU 

myDato1   myDato2   myDato3   myDato4   myDato5   myDato6   myDato7   myDato8   myDato9   myDato10   myDato11   myDato12  

=  =  =  =  =  =  =  =  =  =  =  = 

55 98

=37HEX =62HEX =62HEX  

'G'

=47HEX 

0x50 = 50HEX  200 =C8HEX   'A'

= 41HEX 

0xAA = AAHEX  255 = FF HEX   0B10010000 = B90 HEX   0b01111110 = 0 HEX   10 = A   15 = F  

 

 

  61. Muestre un código simple para cargar el valor $11 en las ubicaciones $60 – $65, sumarlos y colocar el resultado en R29 a medida que se suman los valores. Utilizar la directiva .EQU para

asignar nombres a lasubicaciones $60 –$65.

.EQU Registro1 = 0x60 .EQU Registro2 = 0x61 .EQU Registro3 = 0x62 .EQU Registro4 = 0x63 .EQU Registro5 = 0x64 .EQU Registro6 = 0x65 LDI R19, 0X11 STS Registro1, R19 STS Registro2, R19 STS Registro3, R19 STS Registro4, R19 STS Registro5, R19 STS Registro6, R19 LDS R29, Registro1 LDS R30, Registro2 LDS R16, Registro3 LDS R17, Registro4 LDS R18, Registro5 LDS R31, Registro6 ADD R29, R30 ADD R29, R16 ADD R29, R17 ADD R29, R18 ADD R29, R31 ; -(OBTENGO EL VALOR DE 0X66 AL HABER SUMADO LOS REGISTROS Y GUARDO EL VALOR EN R29) 62.   Un programador pone el primer código de operación en la dirección $100. ¿Qué sucederá 62.

cuando se encienda el microcontrolador?

Puede provocar un DELAY En al inicio del programa

 

 

63.   Encuentre el número de bytes que ocupa cada una de las siguientes instrucciones: 63. instrucciones:

a)

b) c) d) e) f)

g) h)

LDI  LDI   ADD  ADD   LDI 

R19, 0x5  R30, $9F  R20, R21  R22, R20  R18, 0x41  LDI  R28, 20  ADD  R1, R3  JMP 

ADD ocupa 2 bytes LDI ocupa 2 bytes JMP ocupa 4 bytes 64.   Escriba un programa para colocar el número de su ID de estudiante en la ubicación de 0x100 de 64.

la RAMinterna RAMinterna del AVR.

MI ID ES A00103781 .EQU A = 0X41 .EQU 0 = 0X30 .EQU 0 = 0X30 .EQU 1 = 0X31 .EQU 0 = 0X30 .EQU 3 = 0X33 .EQU 7 = 0X37 .EQU 8 = 0X38 .EQU 1 = 0X31 LDS R20, 0X41 LDS R21, 0X30 LDS R22, 0X30 LDS R23, 0X31

 

LDS R24, 0X30 LDS R25, 0X33 LDS R26, 0X37 LDS R27, 0X38 LDS R28, 0X31 STS 0X100, R20 STS 0X101, R21 STS 0X102, R22 STS 0X103, R23 STS 0X104, R24 STS 0X105, R25 STS 0X106, R26 STS 0X107, R27 STS 0X108, R28

65.   Encuentre la dirección de la última ubicación de la ROM de programa para cada uno de los 65.

MCUsiguientes: a) a)   AVR con 32 KB b) b)   AVR con 8 KB c) c)   AVR con 64 KB d) d)   AVR con 16 KB e)  AVR con 128 KB 66.   Muestra los valores más bajo y alto (en hexadecimal) que puede tomar el contador del 66.

programaATmega32. 67.   Asuma que un AVR tiene $7FFF como la dirección de la última ubicación de su ROM de programa. 67. ¿Cuál el tamaño de la ROM de ese AVR?

Tiene una ROM de 32K 68.  Encuentre el tamaño de la ROM de programa en K para el AVR con los siguientes rangos de 68.  direcciones:

d) $0000 - $1FFF

8k  8k  

f) f)   $0000 - $3FFF

16K  

g) g)   $0000 - $7FFF

32K  

h) h)   $0000 - $FFFF

64K  

 

  i)  i)  $0000 - $1FFFF

128K  

 j)  j)   $00000 - $3FFFF

256K  

k)  k)  $00000 - $FFF

4K  

l)  l)  $00000 - $1FF

0.5K  

69.  ¿Qué ancho tiene la ROM del programa en el AVR? 69. 

16 BITS 70.   ¿Qué ancho tiene el bus de datos entre la CPU y la ROM de programa en el AVR? 70. 71.  En la instrucción "LDI R21,K", explique por qué el valor K no puede ser mayor que 255. 71. 

Por la limitación que impone el formato de la instrucción 72.   $0C01 es el código de máquina para la instrucción 72.

(LDI, STS, JMP, ADD).

73.  En la instrucción “STS memLoc, R22”, explique cuál es el tamaño de la instrucción 73.  i nstrucción y porqué

permitecubrir todo el rango de la memoria de datos del chip AVR.

Es de 32 bit y esta instrucción permite cubrir todo el rango de la memoria ya que su operando va desde 0 ≤ r ≤ 31, 0 ≤ k ≤ 65535  74.   En la instrucción “LDS Rd, memLoc”, explique cuál es el tamaño de la instrucción y porqué 74.

permiteacceder a toda la memoria de datos del AVR.

Es de 32 bit y esta instrucción permite cubrir todo el rango de la memoria ya que su operando va desde 0 ≤ r ≤ 31, 0 ≤ k ≤ 65535  75.   Explique cómo la instrucción "JMP addr" puede cubrir todo el espacio de direcciones de 4M del 75. AVR.

Porque esta Salta a una dirección dentro de toda la memoria de programa de 4M (palabras). Contiene 3 ciclos del reloj y su operando va 0 ≤ k < 4M 

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF