Analisador Lógico com Arduino

Sempre desejei ter um analisador lógico. A muitos anos tenho procurado um.
Um analisador Lógico profissional tem um preço absurdo aqui no Brasil. Atualmente já existem analisadores
mais baratos. Alguns analisadores americanos na faixa dos 50 dólares e os chineses clonando por até 10 dólares.

Mas como importar aqui no Brasil é a aquela dificuldade, devido as taxas abusivas de importação, estava
procurando na Internet um analisador que eu pudesse construir. E pesquisando, encontrei no início do ano
esse projeto de um analisador lógico com o Arduino.

Na época eu pensei – essa é a solução! Mas na época procurei vários procedimentos de como usá-lo e devido
a instruções mal feitas e incompletas eu não consegui usá-lo. Nesse fim de semana, procurando novamente
esse analisador, finalmente consegui faze-lo funcionar.

O programa Logic Sniffer é um projeto muito bem feito para analisadores que são comercializados pela internet:
Sump analyzer , Open Bench Logic Sniffer e outros mais.
O programa é bem versátil e é grátis! Pode rodar no Windows, no Linux e também no Mac.
Ele tem inúmeros recursos para serem usados e aparentemente simples de usar.

http://www.lxtreme.nl/ols/
http://www.sump.org/projects/analyzer/
http://dangerousprototypes.com/docs/Open_Bench_Logic_Sniffer

E o programador Gillham resolveu adaptar o Logic Sniffer para os Arduinos com ATmega168, ATmega328 e
ATmega2560 (excelente trabalho):

Ele adaptou, mas não criou instruções claras de como usá-lo. Um outro colaborador criou esse procedimento
que me ajudou bastante:

No fórum do Arduino tem esse tópico, mas não ajudou muito:

Então como colaboração para quem se interessar, vou divulgar todo o procedimento de utilização do Arduino como Analisador Lógico. Não precisará de nenhum hardware adicional além de um Arduino.

Procedimento de instalação do Analisador Lógico Arduino:

Primeiramente faça o download do Logic Sniffer , no meu caso para Windows ( meu PC roda Windows 8 /64 bits).
Creio que roda em qualquer versão de Windows, pois o aplicativo foi desenvolvido em Java.
É claro, tem que ter Java instalado no seu PC também – Arduino foi também desenvolvido em Java.

Download do JAVA (gratuito) - se você ainda não tiver:
http://www.java.com/pt_BR/download/

  • Usei a versão mais atual do Logic Sniffer => ols-0.9.7-full.zip (para Windows). Tem para Linux e MAC também.
    Index of /ols
  • Descompacte-o em uma pasta, por exemplo \Logic Sniffer ,
  • Para rodar o programa Logic Analyzer Client rode run.bat dentro da pasta \Logic Sniffer \ols-0.9.7

Agora faça o download do Sketch Logic Analyzer para Arduino :

Veja que a versão mais atual do programa roda somente no ATmega 2560.
Se você deseja usa-lo com Arduino com ATmega328 (no meu caso estou usando o Arduino Duemilanove),
deverá escolher a versão V0_10.
Abaixo da linha violeta, clique em Branch e escolha a versão agla_v0_10.

  • No lado direito tem a opção download ZIP , baixe o arquivo logic_analyzer-agla_v0_10.zip
  • Se você já for usuário do GithHub poderá clonar no seu desktop, mas não há necessidade.

Para encontrar o local adequado para descompactar esse aquivo, rode o Arduino IDE no seu PC.
(estou usando a versão mais atual arduino-1.0.5)

  • Clique em File e depois Preferences,

  • Veja o Sketchbook location. Esse será o local adequado para descompactar o arquivo do Logic Analyzer.

  • No meu PC é C:\Users\Gustavo\Documents\Arduino

  • Descompacte o arquivo zipado em uma pasta dentro do Arduino IDE (por exemplo):
    C:\Users\Gustavo\Documents\Arduino \logic_analyzer-agla_v0_10

Arquivos importantes do programa para o Arduino Duemilanove (2009):

**logic_analyzer.ino ** - Implementação do protocolo SUMP para placas Arduino
**ols.profile-agla.cfg ** - Configuração da profile Arduino Generic Logic Analyzer

Procedimento para usar o Analisador Lógico Arduino:

Pronto, agora é a hora de usar. Tive muita dificuldade para faze-lo funcionar. No site oficial não tem o procedimento
de uso. Foi procurando em vários sites, que finalmente entendi. Depois pretendo fazer um procedimento em inglês e enviar para o desenvolvedor do programa. Ele merece !

  • Ligue a fonte de energia no seu Arduino,

  • Conecte-o no seu PC ,

  • Rode o programa Arduino IDE,

  • Para saber qual porta de comunicação esta usando clique Tools e depois em Serial Port:
    ( no meu caso estou a usando a COM3)

  • Clique em Sketch e depois Add File.

  • Carregue o arquivo logic_analyzer.ino
    Lembre-se que deverá esta na pasta (por exemplo):
    C:\Users\Gustavo\Documents\Arduino \logic_analyzer-agla_v0_10

  • Clique em Verify para ver se tem algum erro de compilação (barra verde, botão mais à esquerda)
    Se apresentar algum erro (mensagens em amarelo), terá que corrigir primeiro.

Se tudo ok, vá em frente faça o Upload para o sua placa Arduino. (botão ao lado do botão de Verify)
Os leds de RX/TX vão piscar por alguns segundos. Nesse momento o programa esta sendo carregado
na placa Arduino.

  • Agora clique em Serial Monitor (barra verde - botão mais à direita).

Na janela do Serial Monitor , verifique se a velocidade de comunicação esta configurada para 115200 baud.
Se não estiver, mude-a.

Na barra de comando da janela Serial Monitor digite o número 1 e pressione enter , para fazer um teste.
Veja que aparecerá alguns parâmetros do programa. O Sketch esta rodando legal !
ReadCount=1024
DelayCount = 0
etc

Feche agora essa janela, pois senão o Analisador Lógico vai reclamar que a porta COM3 esta sendo usada.
Esse passo é necessário para o funcionamento do Analisador lógico.

Agora carregue o programa do Analisador Lógico.
Lembrando que para rodar o programa Logic Analyzer Client rode run.bat dentro da pasta
** \Logic Sniffer \ols-0.9.7**

Informação importante ! Quais portas do Arduino poderá usar no Analisador Lógico ?
As versões antigas usavam as portas digitais 2 a 7 ( Ports PD2 a PD7)

Mas a versão V0_10 usa as portas digitais 8 a 12 que são os Ports PB0 até o PB4.
Lembre-se que essas portas usam 5V, não ligue em circuitos com 3,3V ou 12V por exemplo!
Senão com certeza vai queimar o seu Arduino ou o outro circuito que estava sendo monitorado.

Channel 0 = digital 8 Channel 2 = digital 10 Channel 4 = digital 12
Channel 1 = digital 9 Channel 3 = digital 11 Channel 5 = digital 13

No programa Logic Analyzer Client, clique em Capture, Device e selecione Open Bench LogicSniffer.

De novo na janela Capture, clique em Begin Capture.
Selecione esses parâmetros :
- Serial Port , COM3 , 115200bps, Arduino Generic Logic Analyzer.
Para ter certeza que existe comunicação, clique em Show device metadata.
Tem que aparecer Device type : AGLAv0 !
Se não aparecer, esta havendo problema com a comunicação serial.

Ainda na janela de Captura, clique na pasta Acquisition.
Saiba que o buffer recomendado para o Arduino Duemilanove é de 1024 amostragens.
Faça um teste com taxa de amostragem de 500 KHz.

Clique em Capture e Voilá !! Conseguiu fazer a captura da amostragem !!
Estas amostragens eu fiz com um contador binário 74HCT393.
E caramba! conferi com o osciloscópio estavam com a frequência certa!!
Fiz essa amostragem com Sampling rate de 1MHz.

Espero que tenham gostado

Gustavo Murta (Belo Horizonte)

Parece interessante mas dá para depois depurar a trama que capturaste?(I2C,SPI,UART...)
Eu tenho um saleae Logic Analyser que faz isso e é uma grande ajuda.Vale todos os tostoes

Hugo , o Logic Sniffer tem algumas ferramentas de depuração.
1 wire, dmx512, I2C, JTAG, line decode, serial console, SPI, UART.

Mas não usei-as ainda.
O interessante é que o programa tem a licença General Public License.

Gustavo_Murta:
Procedimento para usar o Analisador Lógico Arduino:

Pronto, agora é a hora de usar. Tive muita dificuldade para faze-lo funcionar. No site oficial não tem o procedimento
de uso. Foi procurando em vários sites, que finalmente entendi. Depois pretendo fazer um procedimento em inglês e enviar para o desenvolvedor do programa. Ele merece !

  • Ligue a fonte de energia no seu Arduino,

  • Conecte-o no seu PC ,

  • Rode o programa Arduino IDE,

  • Para saber qual porta de comunicação esta usando clique Tools e depois em Serial Port:
    ( no meu caso estou a usando a COM3)

  • Clique em Sketch e depois Add File.

  • Carregue o arquivo logic_analyzer.ino
    Lembre-se que deverá esta na pasta (por exemplo):
    C:\Users\Gustavo\Documents\Arduino \logic_analyzer-agla_v0_10

  • Clique em Verify para ver se tem algum erro de compilação (barra verde, botão mais à esquerda)
    Se apresentar algum erro (mensagens em amarelo), terá que corrigir primeiro.

Se tudo ok, vá em frente faça o Upload para o sua placa Arduino. (botão ao lado do botão de Verify)
Os leds de RX/TX vão piscar por alguns segundos. Nesse momento o programa esta sendo carregado
na placa Arduino.

  • Agora clique em Serial Monitor (barra verde - botão mais à direita).

Na janela do Serial Monitor , verifique se a velocidade de comunicação esta configurada para 115200 baud.
Se não estiver, mude-a.

Na barra de comando da janela Serial Monitor digite o número 1 e pressione enter , para fazer um teste.
Veja que aparecerá alguns parâmetros do programa. O Sketch esta rodando legal !
ReadCount=1024
DelayCount = 0
etc

Feche agora essa janela, pois senão o Analisador Lógico vai reclamar que a porta COM3 esta sendo usada.
Esse passo é necessário para o funcionamento do Analisador lógico.

Agora carregue o programa do Analisador Lógico.
Lembrando que para rodar o programa Logic Analyzer Client rode run.bat dentro da pasta
** \Logic Sniffer \ols-0.9.7**

Informação importante ! Quais portas do Arduino poderá usar no Analisador Lógico ?
As versões antigas usavam as portas digitais 2 a 7 ( Ports PD2 a PD7)

Mas a versão V0_10 usa as portas digitais 8 a 12 que são os Ports PB0 até o PB4.
Lembre-se que essas portas usam 5V, não ligue em circuitos com 3,3V ou 12V por exemplo!
Senão com certeza vai queimar o seu Arduino ou o outro circuito que estava sendo monitorado.

Channel 0 = digital 8 Channel 2 = digital 10 Channel 4 = digital 12
Channel 1 = digital 9 Channel 3 = digital 11 Channel 5 = digital 13

No programa Logic Analyzer Client, clique em Capture, Device e selecione Open Bench LogicSniffer.

De novo na janela Capture, clique em Begin Capture.
Selecione esses parâmetros :
- Serial Port , COM3 , 115200bps, Arduino Generic Logic Analyzer.
Para ter certeza que existe comunicação, clique em Show device metadata.
Tem que aparecer Device type : AGLAv0 !
Se não aparecer, esta havendo problema com a comunicação serial.

Ainda na janela de Captura, clique na pasta Acquisition.
Saiba que o buffer recomendado para o Arduino Duemilanove é de 1024 amostragens.
Faça um teste com taxa de amostragem de 500 KHz.

Clique em Capture e Voilá !! Conseguiu fazer a captura da amostragem !!
Estas amostragens eu fiz com um contador binário 74HCT393.
E caramba! conferi com o osciloscópio estavam com a frequência certa!!
Fiz essa amostragem com Sampling rate de 1MHz.

Espero que tenham gostado

Gustavo Murta (Belo Horizonte)

Tô adorando suas explicações !
tô usando uno v3 com

Gustavo_Murta:
Procedimento de instalação do Analisador Lógico Arduino:

Primeiramente faça o download do Logic Sniffer , no meu caso para Windows ( meu PC roda Windows 8 /64 bits).
Creio que roda em qualquer versão de Windows, pois o aplicativo foi desenvolvido em Java.
É claro, tem que ter Java instalado no seu PC também – Arduino foi também desenvolvido em Java.

Download do JAVA (gratuito) - se você ainda não tiver:
http://www.java.com/pt_BR/download/

  • Usei a versão mais atual do Logic Sniffer => ols-0.9.7-full.zip (para Windows). Tem para Linux e MAC também.
    Index of /ols
  • Descompacte-o em uma pasta, por exemplo \Logic Sniffer ,
  • Para rodar o programa Logic Analyzer Client rode run.bat dentro da pasta \Logic Sniffer \ols-0.9.7

Agora faça o download do Sketch Logic Analyzer para Arduino :
GitHub - gillham/logic_analyzer: Implementation of a SUMP compatible logic analyzer for the Arduino

Veja que a versão mais atual do programa roda somente no ATmega 2560.
Se você deseja usa-lo com Arduino com ATmega328 (no meu caso estou usando o Arduino Duemilanove),
deverá escolher a versão V0_10.
Abaixo da linha violeta, clique em Branch e escolha a versão agla_v0_10.

  • No lado direito tem a opção download ZIP , baixe o arquivo logic_analyzer-agla_v0_10.zip
  • Se você já for usuário do GithHub poderá clonar no seu desktop, mas não há necessidade.

Para encontrar o local adequado para descompactar esse aquivo, rode o Arduino IDE no seu PC.
(estou usando a versão mais atual arduino-1.0.5)

  • Clique em File e depois Preferences,

  • Veja o Sketchbook location. Esse será o local adequado para descompactar o arquivo do Logic Analyzer.

  • No meu PC é C:\Users\Gustavo\Documents\Arduino

  • Descompacte o arquivo zipado em uma pasta dentro do Arduino IDE (por exemplo):
    C:\Users\Gustavo\Documents\Arduino \logic_analyzer-agla_v0_10

Arquivos importantes do programa para o Arduino Duemilanove (2009):

**logic_analyzer.ino ** - Implementação do protocolo SUMP para placas Arduino
**ols.profile-agla.cfg ** - Configuração da profile Arduino Generic Logic Analyzer

Gustavo_Murta:
Procedimento de instalação do Analisador Lógico Arduino:

Primeiramente faça o download do Logic Sniffer , no meu caso para Windows ( meu PC roda Windows 8 /64 bits).
Creio que roda em qualquer versão de Windows, pois o aplicativo foi desenvolvido em Java.
É claro, tem que ter Java instalado no seu PC também – Arduino foi também desenvolvido em Java.

Download do JAVA (gratuito) - se você ainda não tiver:
http://www.java.com/pt_BR/download/

  • Usei a versão mais atual do Logic Sniffer => ols-0.9.7-full.zip (para Windows). Tem para Linux e MAC também.
    Index of /ols
  • Descompacte-o em uma pasta, por exemplo \Logic Sniffer ,
  • Para rodar o programa Logic Analyzer Client rode run.bat dentro da pasta \Logic Sniffer \ols-0.9.7

Agora faça o download do Sketch Logic Analyzer para Arduino :
GitHub - gillham/logic_analyzer: Implementation of a SUMP compatible logic analyzer for the Arduino

Veja que a versão mais atual do programa roda somente no ATmega 2560.
Se você deseja usa-lo com Arduino com ATmega328 (no meu caso estou usando o Arduino Duemilanove),
deverá escolher a versão V0_10.
Abaixo da linha violeta, clique em Branch e escolha a versão agla_v0_10.

  • No lado direito tem a opção download ZIP , baixe o arquivo logic_analyzer-agla_v0_10.zip
  • Se você já for usuário do GithHub poderá clonar no seu desktop, mas não há necessidade.

Para encontrar o local adequado para descompactar esse aquivo, rode o Arduino IDE no seu PC.
(estou usando a versão mais atual arduino-1.0.5)

  • Clique em File e depois Preferences,

  • Veja o Sketchbook location. Esse será o local adequado para descompactar o arquivo do Logic Analyzer.

  • No meu PC é C:\Users\Gustavo\Documents\Arduino

  • Descompacte o arquivo zipado em uma pasta dentro do Arduino IDE (por exemplo):
    C:\Users\Gustavo\Documents\Arduino \logic_analyzer-agla_v0_10

Arquivos importantes do programa para o Arduino Duemilanove (2009):

**logic_analyzer.ino ** - Implementação do protocolo SUMP para placas Arduino
**ols.profile-agla.cfg ** - Configuração da profile Arduino Generic Logic Analyzer

Adorei as explicações !
estou usando um arduino uno v3 com essa biblioteca logic_analyzer-agla_v0_10 e programa arduino 1.6.10.
quando mando passar pro arduino ele dar esse erro " avrdude: ser_open(): can't open device "\.\COM5": O sistema não pode encontrar o arquivo especificado.
" será pq estou usando uno e não o duemilanove ? ou a verão mais nova 1.6 ?te agradeço desde já .