FAVORITAR
FecharPlease login

Utilizando Multiplexação de Pinos para Reduzir o Uso de Pinos em Microcontroladores de 8 bits

Este artigo abordará dois exemplos de uso de multiplexação em pinos de Entrada/Saída de Propósito Geral (GPIO) para reduzir o uso de pinos em um projeto. O primeiro exemplo utiliza a técnica de "Charlieplexing" e o segundo utiliza periféricos de temporização e interrupções para alternar rapidamente entre um estado de entrada e um estado de saída em um pino, permitindo a leitura de um botão pressionado enquanto aciona um LED.

Multiplexação de Pinos em Microcontroladores PIC® e AVR®

Os pinos de Entrada/Saída de Propósito Geral (GPIO) são uma das especificações mais importantes a serem consideradas ao escolher um microcontrolador para um projeto. É necessário ter pinos suficientes para conectar o microcontrolador a todos os outros componentes do projeto; no entanto, ter mais pinos do que o necessário pode resultar em aumento desnecessário no custo do projeto e ocupar mais espaço na placa. Além disso, reduzir o número de pinos necessários em um projeto pode fazer diferença entre dois tamanhos de encapsulamento em um design. Se ao menos houvesse uma maneira de obter alguns pinos de I/O extras no menor encapsulamento ! Felizmente, existem métodos para liberar pinos em tais casos.

Aqui estão dois exemplos criados pela equipe de aplicativos da Microchip usando a família de microcontroladores AVR DD. Primeiro, discutiremos a multiplexação dos pinos GPIO para controlar LEDs por meio de uma técnica chamada “Charlieplexing”. Em seguida, veremos como executar simultaneamente um pushbutton separado e um LED usando um único pino.

A ideia central por trás do Charlieplexing é aproveitar os três estados em que o pino do microcontrolador pode estar: digital HIGH, LOW e estado de entrada digital de alta impedância (também conhecido como HIGH-Z ou Tri-State). Ao usar esses três estados em vez dos típicos HIGH e LOW, o usuário pode usar n números de pinos para acionar até (n2-n) LEDs separados. Neste exemplo, três pinos designados permitiriam o controle de seis LEDs separados.

Então, como exatamente o charlieplexing funciona? Para entender isso, precisamos analisar um exemplo.

Aqui temos três pinos de I/O controlando seis LEDs.

Se quisermos ligar apenas o LED 1, precisaremos definir o PA2 como HIGH, o PA3 como LOW e o PA4 como HI-Z (alta impedância). A corrente fluirá através do LED 1 e o acenderá, enquanto todos os outros LEDs permanecerão desligados.

multiplexação de pinos em microcontroladores de 8 bits

A alta impedância (tri-state) é importante aqui, porque se o PA4 fosse definido como “LOW”, ele também ligaria inadvertidamente o LED 5. Como mostrado abaixo:

multiplexação de pinos em microcontroladores de 8 bits

O estado lógico de alta impedância garante que a corrente elétrica só percorra o LED1. Esse processo pode ser repetido para qualquer LED no circuito, com a combinação correspondente de estados dos pinos de E/S (o usuário deve ter um estado HIGH, um estado LOW e o restante em HIGH IMPEDANCE para obter o comportamento esperado).

Embora em um determinado momento esse método acenda apenas um LED, a rápida alteração dos estados dos pinos de E/S cria a ilusão de vários LEDs acesos. (O escurecimento dos LEDs funciona por um princípio muito semelhante usando modulação por largura de pulso em um único LED). Isso pode ser visto abaixo:

multiplexação de pinos em microcontroladores de 8 bits

O segundo exemplo envolve a alternância entre um LED e um botão em um único pino.

Isso é realizado utilizando interrupções e timers a nosso favor. Na maior parte do tempo, o pino do microcontrolador está acionando o LED. No entanto, um periférico de temporização periodicamente dispara uma interrupção dentro do microcontrolador para alternar rapidamente o pino de uma saída para uma entrada e, em seguida, verificar o status do botão. Embora isso pare de acionar temporariamente o LED, se o processo for rápido o suficiente, há pouco ou nenhum efeito visível no LED enquanto o status do botão é verificado.

Utilizamos esse método no exemplo a seguir. O microcontrolador está acionando um LED piscante continuamente, enquanto verifica periodicamente o botão e acende um LED separado se o botão for pressionado.

multiplexação de pinos em microcontroladores de 8 bits

Embora esta postagem cubra apenas o básico dessas duas técnicas, a página correspondente no GitHub publicada pela equipe de aplicativos da Microchip contém diagramas, código de exemplo e uma explicação muito mais detalhada. Visite essa postagem e a página da Família de Produtos AVR DD para saber mais.

Microchip na América Latina

A Artimar é representante comercial das principais fábricas mundiais de componentes eletrônicos. Com 60 anos de tradição, atua em parceria com a Microchip por 31 anos, juntos sempre buscando trazer alta tecnologia com novos recursos e produtos que ajudam no setor de eletroeletrônica em toda a América Latina.

A Artimar pode te ajudar a encontrar a melhor solução para o seu projeto. Possuímos uma equipe de especialistas que estão prontos para te ajudar.

Clique abaixo e tenha acesso ao suporte técnico Artimar, distribuidores autorizados Microchip para adquirir os seus produtos ou entre em contato conosco: https://www.artimar.com.br/comprar-microchip/

Artigo escrito por Nate Thompson, Alexandru Sabiuta e publicado no blog da Microchip: Using Pin Multiplexing to Reduce Pin Usage on 8-Bit Microcontrollers

Traduzido pela Equipe Embarcados. Visite a página da Microchip No Embarcados

(*) Este post foi patrocinado pela Microchip

Sem licença Creative Commons
Home » Hardware » Utilizando Multiplexação de Pinos para Reduzir o Uso de Pinos em Microcontroladores de 8 bits

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS