terça-feira, 28 de dezembro de 2010

Como o microcontrolador funciona?

Para explicar o funcionamento do microcontrolador usarei como modelo o PIC16f628A pois, será este o microcontrolador que irei trabalhar inicialmente.
A imagem acima retrata o  microcontrolador 16f628A, um chip de 18 pinos, as setas junto a cada pino mostra como esses pinos podem trabalhar, por exemplo, neste microcontrolador apenas os pinos 4, 5 e 14(na realidade tenho dúvida sobre o pino 5 mas até que me ensinem o contrario ele é apenas entrada de sinal) são apenas entrada de sinal ,todos os outros podem trabalhar como entradas ou saídas. Agora não entrarei em detalhes sobre a função ou como configurar cada pino para entrada ou saída pois, isso será revelado aos poucos com o aprendizado, mas falarei dos grupos de pinos existentes.
Notem os pinos 5 e 14 são apenas entrada de sinal pois eles são responsáves pela alimentação de tensão ao microcontrolador em geral 5V. VDD é o positivo e VSS o Negativo ou GND como quiser chamar.
Os outros pinos são separados por grupos denominados Port A(Porta) e Port B(Portb). cada port possui 8 pinos ligados a eles que são identificados como .
Porta - Ra0, Ra1, Ra2, Ra3, Ra4, Ra5, Ra6 e Ra7. 

Portb - Rb0, Rb1, Rb2, Rb3, Rb4, Rb5, Rb6, Rb7, 

Cada Port na realidade é um byte (8bits) de memória onde cada bit deste byte se refere a um pino. por padrão quando o bit está em nível alto ou seja, há tensão encima do mesmo ele é representado em binário pelo número 1. caso o nível seja baixo ou seja, não há tensão sobre o mesmo ele é representado em binário pelo número 0
Ex:
Portb com todos os pinos em nível alto = 11111111 - Em binário é este o número que vai está literalmente estar gravado na parte da memória que se refere ao Portb. Para os quem já conhecem de programação é só pensar que "Portb" é o nome da variável  que representa um espaço físico na memória do microcontrolador, esta variável possui 8 bit e é controlando o valor em cada bit que definimos se os pinos que estão ligados ao Portb estarão em nível alto ou baixo seja em grupo ou individualmente.
Ex.
 Portb     Rb0, Rb1, Rb2, Rb3, Rb4, Rb5, Rb6, Rb7
                 1      1      1       1       1       1      1      1    Todos os pinos  do Portb com nível alto.  
                 0      0      0       0       0       0      0      0    Todos os pinos do Portb com nível baixo
                0      1      0       1      0      1     0     1    Apenas os pinos Rb1, Rb3,Rb5 e Rb7 do Portb com nível alto.
A mesma situação ocorre para o Porta.
Assim podemos concluir que o que queremos quando programamos o microcontrolador é ter controle sobre suas portas, para exemplo note o desenho abaixo.




Segue a descrição do circuito

B1 - Quando apertado põe Ra2 em nível alto(1)
B2 - Quando apertado Põe RA4 em nível baixo (0) fazendo com que o processador Resete
Vss - Negativo para funcionamento do microcontrolador
Vdd - Positivo para funcionamento do microcontrolador (5v)
R1 e R3 - Resistor de controle de corrente
R2 Resistor Pull - UP (Mantém RA4 em nível alto enquanto B2 não é apertado e impede que haja curto quando B2 for apertado)
R4 Resistor Pull Down (Mantem o RA2 em nível baixo até que seja apertado o botão B1 e impede que haja curto quando B1 é apertado)
L1 - Led que acenderá quando Rb5 for para nível alto.

Talvez você se pergunte afinal eu também me perguntei, para que usar um microcontrolador para acender um led se eu posso liga-lo direto no botão?
Acontece que utilizando o microcontrolador eu posso além de ligar o led posso controlar o motivo para ligar, o tempo que leva para ligar, o tempo que vai levar para desligar ou posso simplesmente faze-lo piscar de forma intermitente e etc....
Como então programar para que o microcontrolador faça o que eu quero. Como eu disse iremos controlar na realidade os seus pinos e  é mais ou menos assim, no caso do circuito acima ,se eu quero que o led acenda ao apertar o botão
Eu diria o seguinte para ele.
inicio
se Ra2 = 1 (nivel alto Botão apertado)
    Rb5 = 1 (nivel alto led acesso)
se não Rb5 = 0 (nível baixo led desligado)
volta para inicio
Claro isso tudo em linguagem de programação.

No próximo Post iniciaremos o procedimento para a programação.

Nenhum comentário:

Postar um comentário