Caution
Veo a todos los alumnos de Computadores de Ingeniería Informática de la URV usar mi listado de problemas pero nadie starreando ⭐ este repositorio (poner una estrella, el equivalente al like en GitHub). Si sigo viendo tráfico de este repositorio pero ningún tipo de aportación (aportar soluciones, proponer correcciones o mejoras, añadir comentarios o, como mínimo, poner una estrella) voy a terminar por ocultarlo y solamente yo tendré acceso. No estoy pidiendo dinero, poner estrella es totalmente gratis, pero sí creo que merezco reconocimiento por parte de cada persona que usa mi repositorio.
Repositorio de soluciones a los problemas de la asignatura de Computadores de la universidad Rovira i Virgili del grado de Ingeniería Informática.
Estos problemas son ejercicios de programación en los lenguajes C y ensamblador ARM en los que se debe sincronizar uno o más periféricos con las CPUs de la Nintendo DS usando interrupciones u otros mecanismos de sincronismo.
Nº | Enunciado | Año | Convocatoria | Estado solución | Acceso solución | Programa principal | RSI | Función Assembler | Requerimiento especial |
---|---|---|---|---|---|---|---|---|---|
1 | Reloj de tiempo real 👁️ 📥 | - | - | 💖 | 👁️ 📥 📺 | main.c 👁️ 📥 |
RSI_timer0.s 👁️ 📥 |
capturar_tiempo.s 👁️ 📥 |
- |
2 | Detector de inclinación 👁️ 📥 | - | - | 💚 | 👁️ 📥 📺 | main.c 👁️ 📥 |
RSI_timer0.s 👁️ 📥 |
convertir_aceleracion.s 👁️ 📥 |
- |
3 | Generador de vibración 👁️ 📥 | - | - | 💖 | 👁️ 📥 | main.c 👁️ 📥 |
RSI_timer0.s 👁️ 📥 |
generar_vibracion.s 👁️ 📥 |
- |
4 | Piano polifónico 👁️ 📥 | - | - | 🖤 | 👁️ 📥 | - | - | - | - |
5 | Generador de sonido 👁️ 📥 | - | - | 💖 | 👁️ 📥 | main.c 👁️ 📥 |
RSI_timer0.s 👁️ 📥 |
activar_nota.s 👁️ 📥 |
- |
6 | Micrófono 👁️ 📥 | - | - | 🖤 | 👁️ 📥 | - | - | - | - |
7 | Servomotor 👁️ 📥 | - | - | 🖤 | 👁️ 📥 | - | - | - | - |
8 | Display LCD 👁️ 📥 | - | - | 💚 | 👁️ 📥 | main.c 👁️ 📥 |
RSI_timer0.s 👁️ 📥 |
insertar_strings.s 👁️ 📥 |
Variables globales en C main.c 👁️ 📥 |
9 | Paddles 👁️ 📥 | 2011-12 | 1ª Conv. | 💖 | 👁️ 📥 | main.c 👁️ 📥 |
RSI_timer0.s 👁️ 📥 |
detectar_sentido.s 👁️ 📥 |
- |
10 | Espirómetro 👁️ 📥 | 2011-12 | 2ª Conv. | 💖 | 👁️ 📥 | main.c 👁️ 📥 |
RSI_timer0.s 👁️ 📥 |
convertir_punto.s 👁️ 📥 |
- |
11 | Lector de códigos de barras 👁️ 📥 | 2012-13 | 1ª Conv. | 💖 | 👁️ 📥 📺 | main.c 👁️ 📥 |
RSI_lector.s 👁️ 📥 |
normalizar_tiempo.s 👁️ 📥 |
- |
12 | Sensor de distancia 👁️ 📥 | 2013-14 | 1ª Conv. | 💚 | 👁️ 📥 | main.c 👁️ 📥 |
RSI_Ping.s 👁️ 📥 |
calcular_distancia.s 👁️ 📥 |
- |
13 | Tensiómetro 👁️ 📥 | 2013-14 | 2ª Conv. | 🖤 | 👁️ 📥 | - | - | - | - |
14 | Teclado numérico 👁️ 📥 | 2014-15 | 1ª Conv. | 💖 | 👁️ 📥 | main.c 👁️ 📥 |
RSI_timer0.s 👁️ 📥 |
descodificar_tecla.s 👁️ 📥 |
- |
15 | Display de LEDs 👁️ 📥 | 2014-15 | 2ª Conv. | 🖤 | 👁️ 📥 | - | - | - | - |
16 | Propeller display 👁️ 📥 | 2015-16 | 1ª Conv. M | 💖 | 👁️ 📥 | main.c 👁️ 📥 |
RSI_timer0.s 👁️ 📥 |
transferir_radio.s 👁️ 📥 |
Variables globales en C main.c 👁️ 📥 |
17 | Velocímetro para bicicletas 👁️ 📥 | 2015-16 | 1ª Conv. T | 💛 | 👁️ 📥 | main.c 👁️ 📥 |
RSI_timer0.s 👁️ 📥, RSI_sensor.s 👁️ 📥 |
Variables globales en C main.c 👁️ 📥 |
|
18 | Luz LED regulada por PWM 👁️ 📥 | 2015-16 | 2ª Conv. | 🖤 | 👁️ 📥 | - | - | - | - |
19 | Anemómetro electrónico 👁️ 📥 | 2016-17 | 1ª Conv. M | 💖 | 👁️ 📥 | main.c 👁️ 📥 |
RSI_timer0.s 👁️ 📥 |
inicializar_timer0_01.s 👁️ 📥 |
Variables globales en C main.c 👁️ 📥 |
20 | Motor de tracción 👁️ 📥 | 2016-17 | 1ª Conv. T | 💖 | 👁️ 📥 | main.c 👁️ 📥 |
RSI_timer0.s 👁️ 📥 |
- | Variables globales en C main.c 👁️ 📥, rutina principal de gestión de interrupciones intr_main.s 👁️ 📥 |
21 | Emisor IR 👁️ 📥 | 2016-17 | 2ª Conv. | 🖤 | 👁️ 📥 | - | - | - | - |
22 | Ascensor con memoria 👁️ 📥 | 2017-18 | 1ª Conv. M | 💖 | 👁️ 📥 | main.c 👁️ 📥 |
RSI_ascensor.s 👁️ 📥 |
siguiente_movimiento.s 👁️ 📥 |
Variables globales en C main.c 👁️ 📥 |
23 | Matriz 8x8 LEDs 👁️ 📥 | 2017-18 | 1ª Conv. T | 💖️ | 👁️ 📥 | main.c 👁️ 📥 |
RSI_timer0.s 👁️ 📥, RSI_timer1.s 👁️ 📥 |
- | Variables globales en C main.c 👁️ 📥 |
24 | Boca artificial 👁️ 📥 | 2017-18 | 1ª Conv. E | 🖤 | 👁️ 📥 | main.c 👁️ 📥 |
RSI_timer0.s 👁️ 📥 |
siguiente_palabra.s 👁️ 📥 |
- |
25 | Disparador de cámara réflex 👁️ 📥 | 2017-18 | 2ª Conv. | 💚 | 👁️ 📥 | main.c 👁️ 📥 |
RSI_timer1.s 👁️ 📥, RSI_timer2.s 👁️ 📥 |
- | - |
26 | Lectura morse 👁️ 📥 | 2018-19 | 1ª Conv. M | 💖 | 👁️ 📥 | main.c 👁️ 📥 |
RSI_timer0.s 👁️ 📥 |
- | Variables globales en C main.c 👁️ 📥 |
27 | Display numérico 4 dígitos 👁️ 📥 | 2018-19 | 1ª Conv. T | 💖 | 👁️ 📥 | main.c 👁️ 📥 |
RSI_timer0.s 👁️ 📥 |
- | Variables globales en C main.c 👁️ 📥 |
28 | Lector de hojas de marcas 👁️ 📥 | 2018-19 | 1ª Conv. E | 💖 | 👁️ 📥 | main.c 👁️ 📥 |
RSI_timer0.s 👁️ 📥 |
- | Variables globales en C main.c 👁️ 📥 |
29 | Envío de datos por RS-232-E 👁️ 📥 | 2018-19 | 2ª Conv. | 🖤 | 👁️ 📥 | - | - | - | - |
30 | Frecuencia cardíaca 👁️ 📥 | 2019-20 | 1ª Conv. M | 🖤 | 👁️ 📥 | - | - | - | - |
31 | Joystick analógico 👁️ 📥 | 2019-20 | 1ª Conv. T | 🖤 | 👁️ 📥 | - | - | - | - |
32 | Caudalímetros 👁️ 📥 | 2019-20 | 2ª Conv. | 🖤 | 👁️ 📥 | - | - | - | - |
33 | Tiempo de tránsito del pulso 👁️ 📥 | 2020-21 | 1ª Conv. | 🖤 | 👁️ 📥 | - | - | - | - |
34 | Combinaciones de color 👁️ 📥 | 2020-21 | 2ª Conv. | ❤️ | 👁️ 📥 | main.c 👁️ 📥 |
RSI_timer0.s 👁️ 📥 |
- | Variables globales en C main.c 👁️ 📥 |
35 | Metrónomo digital 👁️ 📥 | 2021-22 | 1ª Conv. M | 💚 | 👁️ 📥 | main.c (provisto por el enunciado) 👁️ 📥 |
RSI_VBlank.s 👁️ 📥 |
- | Expresión del cálculo de la fracción en lenguaje C main.c 👁️ 📥, razonamiento de si activar_beat() se debe llamar desde el programa principal o desde la RSI 👁️ 📥 |
36 | Control de telescopio 👁️ 📥 | 2021-22 | 1ª Conv. T | ❤️ | 👁️ 📥 | main.c (provisto por el enunciado) 👁️ 📥 |
RSI_timer1.s 👁️ 📥 |
- | Expresión del cálculo de los divisores de frecuencia a, b y c en lenguaje C main.c 👁️ 📥 |
37 | Escritura Morse 👁️ 📥 | 2021-22 | 2º Conv. | 💛️ | 👁️ 📥 📺 | main.c (provisto por el enunciado) 👁️ 📥 |
RSI_timer0.s 👁️ 📥 |
- | Expresión del cálculo de los divisores de frecuencia a, b y c en lenguaje C main.c 👁️ 📥 |
38 | Teléfono Vintage 👁️ 📥 | 2022-23 | 1ª Conv. M | 💚 | 👁️ 📥 | main.c 👁️ 📥 |
RSI_sensor.s 👁️ 📥 |
capture_digit.s 👁️ 📥 |
Variables globales en C main.c 👁️ 📥 |
39 | Lanzamiento con electroimanes 👁️ 📥 | 2022-23 | 1º Conv. T | 🖤 | 👁️ 📥 | - | - | - | - |
Leyenda solución | Estado solución |
---|---|
🖤 | Sin solución |
❤️ | Incompleta |
🧡 | Con incorrecciones |
💛 | Correcta |
💚 | Optimizada |
💖 | Del profesor |
Leyenda | Significado |
---|---|
📺 | Link al vídeo de solución |
📥 | Link de descarga del enunciado |
Cada problema tiene una carpeta en la raíz de este repositorio. El nombre de la carpeta es el número de problema, el cual puede ser encontrado para cada problema según la tabla de la sección anterior.
Dentro de la carpeta de cada problema encontramos varios elementos:
- El enunciado del problema correspondiente en un archivo
.pdf
con el mismo nombre que el número de problema. Esto es útil, ya que hace el enunciado visible, descargable y accesible directamente a través de un navegador, usando la interfaz web de GitHub. Por ejemplo, el enunciado del problema 1 puede verse usando este enlace https://github.com/AleixMT/Problemas-Computadores/blob/master/Soluciones/01/01.pdf o descargarse usando este otro https://github.com/AleixMT/Problemas-Computadores/raw/master/Soluciones/01/01.pdf. Lo análogo con cualquier otro archivo en el repositorio. Un enlace para visualizar el enunciado de cada problema está vinculado al texto del nombre del problema en la tabla anterior. Haciendo clic en el nombre del problema se te redirigirá al enunciado. Haciendo clic en el emoji 📥 se descargará el enunciado. - Apuntes para la solución en un archivo
README.md
: Se usan para explicar cualquier concepto relevante de la solución. - Archivos de la solución. Si el problema está resuelto también podremos encontrar los archivos de la solución.
Según lo que pida el problema, la solución consiste en uno o más archivos con extensión
.c
(si contienen código C) o.s
(si contienen código ensamblador). Cada archivo.c
o.s
tiene el nombre de la única rutina que implementa. - Carpetas con soluciones alternativas: Por motivos didácticos puede existir más de una solución tal y como se
define en el punto anterior. Esta solución será visible como una carpeta con el nombre
alternativa_N
, dondeN
es el número de solución, empezando a contar por 1. Esta carpeta contendrá los Archivos de la solución y los Apuntes para la solución en un archivoREADME.md
, con las mismas características que se definen en los puntos anteriores.
Existen vídeos de las resoluciones de los problemas paso por paso. Estos pueden encontrarse pinchando en los emojis de televisión (📺) en la última columna de la tabla de la sección anterior. Cada emoji redirige a un vídeo de youtube con la resolución correspondiente.
Los códigos de las soluciones de cada problema són públicos y gratuitos. Los vídeos de las resoluciones de cada problema son de pago. Actualmente todavía se está automatizando este servicio, por lo que si quieres adquirirlos deberás contactarnos directamente y poseer una cuenta de correo electrónico de Gmail donde recibirás los vídeos.
Si usas estas soluciones y quieres que los que vengan detrás de ti también puedan disfrutar de ellos, puedes:
- ⭐ Dejar una estrella en este repositorio.
- 📣 Compartir este repositorio a quien le pueda interesar.
- 📤 Colaborar con tus propias soluciones usando una pull request.
- 💭 Proponer optimizaciones a las soluciones usando una pull request o abriendo un nuevo issue.c
- ☕ Hacer una pequeña donación a través de nuestro Buy Me A Coffee.
Para cualquier problema, duda, sugerencia, queja o comentario también puedes contactar con la dirección de correo electrónico [email protected].
Este repositorio ha sido creado como soporte para clases de repaso. Si estás interesad@ en estos servicios puedes unirte (sin compromiso) al grupo de WhatsApp pinchando aquí o al grupo de Discord pinchando aquí.
- Aleix Mariné-Tena (@AleixMT) ([email protected]): Autor, mantenedor, contribuidor y profesor.
- Santiago Romaní Also: Autor de los problemas.
- Arey Ferrero Ramos (@AreyFerreroRamos) ([email protected]): Contribuidor y profesor.
- Anna Julia (@annaju128): contribuidora y profesora.
- Sergio Arévalo (@sergioarevro) ([email protected]): Alumno colaborador.
- Isaac Chortó (@IsaacChortó): Alumno colaborador.