Nesse texto vou mostrar como desenvolver a primeira aplicação utilizando o ambiente Microchip Harmony com o MPLAB IDE, utilizando o kit de desenvolvimento Ethernet Starter Kit II da Microchip.
Harmony
O Microchip Harmony é um Framework de Software para os microcontroladores PIC32 da Microchip que simplifica a experiência do desenvolvimento de software para sistemas embarcados. Ele reduz o trabalho de software pois oferece bibliotecas, drivers, middleware, RTOS e componentes de software externos testados e integrados no ambiente Harmony. É um ambiente visual muito fácil de usar e reconfigurar mesmo durante o desenvolvimento de seu projeto. Modificações no código gerado pelo ambiente são facilmente resolvidas pelo Harmony. É muito simples de trabalhar e uma ferramenta poderosa para projetos com PIC32.
Veja o vídeo abaixo em inglês para uma rápida apresentação do Microchip Harmony.
Sobre o Kit de desenvolvimento Ethernet Starter kit II
A placa que será utilizada neste artigo será a placa Ethernet Starter Kit II. Ela possui:
- Microcontrolador PIC32MX795F512L com 512KB Flash, 128KB RAM;
- Alimentação via USB;
- Placa extra para comunicação ethernet 10/100. A comunicação Ethernet possui wake-on-lan;
- USB, 3 switches e 3 Leds;
- Conector de expansão para ouras placas Microchip.
Uma imagem da placa está disposta abaixo. Para mais informações sobre a placa acesse a página referência da placa nesse link. Acesse o seu User Guide no link.

Instalação da IDE MPLAB X, Compilador XC32 e Harmony
Primeiramente é necessário fazer o download e instalar todos os softwares necessários para que se possa usar o Harmony. Para esse texto, utilizei o Windows 8. Baixe e Instale o MPLAB X IDE. Para isso, acesse esse link. Estamos usando a versão v3.40. Após a instalação do MPLABX, baixe e instale o Compilador XC32. Para baixar o compilador para o Windows, acesse esse link e siga as instruções para instalação. Foi utilizada a versão 1.42 do XC32 para essas experiências. É necessário então que seja instalado o Harmony para que possamos ter acesso às facilidades desse ambiente para montar o nosso projeto. Baixe e instale o Harmony. Estamos utilizando a versão 1.08.01 nos exemplos a seguir. Para isso acesse esse link.
É necessário instalar o plugin do Harmony na IDE do MPLAB. Para isso, depois de abrir o MPLAB IDE, selecione a opção Tools > plugins e escolha a opção MPLAB Harmony Configurator. Veja a Imagem abaixo.

Criando o primeiro projeto no Microchip Harmony e piscar leds
Crie um novo projeto no no MPLAB X IDE utilizando as opções File > NEW conforme a figura a seguir:

Digite o caminho do Harmony Path para o local onde o Harmony foi instalado (por padrão é c:\microchip\harmony\v1_08_01 ).

Após preencher os campos acima, prossiga clicando na opção Next. Será criado o projeto como na figura abaixo.

Na aba harmony, configure a placa que estamos utilizando para esse lab, a PIC32 Ethernet Starter Kit II.

E então finalize essa etapa com os seguintes comandos: Generate code > Save > Generate. A IDE estará como a imagem a seguir:

Altere o arquivo app.c:
void APP_Tasks ( void )
{
/* Check the application's current state. */
switch ( appData.state )
{
/* Application's initial state. */
case APP_STATE_INIT:
{
bool appInitialized = true;
if (appInitialized)
{
appData.state = APP_STATE_SERVICE_TASKS;
}
break;
}
case APP_STATE_SERVICE_TASKS:
{
BSP_LEDOn(BSP_LED_1);
BSP_LEDOn(BSP_LED_2);
BSP_LEDOn(BSP_LED_3);
break;
}
/* TODO: implement your application state machine.*/
/* The default state should never be executed. */
default:
{
/* TODO: Handle error in application's state machine. */
break;
}
}
}
Utilize o ícone com o Martelo para compilar e o da flechinha apontando para o processador para gravar. Quando utilizar esse ícone, vai aparecer a seguinte imagem que mostra que a placa está conectada ao PC:

Após a gravação, verifique que os leds estão acesos. Para piscar os leds, altere o arquivo app.c novamente conforme o código abaixo:
void APP_Tasks ( void )
{
float t;
/* Check the application's current state. */
switch ( appData.state )
{
/* Application's initial state. */
case APP_STATE_INIT:
{
bool appInitialized = true;
if (appInitialized)
{
appData.state = APP_STATE_SERVICE_TASKS;
}
break;
}
case APP_STATE_SERVICE_TASKS:
{
for( t= 0; t<100000; t++);
BSP_LEDOn(BSP_LED_1);
BSP_LEDOn(BSP_LED_2);
BSP_LEDOn(BSP_LED_3);
for( t= 0; t<100000; t++);
BSP_LEDOff(BSP_LED_1);
BSP_LEDOff(BSP_LED_2);
BSP_LEDOff(BSP_LED_3);
break;
}
/* TODO: implement your application state machine.*/
/* The default state should never be executed. */
default:
{
/* TODO: Handle error in application's state machine. */
break;
}
}
}

Pronto. Os 3 leds vão piscar.
Conclusão
Fazer o primeiro código utilizando o Harmony é muito simples e intuitivo. Para utilizar as funções da placa, basta adicionar a placa ao projeto (BSP ou Board Supported Package). Os arquivos que o usuário deve trabalhar são apenas o app.c e seu include app.h. Os outros arquivos, o Harmony toma conta pra você.
O que achou? Deixe o seu comentario abaixo.






Parabéns pelo trabalho!
Acho o sistema OSAL (que o Harmony gera dentro projeto) pesado … para fazer piscar um simples LED o core passa por vários arquivos, laço for e algumas funções… Sem falar que o PLIB agora é fechado em arquivo “.a” (library estilo DLL) e não se sabe mais como é feito o acesso ao hardware.
Para iniciantes o harmony é muito bom mas para os mais experientes (pelo menos para mim) não.
Thiago Lima, em primeiro lugar parabéns pelo artigo. Queria sugerir uma correção, os dois primeiros prints após o título “Criando o primeiro projeto no Microchip Harmony e piscar leds” estão com ordem invertida.