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

2

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

He instalado los compiladores C18 y 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 decido cuál usar? He intentado googlear, pero parece que no puedo encontrar la respuesta; quizás porque no sé para qué buscar en Google y no sé cómo leer los resultados. O tal vez no hay ninguna diferencia real, ¿cuál elijo?

    
pregunta Mads Skjern

2 respuestas

2

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

El compilador C18 está obsoleto y no admite ningún dispositivo más nuevo.

Otra desventaja de C18 es que solo admite la familia de microcontroladores PIC18 en comparación con el XC8, que admite todos los microcontroladores PIC de 8 bits: PIC10, PIC12, PIC16, PIC18.

También argumentaría que XC8 (que se basa en el compilador HI-TECH C) es un poco más fácil de usar que C18. Eche un vistazo a cómo declararía 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)
{
   /* ... */
}
    
respondido por el m.Alin
1

C18 es el antiguo compilador de Microchip, y XC8 es el nuevo compilador de Microchip que compraron de HiTech (o algún nombre como ese, de todos modos, el compilador Aussie).

XC8 tiene el soporte actual y es con lo que avanza Microchip. Si está empezando desde cero con PIC, entonces esto es probablemente lo que quiere.

Sin embargo, hay algunos problemas a tener en cuenta de cualquier manera. XC8 no implementa una pila de software. También hace su propio enlace utilizando un formato binario incompatible con el de C18 y MPASM. Si planea mezclar C y ensamblador, y en particular si tiene módulos MPASM existentes, o espera obtener alguno de otros, entonces manténgase alejado de XC8.

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

Personalmente, me atengo a MPASM en los PIC de 8 bits. He usado C18 en el pasado para algunos proyectos mixtos de C / ASM, pero eso fue solo 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 MPASM puro. También tengo muchos subsistemas escritos en MPASM ya en el disco, así que principalmente tengo que agregar la lógica específica al proyecto. Cosas como los controladores UART, el dispositivo USB, la pila TCP / IP y muchas otras instalaciones ya están allí.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas