Perguntas Frequentes: "Microcontroladores PIC18 - Aprenda e Programe em Linguagem C"

> Qual é o ambiente de desenvolvimento adotado pelo livro?

-> O livro adota o ambiente de desenvolvimento MPLAB IDE e o compilador MPLAB C18, ambos gratuitos.

Clique aqui para efetuar o download do ambiente de desenvolvimento.
Clique aqui para efetuar o download do compilador.
Clique aqui para efetuar o download da biblioteca Microchip Libraries for Applications.
Gravador/depurador recomendado: PICkit 3.


> Como configurar o MPLAB IDE para evitar erros de compilação?

Uma das etapas mais importantes da configuração do MPLAB IDE é a definição do local padrão onde estão os arquivos e bibliotecas do compilador MPLAB C18, os quais foram criados após a sua instalação. Desta forma, quando os arquivos são incluídos no código, a partir da diretiva #include, o MPLAB IDE é orientado a buscá-los nas pastas definidas como padrão, evitando assim, erros de compilação causados pela impossibilidade de achá-los.

Após finalizar as etapas presentes no subtópico 2.3, informe o caminho dos subdiretórios do arquivo de cabeçalho e da biblioteca, conforme os passos seguintes:

  1. Clique em Project > Build Options... > Project;
  2. Clique na aba “Directories” e selecione a opção “Include Search Path”;
    Clique em “NEW” e defina o seguinte caminho: “C:\Arquivos de programas\Microchip\mplabc18\<versão do compilador>\h
  3. Na mesma aba, selecione a opção “Library Search Path”;
    Clique em “NEW” e defina o seguinte caminho: “ C:\Arquivos de programas\Microchip\mplabc18\<versão do compilador>\lib

Atenção!

A partir da versão v3.37, os arquivos e bibliotecas serão armazenados nos seguintes locais:

  • Arquivos: C:\Arquivos de programas\Microchip\mplabc18\<versão do compilador>\h
  • Bibliotecas: C:\Arquivos de programas\Microchip\mplabc18\<versão do compilador>\lib

Nas versões anteriores, temos:

  • Arquivos: C:\ MCC18\h
  • Bibliotecas: C:\ MCC18\lib

> Copiei um exemplo do livro, mas no momento da compilação, aparece o seguinte erro: “Error: syntax error”.

Resposta: O compilador está indicando que há um erro de sintaxe. Verifique se os comandos estão corretamente finalizados com ; (ponto e vírgula). Este é um dos erros mais comuns.

Observação: Diretivas (#) não usam ; (ponto e vírgula).

> Não estou conseguindo reproduzir o exemplo do Capítulo 8 – “Display LCD 2x16”. O exemplo é compilado sem nenhum erro, mas o display não funciona.

Resposta: A biblioteca biblioteca_lcd_2x16.c, disponibilizada para download, continha um erro no código de inicialização do display LCD 2x16.

A biblioteca já foi corrigida. Versão atual: v0.1.

Observação: Caso os caracteres do display LCD alfanumérico não estejam aparecendo no visor, verifique se a tensão no pino V0 (contraste) do display está entre 150mV e 500mV. Se for o caso, ajuste o valor do potenciômetro.

> A EUSART não está funcionando corretamente.

Foi constatado que a função baudUSART( ), do compilador MPLAB C18 v3.32, não está alterando, corretamente, os registros do módulo EUSART. Há duas soluções para este problema.

Primeira Solução.

Substituir a função baudUSART( ), por exemplo:

baudUSART (BAUD_8_BIT_RATE              //Gerador de 8bits.

                    & BAUD_AUTO_OFF          // Desabilita o auto baud rate.

                    & BAUD_WAKEUP_OFF);  // Desabilita o auto-wake-up

pelas instruções:

BAUDCONbits.BRG16 = 0; // Gerador de 8bits.                 (0 – Gerador de 8bits e 1 – Gerador de 16bits)

BAUDCONbits.ABDEN = 0; // Desabilita o auto baud rate.  (0 – Desabilita e 1 – Habilita)

BAUDCONbits.WUE = 0;     // Desabilita o auto-wake-up.   (0 – Desabilita e 1 – Habilita)

Observação: No modo síncrono também existe a instrução BAUDCONbits.SCKP, onde 0 define o nível baixo como inativo e 1 define o nível alto como inativo.

Segunda Solução.

Aplicar a máscara OU (#define USE_OR_MASKS) nas funções. Veja o exemplo seguinte:


#include <p18f4550.h>         // Arquivo de cabeçalho do PIC18F4550.

#define USE_OR_MASKS    // As funções utilizam uma máscara ‘OU’

#include <usart.h>                // Adiciona a biblioteca contendo as funções da USART.

...

OpenUSART (USART_TX_INT_OFF           //Interrupção de transmissão desabilitada.

                        | USART_RX_INT_OFF         //Interrupção de recepção habilitada.

                        | USART_ASYNCH_MODE   //Modo assíncrono.

                        | USART_EIGHT_BIT            //Dado de 8bits.

                        | USART_BRGH_LOW          //Alta velocidade

                        , 77);                                      //Baud rate de 9600bps. (Fosc = 48MHz)

 

baudUSART (BAUD_8_BIT_RATE             //Gerador de 8bits.

                       | BAUD_AUTO_OFF              //Auto baud rate desabilitado.

                       | BAUD_WAKEUP_OFF);      //Desabilita o auto-wake-up.


Observação: Se a diretiva #define USE_OR_MASKS for inserida no código, todas as constantes das funções do compilador devem ser separadas por um OU lógico ( | ).

Comments