Hoje iremos começar o assunto sobre microcontroladores PIC. Neste artigo teremos uma breve introdução, e alguns conceitos fundamentais que norteiam a arquitetura destes microcontroladores.

A fabricante responsável por esses componentes é a empresa Microchip. Se você pesquisar, irá notar que os microcontroladores PIC tem uma vasta documentação no que diz respeito a desenvolvimento e programação, e isso auxilia muito quem está começando a desenvolver projetos com esses componentes.

Antes de começarmos, vamos entender um conceito básico: O que é um microcontrolador ?

Um microcontrolador pode ser compreendido como um componente eletrônico que possui em sua construção uma série de recursos e periféricos que são programáveis, e que podemos utilizar isso para controlar processos. Em outros artigos que falamos sobre o Arduino, por exemplo, subentendemos que o mesmo é nada mais do que uma plataforma de desenvolvimento que possui um microcontrolador principal, só que neste caso é de outro fabricante.

Em outras palavras, temos em uma pequena pastilha de Silício encapsulada, um componente eletrônico que possui uma série de características como memória de programa, memória de dados, portas de uso geral, timers, comunicação serial, conversor AD, entre muitas outras características que veremos no decorrer dos artigos.

Vamos agora solidificar alguns conceitos fundamentais relacionados aos microcontroladores.

Memórias

Como o nome já diz, uma memória tem a capacidade de armazenar alguma informação. Para isso existe os endereçamentos de memória dentro do microcontrolador, e ela pode ser lida, escrita ou ambas, dependendo da configuração da mesma

Duas subcategorias importantes é a memória de programa e a memória de dados. Basicamente na memória de programa, entre outras funções, teremos armazenado o nosso programa a ser executado. Já a memória de dados é utilizada para armazenar as variáveis e demais registradores. Veja abaixo os conceitos de alguns tipos de memória.

ROM (Read Only Memory): Somente leitura, gravada pelo fabricante do componente eletrônico. Memória de programa.

FLASH: Um tipo de memória muito utilizado nos microcontroladores, seu conteúdo pode ser escrito e apagado milhares de vezes. Memória de programa.

RAM (Random Access Memory): É empregada no armazenamento temporário de variáveis e registradores. Memória volátil, ou seja, quando o componente é desligado da alimentação, a informação se perde. Memória de dados.

EEPROM (Electrically Erasable Programmable Read Only Memory): Um tipo de memória não volátil, pois a mesma permite que se possa gravar informações e mesmo após ser desconectada sua alimentação, a informação não se perde. Memória de dados.

Barramentos

Basicamente os barramentos são as vias físicas de ligação para a comunicação entre os componentes envolvidos no microcontrolador. Temos diferentes tipos de barramentos, cada qual com sua função. Por exemplo o barramento de dados é por onde ocorre a troca de dados e informações entre o processador e os periféricos de entrada e saída.

Arquitetura

Os microcontroladores PIC são baseados na arquitetura Harvard. A principal característica deste tipo de arquitetura é que o acesso da memória de dados é separado do acesso da memória de programa.

Isso significa que a leitura de determinadas instruções pode ocorrer ao mesmo tempo que a execução de outras instruções, o que implica obviamente em velocidade de processamento. Isso nos remete ao processo chamado de Pipeline, que é basicamente a característica de buscar uma informação em um ciclo de máquina e executá-la no próximo.

O PIC são considerados processadores RISC (Reduced Instruction Set Computer), ou seja, computador com set de instruções reduzida. Isso significa que temos um número menor de instruções, o que não nos impede de construir funções e programas mais complexos, ficando esta tarefa para o desenvolvedor.

CPU

A unidade central de processamento é a parte principal do sistema. É nela que ocorre a execução e o processamento de dados, controlando, recebendo e enviando informações das demais estruturas internas.

Estrutura interna

Os microcontroladores geralmente são divididos em famílias. Para compreendermos melhor, vamos observar o diagrama de blocos de um PIC16F628A, um microcontrolador de 8 bits, que será muito utilizado em nossos artigos.

 

Um sistema trabalha em sincronia, por isso temos um sinal de clock. Esse sinal é gerado por um oscilador. Oportunamente veremos com maiores detalhes as diferentes fontes de clock que podemos utilizar. O clock do sistema permitirá que o nosso decodificador de instruções (Instruction Decode) execute as instruções adequadamente.

O decodificador de instruções pode ser compreendido como o elemento que irá interpretar as instruções recebidas, executá-las e direcioná-las conforme o set de instruções do processador, que varia de modelo para modelo, sendo ele um dos principais blocos do conjunto.

Para endereçar as instruções em uma determinada sequência, temos um contador. Ele é o Program Counter (PC) ou contador de Programa. Ele é incrementado a cada instrução que é iniciada e sempre aponta para a próxima instrução a ser executada.

A ALU (Aritmetic and Logic Unit) ou unidade lógica aritmética é bloco responsável pelos cálculos no processador, efetuando as operações lógicas e aritméticas. Se você observar o diagrama de blocos acima, vai visualizar que este circuito está trabalhando em conjunto com outros blocos de registradores.

Um deles é o bloco W ou Work. Este registrador é o acumulador, e ele está envolvido nas operações que são efetuadas na ALU. Entre outras funções, uma das principais é que ele é utilizado como ponte ou interposto para a troca de dados entre registradores. Em função da arquitetura de como o microcontrolador PIC foi concebido, não é possível trocar diretamente as informações. Assim devemos copiá-las do registrador de origem para o registrador W e deste para o registrador de destino.

O outro registrador é o STATUS. Entre outras funções, uma delas é indicar o estado de um determinada operação realizada na ALU. Através de flags, por exemplo, ele pode indicar o estouro de registradores, ou se um determinado resultado é igual a zero. Ele também seta os bits de seleção do banco de memória.

O bloco FSR (Special Funtion Register) diz respeito aos registradores de funções especiais e tem muitas funções como o controle de periféricos e dispositivos internos. Ao longo dos artigos iremos proceder com o estudo dos demais registradores envolvidos.

A pilha ou STACK também é uma estrutura que pode ser observada no diagrama de blocos. A pilha é caracterizada por apresentar um lugar de acesso aos dados. Ela funciona como blocos empilhados, pois sua principal função é armazenar endereços de retorno. Você pode atrelar a pilha como um organizador de instruções.

Por exemplo, se ocorre um desvio para uma determinada rotina, teremos o endereço da próxima instrução armazenado na pilha. Assim quando aquela determinada rotina terminar e houver o processamento das instruções, o programa continuará do ponto onde parou.

Como foi dito os microcontroladores contam com uma gama de recursos e periféricos. Esses periféricos pode ser vistos na figura. São basicamente circuitos destinados a efetuar determinadas funções. E como você pode observar, temos temporizadores/contadores (timers), comparadores, conversores, entre outros que veremos mais adiante.

No diagrama ainda é possível observar os registradores PORTA e PORTB. São basicamente os nossos dispositivos de entrada e saída, e através deles efetuamos a interface com o mundo externo. No próximo artigo teremos o primeiro exemplo básico utilizando esses e outros registradores, o que facilitará a compreensão de seu funcionamento.