3 votos

Decidir qué compilador para PIC18F26K22 en MPLAB X, ¿C18 o XC8?

Estoy intentando programar un microprocesador por primera vez, y tengo muchas, muchas dudas.

He instalado tanto el compilador C18 como el XC8, además de algunos otros. Cuando creo un nuevo proyecto y selecciono mi microprocesador, PIC18F26K22, puedo elegir entre estos dos compiladores, además de los dos ensambladores mpasm. Cuando ambos están disponibles para elegir, ¿significa eso que ambos funcionan?

¿Cómo puedo decidir cuál usar? He intentado buscar en Google, pero no encuentro la respuesta; quizás porque no sé qué buscar en Google y no sé cómo leer los resultados. ¿O tal vez no haya ninguna diferencia real entre el que elija?

3voto

Clay Nichols Puntos 4252

Como dice Roger, usa XC8. Es el compilador más nuevo.

El compilador C18 está obsoleto y no es compatible con los nuevos dispositivos.

Otra desventaja del C18 es que sólo admite la familia de microcontroladores PIC18, a diferencia del XC8, que admite todos los microcontroladores PIC de 8 bits: PIC10, PIC12, PIC16, PIC18.


También diría que XC8 (que se basa en el compilador C de HI-TECH) es un poco más fácil de usar que C18. Sólo hay que ver cómo se declara un ISR en ambos compiladores:

C18 :

void isr(void)
{
   /* ... */
}

#pragma code high_vector=0x08

void interrupt_at_high_vector(void)
{
    _asm GOTO isr _endasm
}

#pragma code

#pragma interrupt isr

vs XC8 :

void interrupt isr(void)
{
   /* ... */
}

2voto

RelaXNow Puntos 1164

C18 es el antiguo compilador de Microchip, y XC8 es el nuevo compilador de Microchip que compraron a HiTech (o algún nombre así, en fin, el compilador australiano).

XC8 tiene el soporte actual y es con lo que Microchip va a seguir adelante. Si estás empezando desde cero con PICs, entonces esto es probablemente lo que quieres.

Sin embargo, hay algunas cuestiones que hay que tener en cuenta de cualquier manera. XC8 no implementa una pila de software. También realiza su propio enlazado utilizando un formato binario incompatible con el de C18 y MPASM. Si planeas mezclar C y ensamblador, y particularmente si tienes módulos MPASM existentes, o esperas obtener alguno de otros, entonces aléjate de XC8.

Por otro lado, el C18 también tiene sus problemas. Mientras que el generador de código parece ser robusto, algunas de sus estrategias de cómo utilizar el hardware del PIC 18 son "menos que brillantes". Implementa una pila de software, pero eligió un diseño que requiere el modo de direccionamiento pre/post inc/dec que el PIC 18 no lo hace tener. No hay duda. También reserva dos de los tres registros FSR para su propio uso. También utiliza un modelo de pila limpia para las llamadas a subrutinas. Esto significa que las subrutinas no pueden eliminar los datos de la pila con los que han terminado antes de llamar a otras subrutinas. El resultado es que la pila necesita mucho más espacio del que debería.

Personalmente, me quedo con MPASM en los PICs de 8 bits. He utilizado C18 en el pasado para algunos proyectos mixtos C/ASM, pero eso fue sólo porque recibí el código de esa manera. Siempre fue más problemático cuando el compilador estaba involucrado, en comparación con un proyecto de MPASM puro. También tengo muchos subsistemas escritos en MPASM ya en el disco, por lo que en su mayoría sólo tengo que añadir la lógica específica del proyecto. Cosas como los manejadores UART, el dispositivo USB, la pila TCP/IP, y muchas otras facilidades ya están ahí.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X