TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: PicMinor en 04 de Marzo de 2014, 06:47:13
-
¡ Saludos al Foro !
Llevo tiempo dándole vueltas a un tema que me tiene un poco sorprendido. Normalmente trabajo en CCS y en mis proyectos utilizo un fichero .c donde está la función main. Al comienzo del fichero cargo la cabecera del micro utilizado, los fuses y declaro las variables globales, constantes, macros etc. Después incluyo los ficheros que necesito teniendo la precaución de añadir las declaraciones de las funciones. Compilo todo y a funcionar. Hasta aquí todo normal.
Mi duda surge cuando al trabajar con el entorno del MPLAB si quiero tener acceso a los ficheros que he incluído tengo que colocarlos en el apartado "Other files", cuando lo lógico es que estuvieran en "Source files". Si coloco algún fichero en esa sección me empieza a dar errores de compilación, el más usual es "A #DEVICE required before this line".
He visto proyectos escritos con otros compiladores (Hi-Tech, XC8, etc) que colocan varios ficheros en la sección "Source files" sin ningún problema, pero en CCS no he visto ningún proyecto que lleve varios ficheros .c en la sección "Source files".
Agradecería que algún experto pudiera darme una explicación sobre este estilo de programación y si es factible hacerlo en CCS indicarme algunas técnicas para ello.
¡¡ Gracias de antemano !!
-
Aquí tienes la respuesta !!
https://www.ccsinfo.com/faq.php?page=multi_comp_units (https://www.ccsinfo.com/faq.php?page=multi_comp_units)
-
¡ Gracias MGLSOFT !
Efectivamente creo que en esa página podré "estudiar" la manera de adaptar mi estilo de programación al "ortodoxo".
Una duda más que tengo es la siguiente:
En los programas escritos en Hi-Tech o XC8 al principio incluyen un fichero htc.h o xc.h (que luego carga el htc.h) en el que analizan si está definido el símbolo __PICC__ (u otros como __PICC18__, etc) Intuyo que esos símbolos los suministra el MPLAB al elegir el tipo de micro con el que trabajamos. En estos compiladores no acabo de localizar cuando cargan la cabecera del micro ni cómo la localizan si es que lo hacen.
¿Existe algún tipo de variable de entorno equivalente en CCS que permita omitir el fichero de cabecera específico del micro dejando al compilador la tarea de cargarlo automáticamente?
-
Creo que esto (de la ayuda de CCS) te puede servir...
__pcd__
Syntax:
__PCD__
Elements:
None
Purpose:
The PCD compiler defines this pre-processor identifier. It may be used to determine if the PCD compiler is doing the compilation.
Examples:
#ifdef __pcd__
#device dsPIC33FJ256MC710
#endif
Example Files:
ex_sqw.c
Also See:
None
-
¡ Gracias por la respuesta !
He conseguido compilar un proyecto con varios ficheros situados en "Source files", ha sido bastante complicado el adaptar los módulos pero al final ha funcionado. Respecto a lo de la carga automática del fichero de cabecera del micro utilizado parece que la cosa es más compleja. Revisando el fichero chip_select.h que se incluye al comienzo de los programas escritos en High-Tech aparecen un montón de secciones del tipo:
#ifdef _16F886
#ifdef _LEGACY_HEADERS
#include <legacy/pic16f887.h>
#else
#include <pic16f886.h>
#endif
#endif
Como se ve está definido _16F886. He hecho la prueba siguiente: En el comienzo del programa y antes de que cargue el htc.h he escrito:
#ifdef _16F886
#include <htc.h>
#endif
El programa compila bien pero si desde el MPLAB cambio el micro seleccionado (Configure->Select Device) y elijo por ejemplo el PIC16F887 el programa no compila, a no ser que cambie la condición anterior por:
#ifdef _16F887
#include <htc.h>
#endif
Parece claro que el MPLAB "define" el _16F886. Pero cuando utilizo el CCS no aparece esta definición. Parece raro que no exista esta característica en el CCS, he probado diversas combinaciones de nombres, prefijos, etc y no he encontrado nada.
A ver si alguien sabe algo respecto a este tema.
¡ Saludos al Foro !
-
Estos archivos adjuntos vienen con el CCS, para explicar como se compilan los proyectos MCU (Multiple Compilation Unit).
Míralos bien y ensaya con el ejemplo incluido.
El pdf explica como se debe hacer paso a paso.
Suerte !!
-
Gracias por la Respuesta MGLSOFT pero como ya he indicado en mi post anterior la compilación múltiple sí que la he conseguido. Ahora me falta el tema de la carga del fichero de cabecera, que en Hi-tech lo hace automáticamente sin necesidad de indicarle qué micro vamos a usar y en CCS hay que indicarlo expresamente. Como ya he dicho el MPLAB "pasa" el símbolo _16F886 al compilador (En el caso del Hi-tech) pero con el CCS he localizado el __device__ pero solo está definido DESPUÉS de cargar el fichero de cabecera por lo que no nos permite la carga automática.
-
hola buenas tardes.. un favor
instale picc y creo programas por winzar y normales pero no me crea el archivo .hex..por favor alguien me puede ayudar..
gtacias