Problema #1: (5%) Indique cuáles de las siguientes afirmaciones referentes a la revolución industrial son correctas
Problema #2: (5%) ¿Cuáles de las siguientes afirmaciones referentes a las memorias FLASH son ciertas?
Problema #3: (10%) ¿Cuáles de las siguientes afirmaciones referentes al bloque PWM del AVR ATmega328P son ciertas?
Problema #4: (5%) ¿Cuáles de las siguientes afirmaciones referentes a las memorias EEPROM son ciertas?
Problema #5: (5%) ¿Cuáles de las siguientes afirmaciones referentes a las memorias SRAM son ciertas?
Problema #6: (15%) Dado el siguiente código en lenguaje C que genera una señal PWM, ¿cuál de las siguientes afirmaciones son correctas?
Problema #7: (15%) Dado el siguiente código en lenguaje C que usa el bloque ADC para digitalizar señales analógicas, ¿cuál de las siguientes afirmaciones son correctas?
Problema #8: (5%) La siguiente gráfica corresponde al diagrama de tiempo al transmitir un dato usando el protocolo de comunicación RS-232. Indicar cuales de las siguientes afirmaciones son correctas
Problema #9: (10%) El siguiente bloque convertidor analógico digital (ADC) de 8 bits de resolución, se tiene un voltaje de referencia de 5Vcc. ¿cuáles de las siguientes afirmaciones son correctas?
Problema #10: (25%) Dado el siguiente código en lenguaje C modificado de Arduino que utiliza conceptos de máquinas de estado, graficar el diagrama de estados que represente el funcionamiento del código.
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN SISTEMAS EMBEBIDOS, 1er Parcial (2020 PAO 2)
1. vasanza
SISTEMAS EMBEBIDOS
EVALUACIÓN 1P
Fecha: 2020/12/03 PAO2 2020-2021
Nombre: _________________________________________________ Paralelo: __________
Problema #1: (5%)
Indique cuáles de las siguientes afirmaciones referentes a la revolución industrial son correctas:
a) La primera revolución industrial se basó en la introducción de equipos de producción mecánicos
impulsados por agua y la energía de vapor.
b) La segunda revolución industrial se basó en el uso de electrónica e informática (IT) para promover
la producción automatizada.
c) La tercera revolución industrial se basó en la producción en masa que se alcanza gracias al concepto
de división de tareas y el uso de energía eléctrica.
d) La cuarta revolución industrial se basa en el uso de sistemas físicos cibernéticos (Cyber Physical
Systems - CPS)
Problema #2: (5%)
¿Cuáles de las siguientes afirmaciones referentes a las memorias FLASH son ciertas?
a) Modificable en tiempo de ejecución
b) Modificable en tiempo de compilación
c) La única forma de acceder a los datos almacenados es usando punteros
d) Se puede especificar las direcciones de almacenamiento
Problema #3: (10%)
¿Cuáles de las siguientes afirmaciones referentes al bloque PWM del AVR ATmega328P son ciertas?
a) El registro Data Direction Register (DDRX), donde X puede ser B, C o D, sirve para configurar
como salida los pines específicos de cada puerto. Los pines que generarán señales PWM deberán
ser configurados como salida.
b) En el registro TCCRXA donde X puede ser 0,1 o 2; los bits 7 y 6 nos permiten configurar el
funcionamiento de la señal PWMA em modo invertida o no invertida.
c) En el registro TCCRXA donde X puede ser 0,1 o 2; los bits 5 y 4 nos permiten configurar el
funcionamiento de la señal PWMA em modo invertida o no invertida.
d) En el registro TCCRXA donde X puede ser 0,1 o 2; los bits 7 y 6 nos permiten configurar el
funcionamiento de la señal PWMB em modo invertida o no invertida.
e) En el registro TCCRXA donde X puede ser 0,1 o 2; los bits 5 y 4 nos permiten configurar el
funcionamiento de la señal PWMB em modo invertida o no invertida.
f) En el registro TCCRXA donde X puede ser 0,1 o 2; los bits 3 y 2 nos permiten configurar el modo
de generar la señal PWM entre onda completa y modo rápido.
g) En el registro TCCRXA donde X puede ser 0,1 o 2; los bits 1 y 0 nos permiten configurar el modo
de generar la señal PWM entre onda completa y modo rápido.
h) En el registro TCCRXB donde X puede ser 0,1 o 2; los bits 2, 1 y 0 nos permiten seleccionar el
prescaler que dividirá la frecuencia de la CPU del microcontrolador para determinar la frecuencia
con la que incrementa el timer.
i) En el registro TCCRXB donde X puede ser 0,1 o 2; los bits 5 y 4 nos permiten seleccionar el
prescaler que dividirá la frecuencia de la CPU del microcontrolador para determinar la frecuencia
con la que incrementa el timer.
j) El prescaler seleccionado con el registro TCCRXB puede ser: no prescaling, /8, /64, /256 y /1024.
Este valor permite determinar el periodo de la señal PWM con la fórmula:
Tpwm=((MaxTimerX+1)*Prescaler)/Fcpu.
2. vasanza
Problema #4: (5%)
¿Cuáles de las siguientes afirmaciones referentes a las memorias EEPROM son ciertas?
a) No presenta volatilidad de datos al apagar el microcontrolador
b) Es modificable en tiempo de compilación
c) No posee ciclos de lectura y escritura limitados
d) Para usar los datos almacenados, primero se requiere copiarlos en memoria SRAM
e) Direcciones de memoria no usadas están cargadas con 0x00 por default
Problema #5: (5%)
¿Cuáles de las siguientes afirmaciones referentes a las memorias SRAM son ciertas?
a) Memoria preferiblemente usada para almacenar grandes textos y datos no modificables
b) Memoria preferiblemente usada para almacenar datos de configuración no volátiles
c) Direcciones de memoria no usadas están cargadas con 0xFF por default
d) Volatilidad de datos al apagar el microcontrolador
e) Modificable en tiempo de ejecución
Problema #6: (15%)
Dado el siguiente código en lenguaje C que genera una señal PWM, ¿cuál de las siguientes afirmaciones
son correctas?
a) El código no le hace falta nada, esta listo para ser ejecutado correctamente.
b) Al código le hace falta configurar como salida el Pin PD6, usando el siguiente valor DDRD |=
0b01000000;
c) Al código le hace falta configurar como salida el Pin PD5, usando el siguiente valor DDRD |=
0b00100000;
d) La señal PWM generada con el código está configurada como: modo invertido, modo rápido, No
prescaling y con una frecuencia de CPU de 16Mhz el periodo de la señal PWM es de 0.000016 Seg.
e) Para que la señal PWM generada tenga tenga un duty cycle o ciclo de trabajo del 50%, el valor que
se debe cargar en el OCR0B debe ser aproximadamente 127.
f) Para que la señal PWM generada tenga tenga un duty cycle o ciclo de trabajo del 100%, el valor
que se debe cargar en el OCR0A debe ser aproximadamente 255.
g) Para que la señal PWM generada tenga tenga un duty cycle o ciclo de trabajo del 100%, el valor
que se debe cargar en el OCR0A debe ser aproximadamente 0.
h) Para que la señal PWM generada tenga tenga un duty cycle o ciclo de trabajo del 0%, el valor que
se debe cargar en el OCR0A debe ser aproximadamente 255.
i) Para que la señal PWM generada tenga tenga un duty cycle o ciclo de trabajo del 0%, el valor que
se debe cargar en el OCR0A debe ser aproximadamente 0.
#include <avr/io.h>
#include <util/delay.h>
int main(void){
TCCR0A = 0b11100011;
TCCR0B = 0b00000001;
OCR0A = 0;
while(1){
do{
OCR0A++;
_delay_ms (10);
}while(OCR0A<255);
_delay_ms (2000L);
return 0;
}
3. vasanza
Problema #7: (15%)
Dado el siguiente código en lenguaje C que usa el bloque ADC para digitalizar señales analógicas, ¿cuál
de las siguientes afirmaciones son correctas?
a) El código no le hace falta nada, está listo para ser ejecutado correctamente.
b) Los bits 7 y 6 del registro ADMUX están seteados para usar como voltaje de referencia la interna
de 1.1 V.
c) Los bits 7 y 6 del registro ADMUX están seteados para usar como voltaje de referencia la
alimentación del microcontrolador (AVcc).
d) El bit 5 del registro ADMUX está configurando una justificación hacia la izquierda. Por tanto, en
el ADCH estarán los ocho bits más significativos de la digitalización y en los dos bits más
significativos del ADCL estarán los dos bits menos significativos de la digitalización.
e) El bit 5 del registro ADMUX está configurando una justificación hacia la derecha. Por tanto, en los
dos bits menos significativos del ADCH estarán los dos bits más significativos de la digitalización
y en el ADCL estarán los ocho bits menos significativos de la digitalización.
f) Los bits del 3-0 del registro ADMUX permiten seleccionar el canal analógico con el que se hará la
digitalización de la señal analógica. En el código se está seleccionando el ADC0.
g) Los bits 2-0 del registro ADCSRA sirven para elegir el pre-escalador a utilizar para obtener la
frecuencia de trabajo del convertidor. En el código, el prescaler seleccionado es 32.
h) Los bits 2-0 del registro ADCSRA sirven para elegir el pre-escalador a utilizar para obtener la
frecuencia de trabajo del convertidor. En el código, el prescaler seleccionado es 128.
i) El bit 7 del registro ADCSRA sirve para activar o desactivar el bloque convertidor analógico a
digital.
j) El bit 6 del registro ADCSRA permite iniciar la conversión y se pondrá automáticamente en cero
cuando el bloque ADC termine de hacer la conversión.
#include <avr/io.h>
#include <util/delay.h>
int main()
{
DDRD = 0XFF; //1-out, 0-in
DDRB |= ((1<<0)|(1<<1)); //0Bxxxxxx11
ADMUX = 0B01000001;
ADCSRA = 0B00000101;
ADCSRB = 0B00000000;
DIDR0 = 0B00000010;
while (1)
{
ADCSRA = 0B11000101;
while(ADSC == 1);
ADCSRA = 0B00000101;
PORTD = ADCL;
PORTB = ADCH;
_delay_ms(200);
}
return 0;
}
4. vasanza
Problema #8: (5%)
La siguiente gráfica corresponde al diagrama de tiempo al transmitir un dato usando el protocolo de
comunicación RS-232. Indicar cuales de las siguientes afirmaciones son correctas:
a) El bloque ‘a’ representa el estado inicial de reposo TxD que está a ‘1’.
b) El bloque ‘b’ representa uno o dos bits de fin.
c) El bloque ‘c’ representa el Dato de 7 u 8 bits.
d) El bloque ‘d’ representa el Bit de inicio ‘0’.
e) El bloque ‘e’ representa el bit de Paridad Par / Paridad Impar / Sin bit de paridad.
Problema #9: (10%)
El siguiente bloque convertidor analógico digital (ADC) de 8 bits de resolución, se tiene un voltaje de
referencia de 5Vcc. ¿cuáles de las siguientes afirmaciones son correctas?
a) Con un voltaje de entrada (Vin) de 2,5 [V], la salida del convertidor ADC nos da un valor de 128.
b) Con un voltaje de entrada (Vin) de 2,5 [V], la salida del convertidor ADC nos da un valor de 255.
c) Si la salida del convertidor ADC es de 100, entonces el voltaje presente en la entrada (Vin) es 1,96
[V].
d) Si la salida del convertidor ADC es de 200 y si usamos un voltaje de referencia (Vref) de 10[V],
entonces el voltaje presente en la entrada (Vin) es 7,84 [V].
e) Si la salida del convertidor ADC es de 255 y si usamos un voltaje de referencia (Vref) de 10[V],
entonces el voltaje presente en la entrada (Vin) es 5 [V].
5. vasanza
Problema #10: (25%)
Dado el siguiente código en lenguaje C modificado de Arduino que utiliza conceptos de máquinas de estado,
graficar el diagrama de estados que represente el funcionamiento del código.
Respuesta:
//variables
int incomingByte = 0; char estado, estado_actual ='a', estado_siguiente='a';
//inicializar
void setup() {pinMode(8, OUTPUT); Serial.begin(9600);}
//funciones
void DecodificadorEstadoSiguiente(){
switch (estado_actual) {
case 'a': if(incomingByte=='1'){ estado_siguiente='b';} else{ estado_siguiente='f';} break;
case 'b': if(incomingByte=='2'){estado_siguiente='c';} else{ estado_siguiente='g';} break;
case 'c': if(incomingByte=='3'){estado_siguiente='d';} else{ estado_siguiente='h';} break;
case 'd': if(incomingByte=='4'){estado_siguiente='e';} else{ estado_siguiente='a';} break;
case 'e': estado_siguiente='a'; break;
case 'f': estado_siguiente='g'; break;
case 'g': estado_siguiente='h'; break;
case 'h': estado_siguiente='a'; break;
default: estado_siguiente='a'; break;
}
}
void MemoriaEstado(){
if(estado_siguiente!=estado_actual){ estado_actual=estado_siguiente;}
}
void DecodificadorSalida(){
if(estado_actual=='e'){ estado_siguiente='a'; digitalWrite(8,HIGH); delay(2000); } //output ON
else{ digitalWrite(8,LOW); }//output OFF
}
//main
void loop() {
if (Serial.available() > 0) {
incomingByte = Serial.read(); Serial.print("Digito ingresado: "); Serial.println(incomingByte);
DecodificadorEstadoSiguiente();//Deco. Est. Sig.
}
DecodificadorSalida();//Deco. Salida
MemoriaEstado();//Mem. Estado
}