Configuração e Acionamento de IO na Família LPC21XX

Este post faz parte da série Projeto ARM com Keil uVision4

Olá pessoal, nos artigos anteriores realizamos toda a configuração da IDE e da CPU do processador. Agora iremos focar no principal e mais básico de todos os periféricos que a arquitetura ARM nos oferece: GPIO (General Purpose Input Output).

Este periférico é responsável pelas entradas e saídas a serem definidas para cada IO.

Para isso, vou utiliza como base a família LPC21XX, na NXP.

Veja abaixo a disposição do mapa de periféricos presentes nesta plataforma ARM7 (Exemplo: LPC2142).

Periféricos LPC2142. 
Figura 1 – Periféricos LPC2142.

O GPIO é composto por 4 registradores específicos. Cada qual com uma função de controle ou varredura. São os registradores: IODIR, IOPIN, IOSET,  IOCLR;  

Cada registrador possui seu endereçamento em 32 bits para representação de todos os IO´s do PORT.

Na figura abaixo, segue um resumo da definição e respectiva função de cada um: 

Definição dos Registradores do GPIO. 
Figura 2 – Definição dos Registradores do GPIO.

Como plataforma de teste, irei utilizar um Kit ARM 7 desenvolvido pela empresa Eng-House. Este Kit pode ser usado para este estudo bem como para os demais que estarei demonstrando. Mas fiquem livre para testar e aplicar este código em outras plataformas. Só é importante alterar o Device utilizado.  

Placa Didática ARM 7 TITAN. 
Figura 3 – Placa Didática ARM 7 TITAN.

Esta disponibilizado o Download completo do programa no final do Post para servir como referência de estudo. 

Abaixo alguns trechos importantes a serem observados: 

#define OUT1 (1 << 7) //P0.7_PWM2
#define OUT2 (1 << 8) //P0.8_PWM4
#define OUT3 (1 << 21) //P1.21_PWM5
#define OUT4 (1 << 9) //P1.9_PWM6

O trecho acima mostra uma operação bit a bit para “habilitar/modificar” um bit especifico de um byte que neste caso representa o byte que controla o IO.

Um exemplo de como esta operação ocorre: 

Operador deslocamento. 
Figura 4 – Operador deslocamento.

O deslocamento à esquerda ocorre a partir do bit 0 em “direção” ao bit 31. 

IOSET0 |= OUT1; //coloco a saída P0.7 do microcontrolador em nível ALTO
delay(50000); /* Delay 50000us */
IOCLR0|= OUT1; //coloco a saída P0.7 do microcontrolador em nível BAIXO
IOSET0 |= OUT2; //coloco a saída P0.8 do microcontrolador em nível ALTO
delay(50000); /* Delay 50000us */
IOCLR0|= OUT2; //coloco a saída P0.8 do microcontrolador em nível BAIXO
IOSET1 |= OUT3; //coloco a saída P1.21 do microcontrolador em nível ALTO
delay(50000); /* Delay 50000us */
IOCLR1|= OUT3; //coloco a saída P1.21 do microcontrolador em nível BAIXO
IOSET1 |= OUT4; //coloco a saída P1.9 do microcontrolador em nível ALTO
delay(50000); /* Delay 50000us */
IOCLR1|= OUT4; //coloco a saída P1.9 do microcontrolador em nível BAIXO

Notem que eu não preciso seguir sequencialmente os bits do PORT. Eu realizo o acionamento dos mesmos conforme desejo e necessidade. Aleatoriamente. 

Muitos podem achar curioso a utilização da expressão: 

IOSET0 |= OUT4; 

O “|=” é uma abreviação da operação bit a bit: 

IOSET0 = IOSET0|OUT4; 

Dessa forma realizamos o “SET” para nível Alto do bit P1.9 sem afetar o estado anterior dos demais bits (IO´s) deste PORT. 

Abaixo o exemplo completo deste programa para um estudo completo:

DOWNLOAD

Abraços e até a próxima!

Projeto ARM com Keil uVision4

Configurando um Microcontrolador LPC21XX (ARM7 de 32bits) Exemplo de utilização do uVision4-Keil para criar um projeto ARM
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
0 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Home » Software » Configuração e Acionamento de IO na Família LPC21XX

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: