PIC

Introdução ao PIC12F675

Introdução ao PIC12F675

Essa é uma introdução ao PIC, dessa vez um dos menores em recursos e pinos.
O PIC12F675 é um PIC de 8 pinos, dos quais 6 podem ser utilizados para I/O. Ele é um MCU de 8 bits e possui 1 conversor A/D de 4 canais. Ele pode ser ligado a um cristal externo de até 20Mhz, mas ele possui um oscilador interno de 4Mhz e para projetos muito simples que não necessitem velocidade pode ser o ideal.

Ele não possui módulo CCP, portanto não possui portas PWM, o que seria excelente para controlar um LED RGB de 4 pernas. De qualquer forma, há um LED RGB de 2 pernas cujo as cores não podem ser controladas e alternam por intervalos de tempo.

Apesar do hardware minimalístico, existem muitas possibilidades para ele. O primeiro exemplo será (obviamente):

Acender um LED
O esquema é o seguinte:

O desenho está em uma protoboard full porque a partir desse modelo vamos expandir um pouco o projeto.

Programar para PIC como escrevi em outro post, não é tão simples quanto programar em Arduino.
Para poder imaginar aplicações para o modelo de PIC escolhido, é necessário conhecer seus recursos. Já nesse pequeno hardware, pode ser necessário conhecer também alguns truques, como multiplexar. Isso será visto em outro post.

Como sempre, utilizando a IDE MikroC para desenvolver, descreverei previamente os recursos dos quais faremos uso no exemplo de código adiante.

Registrador TRISIO
O TRISIO é o registrador que configura os pinos como entrada ou saída. Com 0 os pinos ficam em OUTPUT, com 1 os pinos são configurados como INPUT. Claro, os pinos podem ser configurados individualmente em bits, hexa ou deslocamento de bits. Darei os 3 exemplos nesse post mais adiante.

Registrador GPIO
O GPIO configura os pinos como HIGH (1) ou LOW (0). Em grandes PICs, GPIO é chamado PORT. Os bits podem ser setados de duas maneiras; GPIO.Bx para setar o bit x ou ajustando o valor do bit correspondente através dos modos explicados mais adiante.

Para deixar claro; quando o PINO estiver em OUTPUT e HIGH, o LED se acenderá. Muitos recomendam utilizar o pino do PIC para fazer aterramento, então o pino deveria ser configurado para INPUT e LOW e o LED seria aterrado nesse pino.

Configurando pinos
Existem 4 modos de configurar um pino, utilizando o pino 5 como exemplo:

Particularmente, deslocar os bits me parece o mais prático dos modos depois de apontar o bit diretamente na variável do pino. Para melhor entendimento, o que esse deslocamento faz é pegar o 1 e deslocá-lo para a esquerda 2 vezes. Se fosse (1<<0), então o primeiro dos 8 bits receberia o valor 1, ficando 00000001. Deslocando 2 para a esquerda ficará 00000100.

Nesse datasheet pode-se ver que o pino 5 corresponde à porta 2 (GP2), utilizado no exemplo desse post.

O código de funcionamento de um blink com o LED é o seguinte:

O regulador de tensão quebrou um bom galho também, porque peguei uma fonte de 9v para alimentar o PIC com 5v, desse modo:

No esquema lá em cima você pode ver melhor a forma de conectar. Basicamente, olhando o regulador de frente:
1 – Entrada (até 19V nesse modelo)
2 – Terra (comum para o circuito e fonte)
3 – Saida 5v.

Farei outros posts com o P12F675 para mostrar um pouco mais do que se pode fazer com um hardware pequeno como esse.

Esse post não merece um video, não é mesmo? :-)

Sugiro também que veja esse artigo sobre controle de LEDs utilizando um shift register 74HC595.

Se gostou, não deixe de compartilhar; dê seu like no video e inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Prefere seguir-nos pelo facebook? Basta curtir aqui.

Prefere twitter? @DobitAoByte.

Próximo post a caminho!

2 comments
  1. Anônimo

    Olá, obrigado pelo post.
    Preciso de uma ajuda, estou usando o pic 12c509 e programando no PIC C Compiler (CCS).
    Não estou conseguindo configurar os pinos como entrada ou saída, da erro, fiz como indicado no seu texto mas nao deu certo.
    Poderia me ajudar?
    Obrigado!!

  2. Marcio MLBP

    Olá, obrigado pelo post.
    Preciso de uma ajuda, estou usando o pic 12c509 e programando no PIC C Compiler (CCS).
    Não estou conseguindo configurar os pinos como entrada ou saída, da erro, fiz como indicado no seu texto mas nao deu certo.
    Poderia me ajudar?
    Obrigado!!

%d blogueiros gostam disto: