Atender eventos con interrupciones externas y escribir rutinas de servicio breves y seguras.
Usar variables volatile y secciones críticas para compartir datos entre la interrupción y el bucle principal.
Configurar temporizadores por hardware para generar bases de tiempo y muestreos regulares.
Comunicar dispositivos por I2C gestionando direcciones, escaneo del bus y resistencias de terminación.
Intercambiar datos por SPI con varios esclavos controlando las líneas de selección y el modo de reloj.
Guardar configuración y contadores en la EEPROM interna cuidando su número limitado de escrituras.
Contenido del curso
7 módulos · 32 clases en vídeo · práctica guiada en cada módulo
Módulo 1 · Límites del sondeo4 clases
Qué se pierde con delay y con lectura cíclica
Latencia y respuesta a eventos
Entorno y material del curso
Medir el tiempo de ciclo del programa
Módulo 2 · Interrupciones externas5 clases
attachInterrupt y tipos de flanco
Escribir una rutina de servicio correcta
volatile y acceso atómico a variables
Contador de pulsos de un encoder
Rebotes en una interrupción
Módulo 3 · Temporizadores5 clases
Temporizadores del microcontrolador
Interrupción periódica y base de tiempo
Muestreo regular de un sensor
Generación de señales con precisión
Convivencia con las librerías que usan temporizadores
Módulo 4 · Comunicación serie avanzada4 clases
Tramas, delimitadores y protocolo propio
Recepción no bloqueante por interrupción
Buffer circular para datos entrantes
Sumas de comprobación y detección de errores
Módulo 5 · Bus I2C5 clases
Funcionamiento del bus y direccionamiento
Escaneo de dispositivos conectados
Librería Wire: lectura y escritura de registros
Resistencias de terminación y longitud del bus
Varios dispositivos en el mismo bus
Módulo 6 · Bus SPI5 clases
Líneas del bus y modos de reloj
Selección de esclavo y varios dispositivos
Lectura de un sensor y de una memoria por SPI
Velocidad del bus y calidad de la señal
Comparación práctica entre I2C y SPI
Módulo 7 · EEPROM y proyecto4 clases
EEPROM interna: lectura y escritura
Estructuras de configuración persistente
Desgaste de celdas y reparto de escrituras
Proyecto: registrador con eventos por interrupción y datos en bus
Requisitos
Experiencia programando Arduino con entradas, salidas, PWM y comunicación serie.
Programación en C o C++ a nivel de funciones, punteros básicos y tipos de datos.
Nociones de electrónica digital: niveles lógicos, señales de reloj y buses.
Placa Arduino y varios módulos con interfaz I2C y SPI para las prácticas.
Descripción
Con delay y lectura por sondeo se llega hasta cierto punto. Cuando hay que contar pulsos de un encoder, atender un pulsador mientras se refresca una pantalla o leer varios sensores por un mismo bus, el programa empieza a perder eventos y a comportarse de forma irregular sin que el código parezca equivocado.
Este curso cambia el modelo de programación. Introduce interrupciones externas y por temporizador, explica por qué una rutina de servicio debe ser corta y qué problemas causa compartir variables sin precaución, y sustituye las esperas activas por bases de tiempo por hardware. Después entra en los buses: I2C con sus direcciones y su escaneo, y SPI con sus modos y su selección de esclavo.
El último bloque añade almacenamiento persistente en EEPROM para configuración y contadores, con sus límites de escritura. Con esto queda cubierta la base para los cursos de bajo consumo y depuración, de ampliación de hardware con expansores y conversores, y para escribir librerías propias reutilizables.
¿Para quién es este curso?
Ingeniería que desarrolla prototipos y necesita respuesta determinista a eventos externos.
Perfiles de desarrollo que llegan del software de alto nivel y se encuentran con los buses por primera vez.
Profesorado de FP que imparte módulos de sistemas electrónicos y quiere prácticas de I2C y SPI bien fundadas.
Disponible
Contenido ya grabado y publicado en el campus. Puedes empezar en cuanto te inscribas.
Este sitio web utiliza cookies propias y de terceros para recopilar información con finalidad técnica. No se recaban ni ceden datos de carácter personal sin tu consentimiento. Más información en la política de cookies.