MPLAB-Xpress-Evaluation-Board

O Gadget de hoje é uma placa de desenvolvimento feita pela Microchip desenvolvida para demonstrar as capacidades do MPLAB Xpress Cloud-based IDE.

Esta placa vem equipada com um PIC16F18855 de 8-bits, uma porta USB, LEDs, um botão de pressão e um potenciómetro. Pode-se aceder aos pinos do MCU através de headers presentes na placa.

O Micro-controlador tem as seguintes características:

  • VDD de 1.8 a 5.5 V
  • 14 KBytes de Flash
  • 1024 Bytes RAM
  • 256 Bytes EEPROM
  • Oscilador Interno ajustável entre 1 e 32 MHz
  • PWM de 10-bits (2)
  • UART (1)
  • SPI (2)
  • I2C (2)
  • Timers (5) - 4 timers de 16-bits e 1 de 8-bits
  • ADC de 10-bits com 24 canais
  • DAC de 5-bits

A Placa em si além do micro-controlador dispõe dos seguintes componentes:

  • Um PIC18LF25K50 para o interface USB e para a programação
  • 4 LEDs vermelhos
  • 1 Potenciómetro
  • 1 botão de pressão
  • header mikro BUS - Spec

O header tem a seguinte configuração:

mikrobus_pinout_b

Quando a placa foi ligada quer no Linux quer no Windows aparece mapeada uma nova drive. Nessa drive está um ficheiro - README.HTM que ao abrir-se nos leva para o site mplab-xpress da Microchip. Para se reprogramar a o micro-controlador basta copiar o ficheiro .HEX que é gerado pela plataforma para esta drive para a programação ser feita.

Depois de proceder ao processo de registo na plataforma podemos iniciar a programação.

MPLAB-Xpress-IDE_1

Neste interface vamos fazer o primeiro teste com esta placa.

Escolher a opção File - New Project - Microchip Examples - Hello World. Carregando em Next escolher a opção PIC16F18855 no Dispositivo. Pode deixar-se o nome por omissão - Hello_World. Após estas operações já deverá estar populada a árvore do projecto.

MPLAB-Xpress-IDE_2

Neste momento já temos um projecto pronto a ser compilado e usado. Carregar no botão Make and Program Device. Este irá compilar o programa e descarregar um ficheiro .hex. Este ficheiro pode ser colocado na drive XPRESS. Isto desencadeará a programação do PIC16F18855.

Se tudo correr bem teremos o PIC com o primeiro LED aceso (D2).

Agora iremos entrar na ferramenta MCC - MPLAB Xpress Code Configurator. Acede-se a esta ferramenta através do menu Tools - Embedded - MPLAB Xpress Code Configurator. Neste momento temos que ter o Java 8 instalado e deveremos carregar no botão “Download MCC”. Este descarrega ou executa um ficheiro do tipo jnlp. Se for apenas descarregado deverá ser executado. De seguida a aplicação irá pedir um token. Deverá ser introduzido o que se encontra no Step 3. Isto irá inicializar o MCC que depois de inicializado deverá ter o seguinte aspecto:

MPLAB-Xpress-IDE_3

Nesta aplicação (MCC) iremos configurar os pinos do micro-controlador que queremos usar. No nosso caso iremos usar os seguintes pinos:

  • RA0 - GPIO - led1 - Output
  • RA1 - GPIO - led2 - Output
  • RA2 - GPIO - led3 - Output
  • RA3 - GPIO - led4 - Output

Estas configurações são feitas na parte inferior direita do MCC:

MPLAB-Xpress-IDE_4

Depois configura-se o modo dos pinos e o seu nome lógico:

MPLAB-Xpress-IDE_5

Depois desta configuração podemos carregar no botão Generate do MCC. Responder que sim no “Warning”.
Neste momento o MCC tratou de gerar um conjunto de primitivas que agora podem ser usadas na nossa aplicação (ficheiro pin_manager.h):

#define led1_TRIS               TRISA0
#define led1_LAT                LATA0
#define led1_PORT               RA0
#define led1_WPU                WPUA0
#define led1_ANS                ANSA0
#define led1_SetHigh()    do { LATA0 = 1; } while(0)
#define led1_SetLow()   do { LATA0 = 0; } while(0)
#define led1_Toggle()   do { LATA0 = ~LATA0; } while(0)
#define led1_GetValue()         RA0
#define led1_SetDigitalInput()    do { TRISA0 = 1; } while(0)
#define led1_SetDigitalOutput()   do { TRISA0 = 0; } while(0)

#define led1_SetPullup()    do { WPUA0 = 1; } while(0)
#define led1_ResetPullup()   do { WPUA0 = 0; } while(0)
#define led1_SetAnalogMode()   do { ANSA0 = 1; } while(0)
#define led1_SetDigitalMode()   do { ANSA0 = 0; } while(0)

Estas são apenas as que foram geradas para o led1.

Nesta altura já podemos construir o nosso programa. Abrindo o main.c devemos colocar dentro do while(1) o seguinte:

    while (1)
    {
        #define  tempo 100
        led1_Toggle();
        __delay_ms(tempo);
        led2_Toggle();
        __delay_ms(tempo);
        led3_Toggle();
        __delay_ms(tempo);
        led4_Toggle();
        __delay_ms(tempo);        
    }

De seguida podemos compilar o código e colocar o .hex gerado na DriveXPRESS.

O efeito será vermos os leds a acender e a apagar em sequência.

Isto é apenas um pequeno exemplo do que pode ser feito com esta placa.

Conclusão

A programação feita nesta placa é “parecida” com a que é feita num IDE tradicional.
Não sendo um Arduino, pode ser igualmente uma opção interessante para percebermos melhor como é que os micro-controladores funcionam, neste caso os PICs.