TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: gardelitock en 29 de Noviembre de 2014, 12:05:17

Título: Hacer librerias para módulos
Publicado por: gardelitock en 29 de Noviembre de 2014, 12:05:17
Hola a todos!

Quiero empezar a investigar sobre librerias, para poder hacerlas para módulos tipo acelerómetros, teclados matriciales, giróscopos, lectores de tarjetas sd, etc. Actualmente estoy programando con el Pic C, pero tengo dos meses libres y me quiero pasar al MPLAB X con el compilador XC8.

Asi que quería pedirles recomendaciones de libros, pdf, páginas de internet, videotutoriales, lo que sea. Para poder tener una idea de como empezar. Ya que abriendo librerias me di cuenta que usan funciones que no son tan comunes al hacer un programa cualquiera y por esto quiero aprender con el manual de usuario del compilador y datasheet a mano, pero necesito algo de info para arrancar!

Espero su ayuda!
Saludos
Título: Re: Hacer librerias para módulos
Publicado por: planeta9999 en 29 de Noviembre de 2014, 12:13:53

En la web de Microchip tienes mucha documentación sobre las librerias disponibles para C18 y C32:
http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_C18_Libraries_51297f.pdf
http://people.ece.cornell.edu/land/courses/ece4760/PIC32/Microchip_stuff/32-bit-Peripheral-Library-Guide.pdf

Título: Re: Hacer librerias para módulos
Publicado por: PalitroqueZ en 29 de Noviembre de 2014, 12:21:02
la librerias (o bibliotecas) no son mas que un conjunto de código que se colocan en archivos separados con fines de organizar un programa que se hace largo y repetitivo.

yo suelo separar las constantes, las variables, las definiciones y funciones personalizadas en archivos separados.
Título: Re: Hacer librerias para módulos
Publicado por: Marttyn en 08 de Diciembre de 2014, 08:22:03
Lo mejor es leer otras librerias para darte cuenta de como funcionan.
Las mejores librerias estan hechas para Arduino, y como el codigo es C, hay que adaptar un poco, pero el codigo es muy similar.
Yo tambien quiero hacer mejores librerias, ya que me parece que el CCS hace un uso y definicion bastante precario. Tengo algunas hechas y van bien, pero podrian ir mejor.

Creo que lo mas util para librerias son los condicionales de precompilacion:
#if
#ifdef
#ifndef
etc.
Estos te permitiran compilar automaticamente segun el pic que se este usando. Por ejemplo:
Código: C
  1. // ---- COMPROBACIONES DE COMPATIBILIDAD ----
  2. #IF getenv("VERSION")<5.019
  3.         //Libreria creada con compilador CCS v5.019
  4.         //Para versiones anteriores comprobar que el codigo
  5.         //generado se adecua a los tiempos requeridos
  6.    #WARNING Compilador antiguo, comprueba que el codigo generado es valido
  7. #ENDIF
  8.  
  9. #IF getenv("CLOCK") != 32000000
  10.         //Necesitamos que el PIC corra a 32MHZ
  11.         #ERROR La velocidad del PIC debe ser de 32Mhz
  12. #ENDIF
  13.  
  14. #IFNDEF NUM_LEDS
  15.         #ERROR "NUM_LEDS" no definido
  16. #ELSE
  17.         #IF NUM_LEDS > 85
  18.                 //Solo podemos usar un maximo de 85 leds.
  19.                 //Cada led usa 3 bytes, y nuestro contador de envio es un INT
  20.                 #ERROR "NUM_LEDS" tiene que ser menor a 85
  21.         #ELIF NUM_LEDS*3 > getenv("RAM")
  22.                 #ERROR Tu PIC no tiene suficiente RAM para tantos LEDs
  23.         #ENDIF
  24. #ENDIF
  25. // ------------------------------------------

Este codigo genera ciertos errores o advertencias dependiendo de la velocidad del pic, de la version del compilador o de si hay una constante definida. Lo utilizo en una libreria para controlar leds. Esta aqui por si le quieres echar un vistazo: http://www.todopic.com.ar/foros/index.php?topic=42622.0