Como gravar PIC 18F4550 com Pickit3 7

No nosso último post sobre PIC nós vimos Como gravar um PIC usando o Pickit 3, onde mostramos o uso do Gravador PIC USB PicKit3 para programar o PIC16F84A. Agora neste post vamos usar o mesmo processo para gravar um microcontrolador PIC18F4550:

Circuito Pickit3

O Pickit3 é um gravador muito fácil de usar, já que a gravação do chip é feita de forma direta utilizando o software MPLAB. Todas as etapas de instalação do MPLAB você encontra no post Programando PIC16F628A para piscar um led. As etapas para instalação do compilador XC, gratuito da Microchip, você encontra no post anterior sobre o Pickit3, mencionado anteriormente.

Circuito com Pickit3 e PIC18F4550

Antes de criar o projeto no MPLAB, monte o circuito abaixo, já que vamos transferir o programa diretamente do MPLAB para o microcontrolador. O circuito utiliza o microcontrolador PIC18F4550 (datasheet), um resistor de 1K e um led comum. Nesse circuito não vamos utilizar um cristal, já que o 18F4550 possui oscilador interno:

Circuito Pickit3 e PIC18F4550

A ligação do Pickit3 ao PIC18F4550 é feita conectando os pinos Vpp/MCLR, Vdd, Vss, PGD e PGC aos pinos correspondentes do CI. A alimentação do PIC pode ser feita de forma externa ou pelo próprio Pickit. O pino 6 do Pickit3 não é utilizado.

Criação do projeto no MPLAB

Na tela principal do MPLAB, selecione o menu FILE, depois NEW PROJECT. Na tela NEW PROJECT, selecione Standalone Project:

MPLAB - Novo projeto

Na tela seguinte vamos selecionar o microcontrolador. Selecione Advanced 8-bit MCUs, e PIC18F4550:

12 - New Project - Pic18F

Clique em NEXT e na tela seguinte selecione Pickit3:

MPLAB - Gravador

Selecione agora o compilador XC8:

MPLAB - Compilador

Na última tela, dê um  nome ao projeto. Vamos utilizar Led_Blink_PIC18F4550:

Projeto 18F4550

 Clique em finish para voltar à tela principal do MPLAB, com o projeto criado e a sua estrutura mostrada no lado esquerdo da tela:

Tela MPLAB

 Vamos adicionar o programa que vai controlar o LED clicando em Source Files, depois em NEW, e finalmente em C SOURCE FILE:

Tela Blink LED PIC18F4550

Na tela seguinte defina um nome para o arquivo em C. Pode ser o mesmo nome do projeto. Após clicar em FINISH, será aberta uma tela em branco no lado direito, onde vamos digitar/copiar o programa abaixo:

//Programa: Led Blink com Pickit3 e 18F4550
//Autor: MakerHero

#include <xc.h>

//BEGIN CONFIG
#pragma config FOSC = INTOSC_EC  //internal oscillator 
#pragma config PLLDIV = 4   //divide by 5 to give 4MHz to PLL 
#pragma config FCMEN = OFF  //no fail safe clock monitor 
#pragma config IESO = OFF   //oscillator switchover disabled 
#pragma config PWRT = ON    //oscillator power up timer enabled 
#pragma config BOR = OFF    //hardware brown out reset 
#pragma config WDT = OFF    //watchdog timer disabled 
#pragma config MCLRE = ON   //MCLR pin enabled 
#pragma config LPT1OSC = ON //timer1 low power operation 
#pragma config PBADEN = OFF //portB 0to 4 digital - not analogue 
#pragma config LVP = OFF    //low voltage programming disabled 
#pragma config CCP2MX = OFF //portc1 = CCP2 
#pragma config XINST = OFF  //do not allow PIC18 extended instructions 
#pragma config  STVREN = ON //stack overflow will cause reset 
//END CONFIG

void delay_ligado(void);  
void delay_desligado(void); 

void main(void) 
{ 
    TRISB = 0;     
    OSCCON = 0xF2;  //internal oscillator, 8MHz 
  
    while (1) 
    { 
        LATBbits.LATB0 = 1;
        delay_ligado();
        LATBbits.LATB0 = 0;
        delay_desligado(); 
    } 
} 
 
void delay_ligado(void) 
{
    int i, j;
    for(i=0;i<5000;i++)
    {
        for(j=0;j<20;j++)
        {}
    }
}

void delay_desligado(void) 
 {  int i, j;
    for(i=0;i<5000;i++)
    {
        for(j=0;j<20;j++)
        {}
    }
}

Feito isso, você terá uma tela parecida com essa:

Tela Blink LED 18F4550

Antes de transferir o programa para o microcontrolador, vamos configurar o MPLAB para que o Pickit3 forneça a tensão de alimentação necessária para o CI. Para isso, clique com o botão direito no nome do projeto, no lado esquerdo da tela (na imagem acima, Led_Blink_PIC18F4550), e selecione PROPERTIES. Na janela Project Properties, selecione Conf: Pickit 3 -> Power, e selecione a opção Power Target Circuit from Pickit3, conforme a imagem abaixo:

Tela Blink LED

Pressione F6 para que o programa seja transferido para o Pickit3 e gravado no microcontrolador. Durante o processo de gravação, o led Status do Pickit pisca em vermelho, retornando ao verde quando a gravação for finalizada.

Para testar o circuito, conecte o Vdd do Pickit3 ao pino 1 (MCLR/Vpp) do PIC18F4550, e o led começará a piscar em intervalos de 1 segundo.

Gostou? Deixe seu comentário logo abaixo.

Faça seu comentário

Acesse sua conta e participe

7 Comentários

  1. Professor gostaria se MCU de referencia SN8P2714KB Dip 28 da Sonix pode ser lido e gravador por este aparelho?

    Ou tem outro modo e aparelho para ler e gravar este componente?

    Abs,

    Carlos Roberto

    1. Olá Carlos!

      Pelo que encontrei não é compatível, o SN8P2714KB da sonix deve ser gravado pelos modelos MP da mesma empresa, como MP EZ, que consta no próprio datasheet do componente: https://www.sonix.com.tw/files/1/0B19BE5FE0692995E05012ACA96451E3

      Abraços!
      Vinícius – Equipe MakerHero

  2. Boa tarde !

    Fiz o mesmo programa para o PIC18F4520 mas tive alguns erros nas seguintes linhas:

    #pragma config FOSC = INTOSC_EC //internal oscillator
    #pragma config PLLDIV = 4 //divide by 5 to give 4MHz to PLL
    #pragma config BOR = OFF //hardware brown out reset

    Não consegui descobrir como fazer estas configurações no PIC18F4520.
    Alguém pode me dar uma ajuda?

    Obrigado.

  3. Ótimo tutorial,
    Só tenho uma duvida (fora de contexto)

    Como criaram a imagem da protoboard com as conexão do PIC e do PICKIT3 ?
    Estou tentando usar fritzing, mas não tem o PIC18f4550 nem o PIKIT3
    Grato.

  4. Quero saber se existe um gravador para o PIC 15F204EA. Estou consertando um inversor de energia que trabalha com esse componente. Se existir a possibilidade de programar, se tem biblioteca para ele, por favor alguém comenta ae. Obrigado.

  5. Só conseguir gravar esse pic utilizando uma fonte de alimentação externa, quando eu estava utilizando o pic kit 3 para alimentar o pic, dava um erro: Target device id (0x00) is an invalid….

  6. Obrigado Adilson, seu artigo me iluminou quando eu estava perdido. Duas observações:

    “Pressione F6 para que o programa seja transferido para o Pickit3 e gravado no microcontrolador. Durante o processo de gravação, o led Status do Pickit pisca em vermelho, retornando ao verde quando a gravação for finalizada.”
    Obs1.: O atalho não funcionou, mas cliquei naquele “play” verde e deu certo.

    “Para testar o circuito, conecte o Vdd do Pickit3 ao pino 1 (MCLR/Vpp) do PIC18F4550, e o led começará a piscar em intervalos de 1 segundo. ”
    Obs2.: Isso não funcionou, o Pickit3 não funcionou como fonte (não sei se foi só com o meu), liguei uma fonte de 5v no Vdd e no Vss e ai sim funcionou.