Programación multitarea en microcontroladores avr de 8 bits.

Post on 13-Jun-2015

527 views 23 download

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 of Programación multitarea en microcontroladores avr de 8 bits.

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