Antes de começarmos a programar os
microcontroladores que acompanham a LaunchPad, vamos conhecer os pinos de
entrada/saída do microcontrolador MSP430G2553.
O MSP430G2553 possui ao todo 20
pinos, sendo 16 pinos de IO divididos em 2 grupos chamados PORT1 e PORT2. Cada
pino pode ser configurado como entrada digital, saída digital ou para utilização
dos periféricos.
Os pinos das portas PORT1 e PORT2
possuem a capacidade de gerar interrupções. Cada pino pode ser configurado
individualmente para gerar uma interrupção em uma borda de subida ou descida de
um sinal de entrada. As interrupções desviam a execução do programa para um endereço
armazenado no vetor de interrupção, sendo que cada porta tem um vetor de interrupção
distinto, mas que trata a interrupção de todos os pinos da porta.
Cada pino também possui resistores
de pullup/pulldown internos, que podem ser ativados para cada pino
separadamente.
Outra função incluída nos pinos do
msp430g2553 é o oscilador interno para uso em sensores de toque capacitivos,
mas isto fica para um próximo post.
A figura 1 mostra o Device Pinout para o msp430g2553 e logo
abaixo são apresentados os registradores utilizados para configuração e uso dos
pinos.
Figura 1: Pinos do msp430g2553.
Direction
Register - PxDIR
Cada bit deste registrador controla
se seu respectivo pino será de entrada ou saída, independente se o pino esta
configurado para IO digital ou sendo utilizado por periféricos. Quando um bit é
colocado em nível alto (1), o pino correspondente é configurado como saída (output) , caso seja colocado em nível baixo (0), o pino é colocado como
entrada (input). Vale lembrar que tanto
este como os outros registradores que controlam os pinos são registradores de 8
bits, sendo assim deve-se utilizar somente instruções de 8 bits para sua
manipulação. No exemplo abaixo colocamos o pino P1.6 (PORT1, pino 6) como saída
e o pino P2.3 (PORT2, pino 3) como entrada.
//*********
Assembly *********//
Bis.b 01000000b, &P1DIR
; Configura P1.6 como entrada
Bic.b 00001000b, &P2DIR ; Configura P2.3 como saída
//********* C
*********//
P1DIR
|= 01000000b;
P2DIR
&= ~00001000b;
Input
Register –
PxIN
Cada bit deste registrador reflete o
estado do pino (1 ou 0) correspondente, quando o pino esta configurado para
entrada digital. Ele é um registrador read-only,
ou seja, só para leitura e tentar escrever nele causará um aumento de corrente
durante um pequeno intervalo de tempo. Se o bit lido for 1, significa que o
sinal de entrada no pino esta em nível alto, caso contrário (0), o pino esta em
nível baixo.
Output
Register –
PxOUT
Quando um pino esta configurado como
saída digital, este registrador controla se o nível lógico de saída será alto
ou baixo. Colocando um bit em 0 implica que o pino correspondente tenha como saída
o nível lógico baixo, caso contrário (1), o pino terá nível lógico alto.
Se o resistor de pullup/pulldown estiver habilitado, este registrador controla se o pino
será "puxado" para baixo (bit = 0) ou será "puxado" para
cima (bit = 1).
Pullup/Pulldown
Resistor Enable Register –
PxREN
Este registrador controla se os
resistores de pullup/pulldown estarão
ativos para cada pino. Colocando um bit em nível lógico baixo (0) desabilita o
resistor de pullup/pulldown do
respectivo pino. Se colocado em nível lógico alto (1), ativa o resistor.
Function
Select Registers –
PxSEL e PxSEL2
Como dito anteriormente, os pinos do
microcontrolador podem ser utilizados tanto para entrada/saída digital como
para utilização pelos periféricos (o ADC, por exemplo). Os registradores PxSEL
e PxSEL2 são utilizados para esta configuração. A tabela 1 mostra os valores
dos registradores para um dado pino e a configuração resultante.
PxSEL
|
PxSEL2
|
Função do pino
|
0
|
0
|
Configurado
como entrada/saída digital.
|
0
|
1
|
Configurado
para uso do primeiro periférico.
|
1
|
0
|
Reservado.
|
1
|
1
|
Configurado
para uso do segundo periférico.
|
Tabela
1: Valores para PxSEL e PxSEL2.
Note que, quando
configuramos um pino para uso com os periféricos, as interrupções para o pino são
desabilitadas.
Outra consideração
importante é que quando um pino é configurado para uso do periférico, a direção
do pino não muda automaticamente, sendo necessário o programador ajustar a direção
correta no registrador PxDIR.
Pinos Desconectados
Pinos que não são utilizados no
projeto devem ser configurados como saída digital para evitar que ruídos causem
aumento no consumo de corrente, podendo ser em nível lógico baixo ou alto.
Características Elétricas
O microcontrolador na LaunchPad é
alimentado com uma tensão de 3.3V, sendo assim, seu nível lógico alto é de
3.3V, que não é compatível com o nível lógico TTL (0V baixo e 5V alto). Para o
funcionamento correto de circuitos que utilizem C.I.s TTL, faz-se necessário uma
análise do projeto para não danificar o microcontrolador e evitar que um sinal em
nível alto na LaunchPad não seja reconhecido como tal.
A corrente máxima que um pino do
MSP430G2553 pode fornecer/drenar sem apresentar uma queda/aumento na tensão é 6 mA por pino ou 48mA por porta . Correntes muito acima deste limite podem
danificar o microcontrolador.
Outra informação importante é a frequência
máxima de comutação de um pino, que para o MSP430G2553 é de 12MHz para pinos
normais e 16MHz para pinos com saída de clock.
Referências
- MSP430x2xx Family User's Guild (SLAU144I);
- Datasheet MSP430G2553.
Olá David,
ResponderExcluirGostaria de parabeniza-lo pela atitude que você está tendo de ajudar iniciantes como eu no msp430, ja que encontrar material em português dele é muito difícil. E gostaria que você continuasse fazendo novas postagens, pois isso realmente nos ajuda muito.
Abç
Ola David como á foi dito no comentário acima...meus parabéns, sou iniciante com esse tipo de placa e seu post foi de grande ajuda, espero que possa continuar postando.Muito obrigado
ResponderExcluirOla David como á foi dito no comentário acima...meus parabéns, sou iniciante com esse tipo de placa e seu post foi de grande ajuda, espero que possa continuar postando.Muito obrigado
ResponderExcluirOla David como á foi dito no comentário acima...meus parabéns, sou iniciante com esse tipo de placa e seu post foi de grande ajuda, espero que possa continuar postando.Muito obrigado
ResponderExcluir