Dentre um dos mil e-mails que recebo todos os dias, aparecia um sobre um ambiente integrado da Microchip para programação de PICs. O MPLAB-X
http://www.microchip.com/pagehandler/en-us/family/mplabx/Segundo a propaganda, é um ambiente multiplataforma, baseado no Netbeans, grátis e bastante versátil. No link acima, é possível baixar (grátis) o ambiente. A programação pode ser via assembler e C.
Eles liberaram uma versão do compilador deles, os XC8, XC16 e XC32, mas com versões grátis também. A cereja do bolo é que eles integraram o sdcc (Small Device C compiler) também.
Melhor é que é integrado com os produtos de programação PICKIT 2 e 3 e outros mais caros.
Usei uma tarde o produto e gostei muito. Ele herdou muita coisa legal do Netbeans como: auto completar código, auto check e correção da linguagem, software de controle de versão (SVN, CVS e Mecurial), etc.
Agora quem tem MAC e Linux, pode compartilhar projetos entre si e o pessoal do Windows. A gente aqui do G4, já compartilhamos arquivos via SVN há muito tempo. Mas sempre houve problemas, uma vez que há diferenças de plataforma - eu uso Linux e o retso da galera ainda usa Windows. Agora, na área de programação PIC a paz vai ser restabelecida.
(a questão da plataforma vai além da programação, de vez em quando pego uns arquivos do plautz apontando pata C:\... - não é culpa dele, mas dos programas que usamos)
Fiz um pequeno programa de teste, para verificar se o mesmo projeto, compilava no XC8 e no SDCC com o mesmo fonte. Funcionou! Claro que o arquivo .hex resultante fica diferente - cada compilador faz suas próprias mágicas no código, mas o efeito prático é bastante interessante.
Olhem abaix, um código que compila nos dois compiladores:
/*
* Teste de compilação XC8 e SDCC
*/
#ifdef __XC8
#include <htc.h>
#pragma config BOREN = OFF, CPD = OFF, FOSC = INTOSCCLK, MCLRE = OFF, WDTE = OFF, CP = OFF, LVP = OFF, PWRTE = ON
#endif
#ifdef __SDCC
#include <pic16f628a.h>
unsigned int __at (0x2007) __CONFIG = _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_CLKOUT & _MCLRE_OFF & _BODEN_OFF & _LVP_OFF & _CP_OFF;
#endif
void delay() {
int counter = 0;
for (counter = 0; counter<3000; counter++) {
;
}
}
int main(void)
{
TRISB = 0;
while (1) {
PORTB++;
delay();
}
return 0;
}
O programa é bobo, mas o resultado é legal! Tenho pouca coisa desenvolvida em PIC, mas poder escolher entre compiladores é muito bom.
E tudo grátis!