Introdução
Desta vez, como primeira bancada de testes para utilizar o analisador lógico, vamos interpretar alguns sinais digitais de um registrador de deslocamento (shift register 74HC595) e também a latência de interrupção em um Arduino e ESP32.
O analisador lógico utilizado para efetuar todos testes desta série de artigos será o Saleae Logic 8, que conta com 8 canais digitais/analógicos, 100MS/s de taxa de amostragem e utiliza o software da própria Saleae no computador como interface. Escolhi este analisador lógico para compor minhas ferramentas de trabalho pois ele conta com canais analógicos, funcionando como uma espécie de “mini-osciloscópio”, mas claro que longe de ser um substituto. Isso é extremamente útil para meu tipo de trabalho, onde preciso ver além dos sinais digitais, também monitorar os sinais analógicos que chegam aos pinos ADC do microcontrolador ou até monitorar as fontes de alimentação do circuito, bateria e afins. Em vez de ter que utilizar um osciloscópio separado já que não tenho um MSO, consigo monitorar tudo ao mesmo tempo na mesma tela.
Lembrando que você pode utilizar qualquer modelo de analisador lógico para acompanhar nossos testes.
Atenção: Caso você não consiga ler os detalhes dentro das imagens (valores, medições, tempos, etc), clique com o botão direito do mouse em cima da imagem e clique em “Abrir imagem em uma nova aba” ou “Open image on new tab”. Assim você poderá visualizar a imagem inteira e dar zoom pelo navegador.
Bancada de teste #1
Este teste consiste em analisar a entrada de dados serial e as saídas do CI 74HC595, para verificar se os valores das saídas estão sendo incrementados de um em um igualmente o valor da entrada serial.
Após conectar os canais do analisador lógico nos sinais que é preciso monitorar, basta configurar os parâmetros de captura como taxa de amostragem e filtro de ruídos para que possamos obter os dados e analisar!
Figura 4 – Sinais capturados do 74HC595.
Analisando o diagrama capturado na figura 4, podemos confirmar sem problemas que o código do microcontrolador está funcionando corretamente. Após cada pulso no Latch do 74HC595, o valor binário das saídas foi incrementado em 1 e a representação binária do contador também está correta. Nesta análise a ideia é verificar apenas o funcionamento do contador binário e não a temporização e velocidade dos sinais, logo, a análise foi concluída com sucesso!
Bancada de teste #2
Este teste consiste em analisar a latência de interrupção em que o microcontrolador recebe o sinal de um sensor de distância infravermelho e aciona uma saída como resposta ao estímulo, ou seja, queremos saber quanto tempo demora entre o sensor detectar um objeto e o GPIO ser acionado. O teste será feito em um Arduino Mega e um ESP32 para que possamos ver se há diferença entre ambos ou terão tempos iguais.
Em ambos microcontroladores, foram testados primeiramente um código que faz pooling da entrada para controlar a saída e depois outro código que aguarda entrada mudar de estado via interrupção para controlar a saída diretamente via registrador. Vale lembrar que o teste não é para tentar otimizar o código em ter a menor latência possível, mas sim apenas visualizar a latência em diferentes situações para demonstrar a utilização do analisador lógico.
A figura 5 acima mostra a captura de um sinal do sensor e a saída de ambos microcontroladores, olhando dessa distância pensamos que ambos tiveram funcionamento idêntico, porém, ao dar bastante zoom nesses sinais, podemos ver grandes diferenças!
Ao aproximar bastante a forma de onda nas figuras 6 e 7, podemos ver a latência diante dos nossos olhos como um passe de mágica. Algo que antes parecia ser “instantâneo”, agora pode ser visto e mensurado. Foram gerados dezenas de pulsos para calcular a latência média nas 4 situações abaixo e os resultados foram:
- Arduino com pooling: 14.54uS.
- Arduino com interrupção: 3.55uS.
- ESP32 com pooling: 6.62uS.
- ESP32 com interrupção: 1.98uS.
Conclusão
Com o analisador lógico capturando os sinais digitais, fica muito fácil analisar e interpretar o que realmente está acontecendo para que possamos melhorar nossos códigos/circuitos, entender o que tem de errado e também a ordem que as coisas acontecem. Fica claro a sua importância mesmo que com sinais simples, imagine com sinais complexos!








Sensacional o conteúdo dos 3 artigos José Morais. PARABÉNS pela explicação clara e a forma lúdica que você explicou o funcionamento. O do PROTOCOLO foi top !!! Esse analisador Saleae Logic 8 … o original … tinha que ser um pouco mais em conta.
Obrigado pelo feedback! Realmente o preço é proibitivo para nós, o imposto aplicado em cima dessa importação fica simplesmente ridiculo de caro. Mas pelo menos da pra obter até 50% de desconto para estudantes e entusiastas de eletronica. Tirando o preço, é um hardware incrível por conta dos canais analógicos. Esses valores analógicos juntamente com um resistor shunt para medir e loggar consumo de corrente de projetos é literalmente INSANO! Eu amei de coração hehe.
Eu tenho um basicão … de R$1,99 …rs … 8 canais … que ajuda bem. Mas essa da Saleae é bestial !!! Já o usei para levantar o “protocolo” de uma comunicação SPI e I2C … O resultado foi PER FEI TO !!!!
Se o seu for aquele pretinho simples, que se compra até no mercado livre ou aliexpress, eu também tenho! Alias tenho ele já faz uns 7 anos e sempre serviu pra praticamente todas minhas aplicações. É realmente um ótimo quebra galho pra 98% das demandas normais e cotidianas. Mas o da Saleae é incrível aos meus olhos por causa dos canais analógicos (último artigo dessa série de artigos), me deixou de boca aberta de como é prático e útil, ainda mais por que utilizo em projetos Low Power e monitorar o consumo de corrente com um INA169/etc durante os Sleep… Leia mais »