La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

SISTEMAS ELECTRÓNICOS 3ºGIERM1 1. Introducción 2. Tipos de datos 3. Estructuras típicas de programación 4. Manejo de bits Tema 7. Programación de microcontroladores.

Presentaciones similares


Presentación del tema: "SISTEMAS ELECTRÓNICOS 3ºGIERM1 1. Introducción 2. Tipos de datos 3. Estructuras típicas de programación 4. Manejo de bits Tema 7. Programación de microcontroladores."— Transcripción de la presentación:

1 SISTEMAS ELECTRÓNICOS 3ºGIERM1 1. Introducción 2. Tipos de datos 3. Estructuras típicas de programación 4. Manejo de bits Tema 7. Programación de microcontroladores en C

2 Tradicionalmente, los MC se programaban en ensamblador – Código más específico ->optimizado – Más complejo de entender. – No transportable Lenguaje C: – Estructuras de programación más flexibles – Posibilidad de acceder a recursos en bajo nivel – Necesidad de adaptar los usos. Introducción SISTEMAS ELECTRÓNICOS 3ºGIERM2

3 Limitación de memoria de programa Gran limitación de memoria de datos Aritméticas de punto fijo y baja resolución No incorporan (nativas) instrucciones aritméticas complejas (multiplicación, división…) Necesidad de configuración de periféricos internos (acceso a registros) Específico de los Microcontroladores SISTEMAS ELECTRÓNICOS 3ºGIERM3

4 Evitar el uso de datos grandes – char mejor que int – int mejor que long – Evitar float Mejor usar constantes que variables – Más memoria de programa que de datos Mejor usar define que constantes – Direccionamiento directo Tipos de datos SISTEMAS ELECTRÓNICOS 3ºGIERM4

5 Variables locales: se usan sólo en la función. – No conservan el valor. – Normalmente, en la pila o registro interno Variables Globales: definidas fuera. – Intercambio de datos entre funciones – Posiciones fijas de memoria o registros Variables volatile: – Informar al compilador que pueden cambiar en una rutina de interrupción: posiciones fijas de memoria Modificador extern: – Variable definida en otro fichero Variables locales, globales y volátiles SISTEMAS ELECTRÓNICOS 3ºGIERM5

6 Resumen SISTEMAS ELECTRÓNICOS 3ºGIERM6 #define I_MAX 124//RAM:0 char A//RAM:1byte (0..255) unsigned int i;//RAM:2byte (0..64k) int corriente;//RAM:2byte (-32k..32k) long potencia;//RAM:4byte (0..4G) const char frase[]=“Tecla”; //RAM:0, FLASH:6bytes extern int semaf;//definida en otro fichero volatile char estado;// no optimizable

7 Programación orientada a bajo consumo: – MC apagado en reposo. – Minimizar tiempo encendido – Interrupciones de temporización / externas Bloque inicial de valores iniciales Estructura cíclica – Leer entradas – Cambiar estado/ calcular actuación – actuar sobre las salidas – volver al principio Estructuras de programación SISTEMAS ELECTRÓNICOS 3ºGIERM7

8 todo en el main() inicialización bucle while(1) No bajo consumo Estructura básica SISTEMAS ELECTRÓNICOS 3ºGIERM8 int main(void) { Grace_init(); //activar driver P2OUT&=~BIT0; P2OUT&=~BIT1; P2OUT|=BIT2; while(1) { if(!(P1IN&BIT2)){ P2OUT|=BIT3; P2OUT|=BIT1; }else { P2OUT&=~BIT3; P2OUT&=~BIT1; } return (0); }

9 Inicialización y paso a modo sleep Esperar a las interrupciones – Timer – Pines de E/S – Puertos de comunicaciones El código puede ir – En la interrupción (ojo con las prioridades) – En el main (variables semáforo) Programa basado en interrupciones SISTEMAS ELECTRÓNICOS 3ºGIERM9

10 Programa basado en una interrupción de timer Frecuencia de timer adaptada al proceso Mejor, código en la propia interrupción Programa en tiempo real SISTEMAS ELECTRÓNICOS 3ºGIERM10

11 Uso de la estructura switch/case En cada estado, calcular el siguiente y cambiar las salidas Puede ser continuo (asíncrono) o periódico (síncrono) Máquina de estado SISTEMAS ELECTRÓNICOS 3ºGIERM11 switch(estado) { case 1: if(Var1>LIM) estado=2; if(pin1==0) estado=3; P1OUT|=BIT2; break; case 2: … break; … }

12 Con frecuencia, quiero cambiar un bit de un registro – Poner a ‘1’ un pin de salida. – Leer si un pin de entrada es ‘1’ Uso de las funciones lógicas bit a bit: &, |, ^, ~ AND: hace el AND bit a bit entre dos cantidades –Pepe=Pepe& 0xF7; – Sirve para apagar bits en un registro OR: –Pepe=Pepe | 0x08; – Sirve para encender bits Manejo de bits SISTEMAS ELECTRÓNICOS 3ºGIERM12

13 Se definen máscaras para cada bit: Para encender/apagar un bit: –Registro1|=BIT5; –Registro1&=~BIT5 ; Para comprobar si un bit es 1/0: –if(Reg1&BIT5)… –if(!(Reg1&BIT5))… se pueden usar varios a la vez: –Registro1|=(BIT0+BIT3+BIT5); Manejo de bits. Máscaras SISTEMAS ELECTRÓNICOS 3ºGIERM13 #define BIT0 0x01 #define BIT1 0x02 #define BIT2 0x04 #define BIT3 0x08 #define BIT4 0x10 #define BIT5 0x20 #define BIT6 0x40 #define BIT7 0x80 #define BIT8 0x100 #define BIT9 0x200 …


Descargar ppt "SISTEMAS ELECTRÓNICOS 3ºGIERM1 1. Introducción 2. Tipos de datos 3. Estructuras típicas de programación 4. Manejo de bits Tema 7. Programación de microcontroladores."

Presentaciones similares


Anuncios Google