Microchip: MPLAB X e MPLAB XC – parte 2

mplab
Este post faz parte da série Microchip - Microcontroladores PIC de 8 bits. Leia também os outros posts da série:

No artigo anterior apresentamos as ferramentas da Microchip para o desenvolvimento de projetos com sua linha de microcontroladores de 8 bits, a qual apresentamos no primeiro artigo dessa série.

Neste artigo vamos apresentar como criar um projeto desde o inicio utilizando a IDE MPLAB X juntamente com o compilador MPLAB XC8.

Explicaremos passo a passo como configurar o ambiente e, no final, apresentaremos um exemplo em linguagem C para piscar um LED utilizando o PIC12F675, assim como utilizar o simulador para debug do código desenvolvido.

Iniciando um novo projeto no MPLAB X

Para iniciar um novo projeto deve-se escolher a opção: File->New Project onde será aberta uma janela para escolha do tipo de projeto, conforme exibido na figura 1:

MPLAB-New-Project
Figura 1 – Escolha do tipo de projeto

Selecione as opções Microchip Embedded -> Standalone Project e clique no botão Next.

O próximo passo será a escolha do microcontrolador alvo do seu projeto. No nosso caso vamos escolher o PIC12F675 para o nosso primeiro exemplo. Esse é um microcontrolador da família Mid-Range, fácil de achar no mercado, com poucos periféricos e recursos e bem interessante para entender a estrutura dos microcontroladores PIC. A figura 2 abaixo exibe a seleção do mesmo. Após a escolha clique no botão Next novamente.

MPLAB-New-Project
Figura 2 – Escolha do Microcontrolador

A próxima janela será a escolha do debug header, como apresentado na figura 3. Em nosso caso não utilizaremos este recurso e deixaremos a opção None selecionada. Pressione o botão Next nessa janela.

MPLAB-Escolha do Debug Header
Figura 3 – Escolha do Debug Header

Agora vamos escolher a ferramenta de DEBUG. Como este será apenas um exemplo para simulação, escolheremos a opção Simulator, conforme exibido na figura 4 a seguir:

MPALAB -Escolha de ferramenta de Programação/Debug
Figura 4 – Escolha de ferramenta de Programação/Debug

Nesta janela é feita a seleção do compilador que será utilizado no projeto. Escolheremos a opção XC8, conforme figura 5 a seguir:

MPLAB- Escolha do compilador
Figura 5 – Escolha do compilador

Por último, vamos dar um nome ao projeto e selecionar a pasta onde o mesmo será salvo. Dê um nome apropriado ao projeto e escolha um diretório para o mesmo, conforme figura 6 abaixo. Para finalizar clique no botão Finish:

MPLAB-Nomeando o projeto
Figura 6 – Nomeando o projeto

Pronto! O nosso projeto foi criado e deverá exibir uma tela inicial conforme a figura 7 a seguir:

MPLAB - Tela inicial do projeto
Figura 7 – Tela inicial do projeto

Criando o código fonte

Com a estrutura do projeto criada, é necessário criar o código fonte para o mesmo. Existem várias formas para criar o código fonte, porém vamos apresentar a forma mais fácil de fazer isso: utilizando a IDE MPLAB X. Para criar o código fonte em linguagem C, basta clicar com o botão direito do mouse no nome do projeto, e escolher a opção New -> C Source File, conforme exibido na figura 8 a seguir:

MPLAB-add-c
Figura 8 – Criando um arquivo .c

Será exibida uma janela para criar o novo código fonte em C, conforme figura 9. Vamos dar o nome de “main” para este arquivo e depois clicar em Finish:

MPLAB-main
Figura 9 – Nomeando o arquivo .c

Será aberto um arquivo em branco no editor de código fonte conforme Figura 10. Para iniciar a programação, vamos inserir as seguintes linhas de código:

MPLAB-edit-main
Figura 10 – Editando o código fonte

A estrutura de código apresentada é o mínimo necessário para poder compilar o programa. A diretiva #include<xc.h> é necessária em todos os projetos com o compilador XC independente do microcontrolador utilizado no projeto. Nesse arquivo header, o compilador terá acesso às características do microcontrolador, como nome de registradores e demais estruturas. A função main() é a função principal do nosso código fonte.

Para que o microcontrolador PIC funcione corretamente, além da lógica do programa, é necessário também fazer a correta configuração dos Configurations bits, também conhecidos como Fuse bits. No MPLAB X existe uma interface gráfica que auxilia nessa tarefa. O acesso a esse recurso é feito em: Window -> PIC Memory Views -> Configurations Bits, conforme exibido na figura 11, a seguir:

Acessando os configurations bits
Figura 11 – Acessando os configurations bits

Será aberta uma janela para a configuração dos bits, conforme exibido na figura 12 seguir:

MPLAB-configuration-bits
Figura 12 – Configurations bits

Selecione as opções de Configurations bits conforme apresentados na figura 12. Este microcontrolador apresenta poucos bits de configuração, porém é necessária a correta seleção para que tudo funcione conforme o esperado. Após a configuração, pressione o botão Generate Source Code to Output, e será gerado o código, conforme figura 13:

MPLAB-codigo-configuration-bits
Figura 13 – Código gerado para bits de configuração

O código gerado deverá ser inserido no código fonte do projeto. Para isso selecione e copie todo o código gerado e depois cole no código fonte, que deverá ficar da seguinte forma:

Para fazer a compilação do projeto existem algumas formas dentro do MPLAB X, porém há também ícones para rápido acesso a essa função. A figura 14 exibe esses ícones. Pressione o ícone Build Project.

MPLAB-BUILD-MAIN-PROJECT
Figura 14 – Ícones para compilação do projeto

Exemplo

Para teste e simulação do nosso projeto, vamos fazer um exemplo para piscar um LED. O esquema elétrico na figura 15 servirá como base para nossa aplicação. Note que temos um LED ligado ao pino GP5, com o devido resistor para limitação de corrente:

Esquema elétrico para simulação
Figura 15 – Esquema elétrico para simulação

O nosso exemplo ligará e desligará o LED em intervalos de 1 segundo. Para isso precisamos digitar a seguinte sequência de código em nosso projeto:

Note que o código apresentado acima está dividido em 3 partes. Na primeira parte temos a inclusão dos arquivos externos através da diretiva #include. Temos também as configurações dos bits para o correto funcionamento do microcontrolador através das diretivas #pragma. Temos ainda a definição de uma constante, _XTAL_FREQ, através da diretiva #define. Esta constante é necessária para o uso da macro de temporização __delay_ms(). O valor definido deve ser igual ao valor a frequência, em Hz, do oscilador principal do microcontrolador. A seguir é exibido o código de criação dessa macro, que encontra-se no arquivo pic.h, dentro da pasta include, no diretório de instalação do XC8:

Outra parte do código encontra-se na função main(), onde estão as configurações do registradores de funções especiais (SFR). Inicialmente foram desligados todos os pinos, através do registrador GPIO. Para que se possa utilizar o pino GP5 como saída, configurou-se o bit TRISIO5 do registrador TRISIO com o nível lógico ‘0’. A última configuração foi desligar o comparador analógico para que não interferisse no funcionamento dos pinos de I/O digitais, já que não foi utilizada a função de comparação.

A última parte é o loop principal do programa dentro do laço while(). Note a presença de um loop infinito, pois a condição sempre será verdadeira, igual a 1. Nesse loop o estado do pino é invertido a cada segundo. Para inversão do estado utilizou-se o operador ~ (not, bit a bit) e para temporização a função __delay_ms(), que aguarda o tempo passado em milissegundos baseada na frequência definida em _XTAL_FREQ, que no caso foi 4MHz.

Após a compilação deverá ser exibida a mensagem da figura 16, a seguir:

Mensagem após compilação bem sucedida
Figura 16 – Mensagem após compilação bem sucedida

Simulação

Para Debugar/Simular nosso projeto, deve-se clicar no ícone Debug main Project, veja o ícone na figura 17:

Botão para debug
Figura 17 – Botão para debug

Após alguns segundos será iniciada a simulação com a parada na primeira linha da função main(), conforme exibido na figura 18:

 Inicio da simulação
Figura 18 – Inicio da simulação

Para simular passo a passo seu projeto, use os botões de Debug que são exibidos na figura 19 a seguir:

botões-debbug
Figura 19 – Botões para Debug

Outro recurso interessante da simulação é a visualização de registradores e variáveis durante cada passo, sendo possível mudar os seus valores durante a simulação. Para acessar esse recurso basta acessar: Window -> Debugging. Confira figura 20,  para ver esse caminho:

ecursos de Debug
Figura 20 – Recursos de Debug

Conclusão

O MPLAB X, juntamente com o compilador XC, são ótimas ferramentas para o desenvolvimento de projetos com os microcontroladores PIC. Conforme apresentado nesta série de artigos, essas ferramentas vieram para agilizar o processo de desenvolvimento, substituindo a antigo MPLAB IDE e apresentando um ótimo compilador C integrado. O desenvolvedor possui agora ótimos recursos com a possibilidade de trabalhar em diferentes sistemas operacionais e com facilidade de configuração dos projetos.

Aprenda mais

Configuration Bits do Microchip PIC16F877A – Francesco Sacco

Outros artigos da série

<< Microchip: MPLAB X e MPLAB XC – parte 1
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Software
,
Comentários:
Notificações
Notificar
guest
13 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
MILTON SIERRA SOLANO
Milton
27/10/2019 20:57

Para aqueles pic mais antigos é possível compilar vários .c e .h num projeto?

Robert Marques
Robert Marques
18/12/2015 15:24

Olá, boa tarde.
Fiz um programinha no XC8 utilizando o PIC18f27j13. O problema é que ele funciona no debug, mas não funciona quando compilamos normal. Tem alguma instrução que habilite a compilação correta das duas formas?

Laelson Oliveira
Laelson Oliveira
10/12/2015 07:34

Olá, bom dia.

Cara como eu vou saber as diretivas certas pra usar? tipo, quando eu quiser usar um bloco em asm, como chama-lo? ou melhor setar um bit de tal variável ?

Fabio_Souza_Embarcados
Fabio_Souza_Embarcados
Reply to  Laelson Oliveira
10/12/2015 09:46
Laelson Oliveira
Laelson Oliveira
Reply to  Fabio_Souza_Embarcados
11/12/2015 07:24

Fabio muito obrigado, este material será de grande valia. Ontem já iniciei o projeto com xc8, anteriormente eu utilizava o MikroCforPic e por causa de problemas do compilador tive que mudar para o xc8, e estou começando a me acostumar com essa nova estrutura. Só não consegui um maneira versátil de criar um #define para um bit de uma variável ou algo similar que me ajude a não ter que ficar decorando bit a bit de cada variável já que isso se torna cansativo. Exemplo, no MikroC : unsigned char flag_menu; #define menu_ok flag_menu.f0 // isso define que o bit… Leia mais »

Fabio_Souza_Embarcados
Fabio_Souza_Embarcados
Reply to  Laelson Oliveira
11/12/2015 22:25

Olá Laelson,

pelo que entendi você quer criar variáveis tipo bit. Você pode criar bit fields para isso: http://www.tutorialspoint.com/cprogramming/c_bit_fields.htm

No manual tem uma seção explicando sobre isso também.

Você também pode fazer operações de bits, para acessar bits específicos em uma variável: http://embarcados.com.br/bits-em-linguagem-c/

veja se consegue usar, e me da um retorno.

Abraços

Samuel Garcia
Samuel Garcia
02/10/2015 10:15

Parabéns pelo artigo! O que você pode me dizer sobre a Calibração do PI12F675 (OSCCAL), já que está usando o oscilador interno? Tenho a necessidade em um projeto da calibração, pois necessito dos exatos 4 MHz+/- 1%.
Obrigado.

Fabio_Souza_Embarcados
Fabio_Souza_Embarcados
Reply to  Samuel Garcia
13/11/2015 22:20

Olá Samuel, eu sinceramente nunca precisei ajustar o oscilador interno. Só em alguns casos onde durante a programação foi sobrescrito o valor de calibração de fabrica. Para calibração você pode gerar um sinal e ir ajustando até chegar no valor desejado.

Porém com a variação pode variar mesmo calibrado.

Abraços

Vagner Rodrigues
Vagner Rodrigues
09/11/2014 16:20

Muito bom mesmo, Fabio.

Fabio_Souza_Embarcados
Fabio_Souza_Embarcados
Reply to  Vagner Rodrigues
09/11/2014 18:32

Muito Obrigado Vagner!

Rafael Dias
Rafael Dias
03/11/2014 08:04

muito bom o artigo.
É o tipo de referência que não se encontra muito na internet. Está de parabéns!

Um aspecto que eu ainda não vi como funciona direito é a operação do MPLABX com o SDCC + gputils.

Fabio_Souza_Embarcados
Fabio_Souza_Embarcados
Reply to  Rafael Dias
09/11/2014 18:34

Obrigado Rafael.

Veja esse artigo do Rodrigo Almeida sobre SDCC:
https://sites.google.com/site/rmaalmeida/mplabx-sdcc-toolchain

Grande abraço

Philipe Lima
Philipe Lima
13/06/2017 21:03

Olá Fábio Souza, você chegou a testar a opção de avaliar os 60 dias de XC8 PRO, porque eu fiz todo o processo e rodei o arquivo que gera a licença, mas continua compilando normal, só aparasse para compara a build com a PRO…

Talvez você goste:

Séries



Outros da Série

Menu

EVENTO ONLINE

Simplificando seus projetos de Internet das coisas com o iMCP HT32SX Sigfox

DATA: 18/05 às 15:00h