programación multitarea en microcontroladores avr de 8 bits
DESCRIPTION
La programación multitarea permite atender dos o mas procesos de forma concurrente o simultánea. En esta charla se mostrará ejemplos sencillos de como implementar este tipo de códigos utilizando ANSI C en microcontroladores AVR de 8bits, así como buenas prácticas de programación para su implementación. La platica está dirigida a un público básico e intermedio que haya programado en lenguaje C y conozca los microcontroladores de 8bits.TRANSCRIPT
PROGRAMACIÓN MULTITAREA (MULTITASKING) EN
MICROCONTROLADORES AVR DE 8 BITS.
HAZUR SOCCONINI ALVARADOUNIVERSIDAD AUTÓNOMA METROPOLITNA
XOCHIMILCO
1/20
CONCEPTOS• THREAD: HILO, PROCESO INDIVIDUAL EJECUTANDOSE EN UN
PROGRAMA• UN PROGRAMA DE FLUJO ÚNICO O MONO-HILVANADO (SINGLE-
THREAD) UTILIZA UN ÚNICO FLUJO DE CONTROL (THREAD) PARA CONTROLAR SU EJECUCIÓN.
• TIEMPO COMPARTIDO COMPARTIR DE FORMA CONCURRENTE UN RECURSO COMPUTACIONAL (TIEMPO DE EJECUCIÓN EN LA CPU, USO DE LA MEMORIA, ETC.) ENTRE MUCHOS USUARIOS POR MEDIO DE LAS TECNOLOGÍAS DE MULTIPROGRAMACIÓN Y LA INCLUSIÓN DE INTERRUPCIONES DE RELOJ POR PARTE DEL SISTEMA.
2/20
CONCEPTOS
• TIMER: TEMPORIZADOR• INTERRUPCIONES: COMPARTIR DE FORMA CONCURRENTE
UN RECURSO COMPUTACIONAL (TIEMPO DE EJECUCIÓN EN LA CPU, USO DE LA MEMORIA, ETC.) ENTRE MUCHOS USUARIOS POR MEDIO DE LAS TECNOLOGÍAS DE MULTIPROGRAMACIÓN Y LA INCLUSIÓN DE INTERRUPCIONES DE RELOJ POR PARTE DEL SISTEMA.
3/20
PROGRAMAS DE FLUJO ÚNICO• UN PROGRAMA DE FLUJO ÚNICO O MONO-HILVANADO (SINGLE-
THREAD) UTILIZA UN ÚNICO FLUJO DE CONTROL (THREAD) PARA CONTROLAR SU EJECUCIÓN. MUCHOS PROGRAMAS NO NECESITAN LA POTENCIA O UTILIDAD DE MÚLTIPLES FLUJOS DE CONTROL.
• SIN NECESIDAD DE ESPECIFICAR EXPLÍCITAMENTE QUE SE QUIERE UN ÚNICO FLUJO DE CONTROL, MUCHOS DE LOS APPLETS Y APLICACIONES SON DE FLUJO ÚNICO.
4/20
TIPOS DE PROCESAMIENTO
• EN SERIE O SECUENCIAL• POR LOTES• MULTIPROGRAMACIÓN
5/20
¿QUÉ ES MULTITASKING?
6/20
Fuente: Milan Milenkovic,Sistemas Operativos
7/20
MICROCONTROLADOR
8/20
9/20Interrupciones
Registros
Unidad de Control
Buses
Periféricos
PROGRAMANDO CÓDIGO EFICIENTE EN ANSI C
10/20
COMPILADOR CARQUITECTURA AVRSET DE INSTRUCCIONES32 REGISTROS
PUNTEROS 24 BITS
EFICIENCIA EN 8 BITS (ATMEGA16/32)• LOS PUNTEROS SIRVEN PARA ACCEDER A DATOS ALMACENADOS EN LA MEMORIA FLASH DE PROGRAMA (ESTOS DATOS SON SOLO DE LECTURA).
• MANEJANDO DATOS DE 16 BITS, SUMA Y RESTA INMEDIATA (ADIW, SBIW).
• OPERACIONES ARITMÉTICAS Y DE COMPARACIÓN CON VALORES DE 16 BITS (2 INSTRUCCIONES Y 2 CICLOS DE RELOJ).
• ANÁLOGO SE PUEDEN REALIZAR OPERACIONES ARITMÉTICAS Y DE COMPARACIÓN CON DATOS DE 32 BITS (4 INSTRUCCIONES Y 4 CICLOS DE RELOJ).
11/20
12/20
13/20
char *pointer1 = &table[0];
char *pointer2 = &table[49];
*pointer1++ = *- -pointer2;
LD R16,-Z ;predecrementa el puntero Z y carga datoST X+,R16 ;almacena dato y pos-incrementa
ANSI C
Lenguaje Ensamblador
VS2 ciclos de reloj e instrucciones de una sola palabra
14/20
15/20
16/20
17/20Sistema de Desarrollo basando en puerto JTAG con programador AVR DRAGON
PRUEBA MULTITASTING ATMEGA 32
• TAREA 1. SIRENA• TAREA 2. LED
BASCULANTE• TAREA 3. DESTELLO
18/20
19/20
y el código?
20/20
@HAZUR_
HAZUR84
HAZUR SOCCONINI ALVARADO
GRACIAS!HAZUR84