microcontroladores arm cortex m0+ aplicação em robôs autoguiados- gpio (general purpose i/o)

21
Fábio Souza 2015 Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados GPIO (General Purpose I/O)

Upload: fabio-souza

Post on 12-Apr-2017

82 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

Fábio Souza2015

Microcontroladores ARM Cortex M0+Aplicação em robôs autoguiados

GPIO (General Purpose I/O)

Page 2: Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

Fábio Souza 2015

Introdução aos GPIOsUm dos grandes beneficio de um microcontrolador em relação aos microprocessadores são os pinos de I/O de uso geral.

Estes pinos efetuam a interface entre o microcontrolador e o mundo externo. Nestes pinos podem ser ligados os botões, LED’s, motores, etc.

Nesse módulo aprenderemos como funcionam os pinos de GPIO nos microcontroladores Kinetis L e como fazer corretamente as configurações para uso dos mesmos.

Page 3: Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

Fábio Souza 2015

GPIO Kinetis L25ZO Kinetis KL25 contém 4 portas, sendo elas PORTA, PORTB, PORTC, PORTD e PORTE, onde:

● PORTA = 8 pinos;● PORTB = 8 pinos;● PORTC = 16 pinos;● PORTD = 8 pinos;● PORTE = 13 pinos;● TOTAL = 53 I/O’s disponíveis com multiplas funções

Page 4: Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

Fábio Souza 2015

Diagrama de blocos

Page 5: Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

Fábio Souza 2015

Conexão do GPIO a CPU

Nota-se no diagrama de blocos que os PORTs se comunicam através de um barramento com o microcontrolador. Como os pinos de GPIO não são de alta velocidade é possível multiplexar os mesmos ou conectá-los em um barramento compartilhado, reduzindo assim a quantidade de vias necessárias para interface com a CPU.

Page 6: Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

Fábio Souza 2015

Pinos da FRDM KL25Z

Page 7: Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

Fábio Souza 2015

RegistradoresCada PORT possui um conjunto de registradores para configuração e controle dos pinos de GPIO. No Kinetis L os seguintes registradores são utilizados:

● SIM_SCGC5 (System Clock Gating Control)

● Pin Control Register n (PORTx_PCRn)

● GPIO Port Data Direction Register (GPIOx_PDDR)

● Port Data Output Register (GPIOx_PDOR)

● Port Set Output Register (GPIOx_PSOR)

● Port Clear Output Register (GPIOx_PCOR)

● Port Toggle Output Register (GPIOx_PTOR)

● Port Data Input Register (GPIOx_PDIR)

Page 8: Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

Fábio Souza 2015

Ativando o Clock para o PORTAntes de utilizar o pino deve-se ativar o clock para cada conjunto de porta. Isso é feito através do registrador:

SIM_SCGC5 (System Clock Gating Control)

Page 9: Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

Fábio Souza 2015

Configurando o pino como GPIOOs pinos geralmente possuem diversas funções que são multiplexadas ao mesmo. Dessa forma é necessário configurar qual função vai ser utilizada. Para isso utiliza-se o registrador : Pin Control Register n (PORTx_PCRn).Para uso do pino como GPIO deve-se configurar o MUX como 1. Conforme tabela na pagina 184, do KL25 Sub-Family Reference Manual.

Page 10: Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

Fábio Souza 2015

Configurando a direção do pinoAntes de utilizar o pino deve-se configurar o mesmo como uma entrada ou saída digital. Para isso utiliza-se o registrador GPIO Port Data Direction Register (GPIOx_PDDR), conforme a necessidade do projeto:

Page 11: Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

Fábio Souza 2015

Alterando valores nos pinos de saídasQuando o pino for configurado como saída, existem 4 registradores que irão determinar o estado do pino:

● Port Data Output Register (GPIOx_PDOR)

● Port Set Output Register (GPIOx_PSOR)

● Port Clear Output Register (GPIOx_PCOR)

● Port Toggle Output Register (GPIOx_PTOR)

Page 12: Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

Fábio Souza 2015

Port Data Output Register (GPIOx_PDOR)Coloca o pino correspondente em nível lógico “1” ou “0”.

Page 13: Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

Fábio Souza 2015

Port Set Output Register (GPIOx_PSOR)Escreve nivel lógico “1” no pino correspondente

Page 14: Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

Fábio Souza 2015

Port Clear Output Register (GPIOx_PCOR)Escreve nivel lógico “0” no pino correspondente

Page 15: Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

Fábio Souza 2015

Port Toggle Output Register (GPIOx_PTOR)Inverte os estado lógico presente no pino

Page 16: Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

Fábio Souza 2015

Leitura de estados de pinos de entradaPort Data Input Register (GPIOx_PDIR) - Contêm o estado presente no pino configurado como entrada Digital.

Page 17: Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

Fábio Souza 2015

Exemplo 1 - LEDs (GPIO_LEDS)Acionar os leds RGB presentes na FRDM KL25Z. Cada led pode ser manipulado separadamente com a configuração dos registradores.

Page 18: Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

Fábio Souza 2015

Exemplo 1 - EsquemáticoConforme exibido no esquemático da FRDM KL25Z os LEDs estão ligados da seguinte forma:

Note que estão ligados em anodo comum, dessa forma para ligar o LED o pino correspondente dever ir para nivel ‘0’.

Page 19: Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

Fábio Souza 2015

Exemplo 1 - passos1 - Ligar o clock para o PORT dos LEDs2 - Configurar o pino como GPIO3 - Configurar o pino como saída4 - ligar leds

Page 20: Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

Fábio Souza 2015

Exemplo 2 - Piscar LEDS (GPIO_BLINK)Piscar os leds utilizando rotina de delay

Passos:1. Ligar LED2. Aguardar 1 seg3. Desliagar LED4. Aguardar 1 seg

Page 21: Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

Fábio Souza 2015

Exemplo 3 - Teclas (GPIO_TECLAS)Fazer a leituras das teclas presentes no shield e ligar leds quando forem pressionadas. SW1 comanda D3 e SW2 comanda D4.