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:
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.
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.
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:
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:
Depois configura-se o modo dos pinos e o seu nome lógico:
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.