introduccion al lenguaje c para sistemas embebidos · 2013. 11. 6. · el lenguaje c fue basado en...

Post on 04-Aug-2021

5 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

INTRODUCCION AL LENGUAJE CINTRODUCCION AL LENGUAJE CPARA SISTEMAS EMBEBIDOSPARA SISTEMAS EMBEBIDOS

1

QUE ES UN SISTEMA EMBEBIDO ?QUE ES UN SISTEMA EMBEBIDO ?

Es un sistema electrónico que está contenido dentro de undispositivo electromecánico y es diseñado para realizar unaaplicación específica.El cerebro de un sistema embebido es típicamente unmicrocontrolador, aunque también puede ser un DSP o un FPGA.El diseño del sistema está optimizado para reducir su tamaño y sucosto, aumentar su confiabilidad y mejorar su desempeño.

2

Como resolver un problema usando un microcontrolador ?.

ESTRUCTURA DE UN PROGRAMAESTRUCTURA DE UN PROGRAMAEN LENGUAJE CEN LENGUAJE C

Reconocimiento del problema.Algoritmo describiendo los pasos para la solución.Usar el lenguaje C para implemetar la solución (según algoritmo).Compilar el programa desarrollado.

3

ESTRUCTURA DE UN PROGRAMA EN LENGUAJE CESTRUCTURA DE UN PROGRAMA EN LENGUAJE C

4

NO se dispone de un sistema operativo ...

ESTRUCTURA DE UN PROGRAMA EN LENGUAJE CESTRUCTURA DE UN PROGRAMA EN LENGUAJE C

Cada programa desarrollado en lenguaje C debe contener unafunción "main", el código de la función debe estar contenido entrellaves { }.

5

EL ESTANDAR ANSI CEL ESTANDAR ANSI C

El lenguaje C fue basado en los lenguajes BCPL y B, ejecutadosen el sistema operativo UNIX a principios de los 70s.

Desarrollado por Dennis M. Ritchie y Brian Kernighan en loslaboratorios Bell (AT&T), para ser ejecutado en el sistema operativoUNIX.

En 1988 se adopta el estándar ANSI C, conteniendo nuevasrevisiones de sintaxis y de la operación interna del lenguaje, asícomo la estandarización de las librerías, resultando en "ANSIStandar X3.159-1989" e "ISO 9899-1990", conocido como C90.

El estándar C99 agrupa las nuevas definiciones de tipos en elarchivo stdint.h:int8_t, int16_t, int32_t, uint8_t, uint16_t, uint32_t.

6

Compilando un programa en C:

EL ESTANDAR ANSI CEL ESTANDAR ANSI C

Transforma un programa en alto nivel en un programa ejecutable.

7

Cuantas clases de datos necesitamos para aplicar a la solución de un problema ?.

TIPOS DE DATOSTIPOS DE DATOS

Numeros: enteros (con signo o sin signo), reales, complejos.Textos: caracteres, cadenas de caracteres.Imagenes: pixels, colores, formas.Sonidos: calidad radio, calidad CD, alta definición.

Al ser un microcontrolador un sistema digital binario, solo reconoceceros y unos.

La unidad de información básica es el bit o Binary digiT, al agruparn bits, se puede obtener valores posibles.

8

Tipos de datos numéricos utilizando el sistema de notación binaria:

TIPOS DE DATOSTIPOS DE DATOS

Un valor numérico sin signo de n bits representa valores, estoes desde cero hasta

9

Tipos de datos numéricos utilizando el sistema de notación binaria:

TIPOS DE DATOSTIPOS DE DATOS

Los valores numéricos con signo operan con formato decomplemento binario a dos, lo cual permite asignaciones yoperaciones aritméticas de forma natural y representar valoresdesde cero hasta , o desde cero hasta .

10

TIPOS DE DATOSTIPOS DE DATOS

Tipos de datos enteros:

Tipos de datos en coma flotante:IEEE 754, estándar de notación numérica en coma flotante deprecisión simple para 32 bits.

11

TIPOS DE DATOSTIPOS DE DATOS

Variables:

Las variables son tipos de datos identificados con un nombre.Para los nombres de las variables se permite la combinación deletras y números.Se diferencia entre mayúsculas y minúsculas(sum es diferente a Sum).Los nombres de las variables no deben iniciar con un número.Solo se reconocen los primeros 31 caracteres.

Nombres de variables válidos:VarX, i, result, Result, Op_Data, _SensX ...

Nombres de variables NO válidos:23Digit, ten'sdigit, result?, double ...

12

TIPOS DE DATOSTIPOS DE DATOS

Duración y alcance de las variables:

El alcance de una variable comprende el área del programa dondela variable es válida (accesible).

Variables de tipo Global:Son accesibles en cualquier parte del programa.Son declaradas fuera de los bloques o funciones del programa.Son creadas al inicio del programa y son válidas durante toda laejecución del programa.

Variables de tipo Local (static):

Solo son accesibles en un bloque particular del programa.Son declaradas dentro de un bloque o función del programa.Son creadas al inicio de la función y son válidas durante laejecución de la función.También pueden ser locales al archivo fuente actual; en este casola variable es global al archivo fuente actual.

13

TIPOS DE DATOSTIPOS DE DATOS

Operadores:

Los operadores permiten realizar acciones sobre las variables.

Operadores aritméticos:

Operadores lógicos:

14

TIPOS DE DATOSTIPOS DE DATOS

Operadores relacionales:

Operadores lógicos a bit:Tratan la variable entera o el valor como variable booleana siendoTRUE, diferente de cero y FALSE, igual a cero.El resultado será 1 (TRUE) o 0 (FALSE).

Operador Descripción Ejemplo ! Negación lógica !X & & AND lógica X && Y | | OR lógica X || Y

15

TIPOS DE DATOSTIPOS DE DATOS

Operadores de asignación:

Operadores de incremento y decremento:

16

SENTENCIAS Y EXPRESIONESSENTENCIAS Y EXPRESIONES

Una sentencia consta de palabras reservadas (instrucciones),expresiones y otras sentencias. Cada sentencia termina con unpunto y coma (;).

Palabras reservadas:

17

SENTENCIAS Y EXPRESIONESSENTENCIAS Y EXPRESIONES

Las expresiones son operaciones que realiza el programa,describiendo cálculos o procesos.

A + b + cX & y | | zVarX >= X

Z = A + b + c;A = X & y | | z;VarX = VarX + 1;

} expresiones

} sentencias

Un tipo especial de sentencia, la sentencia compuesta o bloque, esun grupo de sentencias encerradas entre llaves { }.El cuerpo de una función es una sentencia compuesta.

{ Z = A + b + c; A = X & y | | z; VarX = VarX + 1; }

18

SENTENCIAS Y EXPRESIONESSENTENCIAS Y EXPRESIONES

Ejecutan parte del código, basándose en la evaluación de laexpresión de control.

Sentencias de salto condicional:

● if● if – else● switch

Ejecutan parte del código varias veces y terminan la ejecuciónbasándose en la evaluación de la expresión de control.

Sentencias de iteración:

● for● while● do - while

19

SENTENCIAS Y EXPRESIONESSENTENCIAS Y EXPRESIONES

Esta sentencia de control permite ejecutar o no una sentenciasimple o compuesta según se cumpla o no una determinadacondición.

20

SENTENCIAS Y EXPRESIONESSENTENCIAS Y EXPRESIONES

Esta sentencia permite realizar una bifurcación, ejecutando unaparte u otra del programa según se cumpla o no una ciertacondición

21

SENTENCIAS Y EXPRESIONESSENTENCIAS Y EXPRESIONES

Esta sentencia desarrolla una función similar a la de la sentenciaif ... else con múltiples ramificaciones, aunque como se puede verpresenta también importantes diferencias.

22

SENTENCIAS Y EXPRESIONESSENTENCIAS Y EXPRESIONES

Esta sentencia permite ejecutar repetidamente, mientras secumpla una determinada condición, una sentencia o bloque desentencias.

23

SENTENCIAS Y EXPRESIONESSENTENCIAS Y EXPRESIONES

Esta sentencia permite ejecutar un bloque de código, un númeroespecificado de veces.

24

SENTENCIAS Y EXPRESIONESSENTENCIAS Y EXPRESIONES

Esta sentencia funciona de modo análogo a while, con ladiferencia de que la evaluación de la condición se realiza al finaldel bucle, después de haber ejecutado al menos una vez unasentencia (loop_body) o un bloque { }; éstas se vuelven a ejecutarmientras la condición sea TRUE.

25

SENTENCIAS Y EXPRESIONESSENTENCIAS Y EXPRESIONES

La instrucción break interrumpe la ejecución del bucle donde se haincluido, haciendo al programa salir de él aunque la condicióncorrespondiente a ese bucle sea verdadera.

La sentencia continue hace que el programa comience elsiguiente ciclo del bucle donde se halla, aunque no haya llegado alfinal de las sentencia compuesta o bloque.

La sentencia goto etiqueta hace saltar el programa a la sentenciadonde se haya escrito la etiqueta.

break, continue, goto

26

FUNCIONESFUNCIONES

Es un bloque de construcción de un programa, contieneexpresiones y sentencias que desarrollan un problema enparticular.

La agrupación de funciones permiten modularidad en un programa.

Las funciones se pueden agrupar y almacenar en librerías.

Cada programa en lenguaje C tiene al menos una función “main”.

Cada función tiene un nombre, un tipo de datos, y una lista deparámetros contenidos en variables.

Las funciones deben ser declaradas al inicio del programa.

27

FUNCIONESFUNCIONES

28

EL PRE-PROCESADOR DE CEL PRE-PROCESADOR DE C

El pre-procesador es un programa que se encarga de reconocer yejecutar las denominadas directivas al inicio de la etapa decompilación (anterior a la compilación).

El pre-procesador actúa sobre los archivos fuente procesando lasdirectivas para entregar un programa mas simple al compilador.

Las directivas son instrucciones que comienzan con el símbolo #.

#define, #undef#if, #ifdef, #ifndef, #endif, #else, #elif#include#pragma#error

29

EL COMPILADOR Y EL ENLAZADOREL COMPILADOR Y EL ENLAZADOR

Transforman un programa en alto nivel, en un programa ejecutabley entendible por la máquina.

El compilador analiza la estructura del programa para identificarsus componentes: expresiones, sentencias, variables, funciones,etc.

El código en alto nivel al ser compilado genera un programa enlenguaje ensamblador.

El enlazador combina archivos de código objeto para generar unarchivo con código ejecutable (organizado lógicamente enmemoria).

30

EL COMPILADOR Y EL ENLAZADOREL COMPILADOR Y EL ENLAZADOR

31

UN PROGRAMA SIMPLE EN LENGUAJE CUN PROGRAMA SIMPLE EN LENGUAJE C

//DESCRIPCION.//PERMITE CONTROLAR UN SERVO-MOTOR R/C, DESDE EL PUERTO SERIE, UTILIZANDO EL GENERADOR PWM0.

//ARCHIVOS DE INCLUSION#include <stdlib.h>#include "Globals.h"

//DECLARACION DE CONSTANTES#define ctLedTimer 100 //TIEMPO DE ACTUALIZACION LED DE ESTADO (MILISEGUNDOS)#define ctPwmCounts 62500 //RESOLUCION DEL GENERADOR PWM0 = (PWMClock / ctServoPwmFreq)

//DECLARACION DE MACROS#define LedStat(x) PinWrite(PortD, GPIO_PIN_5, x) //LED DE ESTADO

//DECLARACION DE VARIABLESF32 ServoMinG; //CONTIENE EL ANCHO DE PULSO PWM, PARA CERO GRADOS EN EL SERVOU32 ServoStep; //CONTIENE EL VALOR DE PASO PARA CALCULAR ANCHO DE PULSO SEGUN GRADOS

//PROTO FUNCIONESstatic void SystemInit(void); //INICIALIZA LOS PERIFERICOS NECESARIOSstatic S16 DetCommand(void); //DETECCION DE COMANDO DE POSICION EN GRADOS

//PROGRAMA PRINCIPALint main(void){

S08 inpChar; //CONTIENE CARACTER RECIBIDO DESDE LA TERMINALS16 ActServoPos = 0; //CONTIENE LA POSICION ACTUAL DEL SERVO (0 A 180)

SystemInit(); //INICIALIZA PERIFERICOSDelayms(1000); //RETARDO PARA INICIALIZACION

//BUCLE DE PROGRAMAwhile(true){

inpChar = getc(UART0_BASE); //CAPTURA UN CARACTER DESDE EL PUERTO SERIE if(inpChar > 0) ServoStep ++; Delayms(1); //BUCLE DE PROGRAMA 1000/S }}

32

REFERENCIASREFERENCIAS

www.es.wikipedia.org/wiki/C_(lenguaje_de_programación)www.monografias.com/trabajos4/lenguajec/lenguajec.shtml

http://148.208.235.3:4000/~tutorias/tutoria/CursodeC.pdf

Electrónica - Didáctica - Instrumentación

Suministro - Reparación - Mantenimiento

Dimensionamos nuestros productos y serviciosde acuerdo a sus necesidades

Calle 103 No. 33A – 04 / Teléfono (6) 8745257 / Manizaleswww.gamatecweb.com/didactic

www.gamatecinstrumentacion.comsoporte@gamatecinstrumentacion.com

top related