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!






Tirando a ferrugem... Getting rid of the rust!

Olá pessoal,

Já tem um tempo que eu não posto nada aqui no blog. Muita coisa aconteceu desde o último post. Eu vou fazer uma série de posts depois sobre as minhas aventuras e projetos que ocorreram nestes meio tempo.

Eu tenho quatro objetivos nesta fase nova do Blog do Borba:
1) Postar uma série de projetos usando diferentes microcontroladores (PIC, Arduino, Texas Instruments, ST).
2) Explorar novos projetos de Internet das Coisas (sempre montando o passo a passo).
3) Explorar machine learning e inteligencia articicial, especialmente focado em vídeo.
4) Explorar e testar ultra-baixo consumo de potencia em sistemas embarcados.

Os posts sempre serão em português e em inglês. Eu vou fazer o meu melhor para ter pelo menos um post novo por semana.

Abraços,
~Borba!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Hi everyone,

It has been a while that I have not posted anything here in my DIY blog. I started this years ago and now I am back.

I have three main goals for this blog:
1) Post a series of projects with microcontrollers (PIC, Arduino, Texas Instruments, ST)
2) Explore the Internet of Things (IoT) projects and always leave good tutorials on how you can do it yourself.
3) Explore machine learning and artificial intelligence applications focused on video and image processing.
4) Explore and test ultra-low power solutions for embedded systems.

I will be always posting in Portuguese and English. I will do my best to write a new post every week.

I hope you enjoy!
Cheers,
~Borba!