TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: fitson en 16 de Diciembre de 2016, 15:05:53
-
Tengo un problema, al parecer he migrado a linux y como podréis saber no es fácil en mi opinión encontrar la misma cantidad de compiladores que en windows.
Bueno quería preguntar si alguien conoce algún compilador C bueno para PIC linux. En estos momentos tengo instalado el MPLAB ide con XC8 pero con la licencia gratuita no comprime el tamaño de los programas por lo cual no sale rentable. Necesito un compilador al estilo XC8 que me permita tener mas control sobre lo que escribo en pic.
Gracias.
-
Existe algo llamado SDCC, nunca lo use no tengo data....
-
Dicen que SDCC es parecido CCS de windows pero que tiene una mapulacion a nivel de codigo menor a XC8
-
Nunca he usado el CCS, pero si el xc8 y el SDCC, por ejemplo la diferencias que puedes encontrar son
includes
SDCC
#include <pic14regs.h>
#include "app.h"
/* Configuration bits:
* For pic 16f690
*
*/
typedef unsigned int word;
word __at 0x2007 CONFIG = 0x0064;
XC8
#include <xc.h>
#define _XTAL_FREQ 8000000
//Configuration bits
#pragma config WDTE = OFF
#pragma config BOREN = OFF
#pragma config MCLRE = OFF
#pragma config FOSC = INTRCIO
Configuración del micro
SDCC
//Ports Configuratios
OSCCON = OSCCON | 0x70; // INTOSC at 8Mhz
PORTA = 0x00; //Clear PortA
TRISA = 0x07; //Set RA<2-0> as Input RA<5,4> output to
// GREEN and RED Led
ANSEL = 0x07; //Set Analog Input on RA<2-0>
ANSELH = 0x00;
PORTC = 0x00; //Clear PortC
TRISC = 0x00; //PortC configured as output to control the
// stepper motors
PORTB = 0x00; // Clear PortB
TRISB = 0x00; //All output
//ADC configurations
ADCON1 = 0x20; //Fosc/32 -> 4us
ADCON0 = 0x01; //
//Timer0 Configurations
T0CS = 0; // Set timer 0 as Fosc/4 counter with Fosc = 8MHz
TMR0 = STMR0;
T0IE = 1; //Enable Timer0 overflow interrupt
GIE = 1; //Enable interrupt
XC8
OSCCON = OSCCON | 0x70;
PORTB = 0x00;
TRISB5 = 1;
TRISB7 = 0;
PORTC = 0x00;
TRISC = 0x00;
SPBRG = 12;
SYNC = 0;
SPEN = 1;
CREN = 1;
TXEN = 1;
T0CS = 0;
TMR0 = 0;
T0IE = 1;
GIE = 1;
Manejo de interrupciones
SDCC
/* Interrup handler
*
*/
void isr(void) __interrupt 0 {
}
XC8
/* Interrup handler
*
*/
void interrupt ISR(void) {
}
-
Que tal amigo, mira yo uso el compilador C CCS, y mi SO es Debian, lo que hice fue instalar wine, después instalé el compilador como si tuviera windows y de esa manera ya tienes el compilador en una distribución linux. Al crear mis códigos uso "Geany" que es un IDE de programación open source basado en python, ya que termine el código a la hora de compilar simplemente en una terminal escribo esto --> wine ccsc +FM -D -T -A -EW +EX -L -J -M +EA +P5 I="c:/Program Files/PICC/Devices" elNombreDeTuCodigo.c y así se compila en linux sin ningún problema. No estoy siendo muy detallista porque estoy de entrada por salida en el foro, pero cuando tenga mas tiempo con gusto puedo explicar el proceso a detalle.
-
CCS también tiene versión para Linux (además de poder correrlo mediante Wine)