quinta-feira, 24 de outubro de 2019

Removendo a poeira do microcontrolador!


Blink - PIC18F - MPLABX - PICkit3

Acho que este título descreve bem o projeto: Blink -> PIC18F -> MPLABX -> PICkit3.

O tempo passa e, acaba que o blink (pisca-pisca) é sempre um bom lugar para recomeçar. Resultado:


A vantagem de começar (ou recomeçar) com um projeto simples é que você pode focar nos ajustes do compilador e outros (muitos) problemas que acontencer durante a instalação do compilador.

Eu gosto muito de programar. Acho que a vida fica meio chata quando eu não estou mexendo com alguma placa de desenvolvimento ou fazendo algum sistema embarcado novo. Muita gente tem preconceito com PIC e Arduino por estas plataformas (especialmetne as de 8bits) não serem tão poderosas quanto à novas arquiteturas de 32-bits (PIC32, ARM Cortex, etc). Eu acho que cada plataforma tem o seu papel e a sua aplicabilidade. É importante usar a ferramenta que você tem nas mãos e conhecer as suas limitações e possíveis aplicações.

Hoje, e nas próximas séries de posts, eu vou usar o PIC 18F45k22 com a placa de desenvolvimento PIC-EK.
A PIC-EK é feita pelo fabricante LogiFind. Uma das vantagems desta placa é a versatilidade, pois ela suporta uma infinidade de famílias de microcontroladores com pinos diferentes (8, 10, 14, 18, 20, 28, 40 pinos). Além disso, a PIC-EK também tem uma série de periféricos montados na placa, incluindos, leds, chaves, visor de 7 segmentos, joystick, memória, buzzer, e vários outros periféricos. Eu comprei a minha pelo ebay, mas eu sei que ela tem para vender no aliexpress. Comenta ai se você sabe se alguem re-vende esta placa no mercado livre ou outro website.


Placa de programação - PIC - EK 

O PIC que eu estou estando é o PIC18F45k22 com um cristal de 4MHz. Eu estou usando este PIC pois ele é o único que eu tinha disponível aqui de um projeto antigo. 



PIC18F45k22 com o cristal de 4MHz. 


Para programar o PIC, vou usar o PICKit3. Novamente, é uma opção mais em conta e funciona bem. 




 Uma vez que o programa foi escrito e compilado (vou chegar nesta parte em um instante), é só conectar o PICKit3 na PIC-EK e fazer o download do programa.





Para programar, eu tinha a opção de usar o Mikro C pro ou o MPLABx. A vantagem do MikroC é que tem uma infinidade de biblioteca pronta no compilador, mas para ter acesso a versão completa (mais de 32k de programa) tem que pagar uma licença de 250 dolares (1000 reais mais ou menos). O MPLAB é de graça, dá mais trabalho, mas é de graça. Eu vou usar o MPLAB.



Faça o download do MPLAB® X IDE v5.25 (Link para windows), instale os drivers e vamos tirar a ferrugem.

Se voce já teve experiencia com criar um novo projeto, então pode ir pra parte de configuração dos bits. Se não, sugiro que você siga os seguintes passos: 

1) Começe um novo projeto:



2) Escolha a familia de microcontrolador e o seu PIC



3) Selecione o compilador. Se esta á a primeira vez usando o MPLABx, você tem que clicar na opção Download XC8. (Eu já tinha feito isso e apenas selecionei o XC8)


4) Escolha um nome e o local do seu projeto (Esqueci de tirar printscreen, mas é bem tranquilo essa parte)

Pronto, seu projeto foi criado. 

5) Agora, voce tem que clicar com o auxiliar em cima da pasta Sources e selecionar New>>main.c



6) Pronto, agora a gente tem um projeto e um main. Antes de começar a programar, a gente que mexer nos bits de configuração (Alerta: se vc não tem experiencia com programação, esta parte pode parecer bastante confusa, mas não é nada de bixo de sete cabeças. O microcontrolador é um dispositivo muito flexivel, e você tem que "ajustar" as suas preferencias para que tudo funcione direitinho. Para isso, (infelizmente, ou felizmente) você vai precisar ler o datasheet do microcontrolador. 


7) bit de configuração: Clique na aba.


8) Neste projeto, eu modifique apenas 3 bits: oscilador (HSMP), watchdog (OFF) e, PORTB AD (OFF)

9) Clique em gerar código (Generate Source Code.. ) 




10) Copie e cole o codigo no programa











Passo 11) Pronto! Ufa, até que em fim. Agora a gente pode começar a programar!

Neste projeto, eu quero apenas piscar alguns leds que eu vou conectar na porta B. Eu usei o codigo similar ao deste website: https://www.exploreembedded.com/wiki/PIC_I/O_Register_Configuration

#include <xc.h>

void DELAY_ms(unsigned int ms_Count);

int main()
{
  TRISB = 0; //RB0 as Output PIN
  while(1)
  {
    PORTB = 0xFF;  // LED ON
    DELAY_ms(100); // 100 ms Delay
    PORTB = 0x0;  // LED OFF
    DELAY_ms(100); // 100 ms Delay
  }
  return 0;
}
void DELAY_ms(unsigned int ms_Count)
{
    unsigned int i,j;
    for(i=0;i<ms_Count;i++)
    {
        for(j=0;j<100;j++);
    }
}


Daí é só compilar (no martelinho), conectar o PICKit3 na PIC-EK e clicar no icone com a setinha verde apontando pra baixo (Make and program)




Uma janela vai aparecer para você selecionar o seu programador (PICKit3)



Alguns microcontroladores são em 3.3V e outros em 5V. O PIC18F45k22 é em 5V. Esta oção, eu apenas cliquei OK. (Não sou responsável se vc queimar seu PIC por causa de voltagem errada. Leia tudo com atenção e seja sempre cauteloso!)


Aqui está o resultado: 







Espero que vocês tenham conseguido seguir o passo à passo e tirar a ferrurem dos bits ai do microcontrolador PIC. Por favor, postem comentários com dúvidas, sugestões de programas e melhorias.

Proximos passos:

Colocar o códico no github (publico)
Criar um arquivo .h para as funções de configuração.
Explorar rotinas de LED com pushbutton e rotinas de interrupção de timer e hardware.

Abraços!






Nenhum comentário:

Postar um comentário