Tutorial Xc8 Introduccion

Embed Size (px)

Citation preview

  • 7/28/2019 Tutorial Xc8 Introduccion

    1/7

    http://www.micros-designs.com.ar/tutorial-xc8-introduccion/

    Introduccin

    AGOSTO 22, 2012 | POSTED IN PROGRAMACIN PIC| COMENTARIOS DESACTIVADOS

    Aqu se presenta un tutorial del compilador XC8 que pretende proporcionar los conocimientos bsicos para comenzar a desarrollar

    con el mismo, para ello daremos una introduccin de cmo es un microcontrolador PIC y su funcionamiento, los lenguajes de

    programacin y la ventaja de usar C, como crear un proyecto, la estructura de un programa en C y lo necesario para ir creando

    ejemplos. Espero sea de utilidad

    Licencia

    La misma se expresa al pie de cada articulo.

    Indice

    Introduccin al microcontrolador

    El lenguaje de programacin

    Comenzando a desarrollar en C

    Nuestro primer proyecto en un PIC18F4550 y XC8

    Operadores, variables y estructura for

    Estructura if y arreglos de variables

    Introduccin al microcontrolador

    Un microcontrolador es un dispositivo electrnico capaz de ejecutar una secuencia de comandos previamente programados. Estos

    comandos son proyectados por el usuario utilizando algn lenguaje de programacin y luego grabados en la memoria del

    microcontrolador.

    Los microcontroladores PIC de gama baja poseen arquitectura Harvard, esto quiere decir que utilizan dos memorias distintas, una para

    almacenar las instrucciones y otra para manejar los datos. Entonces est compuesto principalmente por un procesador (CPU),memoria RAM, memoria ROM y buses de comunicaciones (cada tipo de memoria tiene un bus de datos, uno de direcciones y uno de

    control). Adicionalmente tambin dispone de puertos de entrada y salida, y diversos perifricos que nos facilitan el desarrollo tales

    como osciladores, temporizadores/contadores, mdulos de comunicacin serial y paralela, comparadores analgicos, conversores

    analgicos a digital, memoria eeprom, etc.

    Pero vayamos por partes, as entenderemos como es su funcionamiento, igualmente cabe aclarar que seremos concisos, sin describir

    profundamente.

    http://www.micros-designs.com.ar/tutorial-xc8-introduccion/http://www.micros-designs.com.ar/category/micros-pic/programacion-pic/http://www.micros-designs.com.ar/category/micros-pic/programacion-pic/http://www.micros-designs.com.ar/tutorial-xc8-introduccion/http://www.micros-designs.com.ar/tutorial-xc8-el-lenguaje-de-programacion/http://www.micros-designs.com.ar/tutorial-xc8-comenzando-a-desarrollar-en-c/http://www.micros-designs.com.ar/tutorial-xc8-nuestro-primer-proyecto-en-un-pic18f4550-y-xc8/http://www.micros-designs.com.ar/xc8_variables_for/http://www.micros-designs.com.ar/tutorial-xc8-estructura-if-y-arreglos-de-variables/http://www.micros-designs.com.ar/tutorial-xc8-introduccion/bloques01/http://www.micros-designs.com.ar/tutorial-xc8-introduccion/inicio/http://www.micros-designs.com.ar/tutorial-xc8-introduccion/http://www.micros-designs.com.ar/category/micros-pic/programacion-pic/http://www.micros-designs.com.ar/tutorial-xc8-introduccion/http://www.micros-designs.com.ar/tutorial-xc8-el-lenguaje-de-programacion/http://www.micros-designs.com.ar/tutorial-xc8-comenzando-a-desarrollar-en-c/http://www.micros-designs.com.ar/tutorial-xc8-nuestro-primer-proyecto-en-un-pic18f4550-y-xc8/http://www.micros-designs.com.ar/xc8_variables_for/http://www.micros-designs.com.ar/tutorial-xc8-estructura-if-y-arreglos-de-variables/
  • 7/28/2019 Tutorial Xc8 Introduccion

    2/7

    La memoria ROM es del tipo no voltil, esto significa que los datos almacenados no se pierden aunque no est energizada. Se

    destina principalmente a contener la lista de instrucciones que conforman la aplicacin, por ello suele llamarse memoria de programa

    y en microcontroladores de la actualidad ronda desde los 512 bytes a 128 kbytes, correspondientes a los de gama baja de Microchip.

    Son del tipo Flash, de bajo consumo, que se pueden escribir y leer, y de gran densidad de almacenamiento. Adems tienen la ventaja

    que permiten ser reprogramadas en circuito, sin necesidad de extraer el ci rcuito integrado de la tarjeta.

    La memoria RAM,memoria voltil, es la destinada a guardar las variables y datos temporales que sern utilizados por el procesador

    para realizar clculos u otro tipo de operaciones lgicas. El espacio de direcciones de memoria RAM se divide en dos sectores:

    registros de propsito general (GPR), espacio destinado para crear variables por el usuario y variables propias del compilador; y

    registros de funciones especiales (SFR), espacio que contiene bits de configuracin y control de los perifricos del microcontrolador.

    En la actualidad se pueden encontrar microcontroladores con memoria RAM de unos 32 bytes hasta 4 kbytes.

    Un registro es una pequea porcin de la memoria y su tamao se mide generalmente en bits (8-bits, 16-bits, 32-bits). Est

    representado por un numero que denominamos direccin de memoria, pero dentro del lenguaje de programacin existe la posibilidad

    de asignarle un nombre, de esta manera es ms sencillo de manejar.

    El CPU o unidad central de procesamiento es el encargado de direccionar la memoria ROM, decodificar la instruccin y ejecutar la

    operacin que implica. El primer paso es leer la instruccin de la memoria, la posicin es controlada por un contador de programa ( PC)

    que almacena un nmero que identifica la posicin actual a ejecutar. La instruccin que el CPU lee desde la memoria es usada para

    determinar qu operacin debe hacer el CPU, en este paso hay una decodificacin, en donde la instruccin es dividida en partes que

    tienen significado para otras unidades del CPU. Despus de los pasos de lectura y decodificacin, es llevado a cabo el paso de

    la ejecucin de la instruccin. Durante este paso, varias unidades del CPU son conectadas de tal manera que ellas pueden realizar la

    operacin deseada. Si, por ejemplo, una operacin de adicin fue solicitada, una unidad aritmtico lgica (ALU) ser conectada a un

    conjunto de entradas (nmeros a ser sumados) y un conjunto de salidas (suma). Luego el paso final, simplemente la obtencin del

    resultado, escribindolo en un registro interno del CPU de acceso rpido, modificando un registro de la memoria RAM o modificando el

    contador de programa para generar saltos o bucles, etc.

    La siguiente animacin intenta dar a comprender como es el funcionamiento, pero tener en cuenta que es muy genrica:

    Actualmente existen 3 tipos de arquitectura:

    CISC (Computadores de juego de instrucciones complejo): Disponen de un conjunto amplio de instrucciones donde muchas de ellas

    son complejas, permitiendo realizar operaciones sofisticadas y potentes, pero que ocupan varios ciclos.

    RISC (Computadores de juego de instrucciones reducido): En este caso el repertorio de instrucciones mnimo y muy sencillo, y

    generalmente ocupa entre 1 o 2 ciclos. La ventaja de stos es que la sencillez y rapidez de las instrucciones permiten optimizar el

    hardware y el software del procesador.

    http://www.micros-designs.com.ar/tutorial-xc8-introduccion/simulacion/http://www.micros-designs.com.ar/tutorial-xc8-introduccion/bloques02/
  • 7/28/2019 Tutorial Xc8 Introduccion

    3/7

    SISC (Computadores de juego de instrucciones especficos): Se utiliza para microcontroladores destinados a aplicaciones concretas,

    donde el set de instrucciones es reducido y especfico para las tareas a desarrollar, adaptndose a las necesidades de la aplicacin

    prevista.

    Los microcontroladores de gama baja de Microchip se basan en la arquitectura RISC, con 35 instrucciones para los 16F y 75

    instrucciones para los 18F, en este ltimo caso parecen muchas pero son simples y que ocupan pocos ciclos.

    El PIC18F4550

    Ahora tenemos un conocimiento general de que compone un microcontrolador y como es su funcionamiento, as que pasaremos a uno

    puntual. En este tutorial nos basaremos en el microcontrolador PIC18F4550 de la familia PIC18 de Microchip que tiene las siguientescaractersticas bsicas:

    Arquitectura RISC avanzada Harvard de 16-bits con 8-bits de datos.

    Mxima frecuencia de operacin 48 MHz, 12 MIPS.

    Memoria de programa de 32 kBytes.

    Memoria RAM de 2 kBytes.

    Memoria EEPROM de 256 Bytes.

    Multiplicador por hardware de 88

    Pila de 32 niveles.

    2 niveles de prioridad para las interrupciones.

    20 fuentes de interrupcin.

    4 temporizadores.

    2 comparadores analgicos.

    13 canales de conversin analgica.

    Comunicacin UART, SPI, I2C, USB.

    PLL y oscilador interno de 8 MHz.

    En el mismo datasheet podemos encontrar el siguiente diagrama de bloques de su estructura interna:

  • 7/28/2019 Tutorial Xc8 Introduccion

    4/7

    Su memoria de programa de de 32768 bytes, pero las instrucciones ocupan 2 bytes (excepto call, goto, movff, lsfr que ocupan 4), por

    lo que se pueden almacenar hasta 16384 instrucciones como mximo. Las direcciones especiales son 000 que corresponde al reset

    del microcontrolador, 008correspondiente a la interrupcin de alta prioridad y 018 correspondiente a la interrupcin de baja

    http://www.micros-designs.com.ar/tutorial-xc8-introduccion/pic18f4550_bloques/
  • 7/28/2019 Tutorial Xc8 Introduccion

    5/7

    prioridad. Las prioridades de interrupciones pueden no habilitarse y comportarse como un PIC16F, o habilitarse y cada fuente de

    interrupcin (excepto la interrupcin externa por RB0, solo es de alta prioridad) tiene un bit que la configura como de alta prioridad o

    baja prioridad.

    La memoria RAM es de 2048 bytes, 8 bancos de

    256 bytes donde 4 de ellos son utilizados por el mdulo USB en caso de utilizarlo. Adems se tiene 160 bytes dedicados a los registros

    de funciones especiales utilizados para la configuracin de los mdulos del microcontrolador.

    http://www.micros-designs.com.ar/tutorial-xc8-introduccion/memoriaprograma/
  • 7/28/2019 Tutorial Xc8 Introduccion

    6/7

    Fsicamente es un

    dispositivo de 40/44 pines donde, excepto los de alimentacin, los pines tienen varias funciones segn como se lo configure. Se puede

    encontrar con los package TQFP, QFN o DIP. Este ltimo, el ms utilizado para el aprendizaje y los hobbystas, tiene el siguiente pinout:

    http://www.micros-designs.com.ar/tutorial-xc8-introduccion/memoriaram/
  • 7/28/2019 Tutorial Xc8 Introduccion

    7/7

    Hay mucho ms por agregar respecto a este microcontrolador, pero no es la intensin de este tutorial, para profundizar ms es

    recomendable leer el datasheet.

    Continuar

    http://www.micros-designs.com.ar/tutorial-xc8-introduccion/pinout-4/