Sempre desejei ter um analisador lógico. A muitos anos tenho procurado um.
Um analisador Lógico profissional tem um preço absurdo. 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 usa-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.sump.org/projects/analyzer/
http://dangerousprototypes.com/docs/Open_Bench_Logic_Sniffer
E um outro programador resolveu adaptar o Logic Sniffer para os Arduinos com ATmega168, ATmega328 e
ATmega2560:
https://github.com/gillham/logic_analyzer
Ele adaptou, mas não criou instruções claras de como usá-lo. Um outro colaborador criou esse procedimento
que ajudou bastante:
http://letsmakerobots.com/node/31422
No fórum do Arduino tem esse tópico, mas não ajudou muito:
http://forum.arduino.cc//index.php?PHPSESSID=j9h5qor1fn2ho628049mgo...
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.
Qualquer dúvida, podem perguntar. Tive muita dificuldade para fazê-lo funcionar. Agora que eu consegui, ficou tudo mais fácil.
Gustavo Murta (BH)
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.
http://www.lxtreme.nl/ols/#download
- 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
- Deverá aparecer essa tela , depois ele terá que ser configurado.
Agora faça o download do Sketch Logic Analyzer para Arduino :
https://github.com/gillham/logic_analyzer
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),
tem que 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 fazer funcionar. No site oficial não tem o procedimento
de uso. Foi procurando em vários sites, que finalmente entendi. Depois devo 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.
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.
Os leds de RX/TX vão piscar por alguns segundos.
Agora clique em Serial Monitor (lado direito).
Na janela do Serial Monitor , verifique se a velocidade de comunicação esta configurada para 115200 baud.
Se não estiver, mude-a.
Digite o número 1 e enter , para fazer um teste.
Veja que aparecerá alguns parâmetros do programa. Oba, o Sketch esta rodando legal !
Esse passo é necessário para o funcionamento do Analisador lógico.
Feche agora essa janela, pois senão o Analisador Lógico vai reclamar que a porta COM3 esta sendo usada.
Quase lá ! 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
Veja que o Analisador ficou pronto (ready na linha mais abaixo).
Informação importante ! Quais portas do Arduino 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!
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 tenha gostado. Aproveitem, pois fiquei a toda manhã de hoje fazendo esse procedimento.
Gustavo Murta (BH)
Comentar
Bom dia pessoal
Estou utilizando o Arduino MEGA2560 para implementar um analisador logico o Logic Sniffer.
Estou usando a versão do Logic Analyzer Client Ols-0.9.7.1 e o logical_analyzer_agla_v0_10.
Estou utilizando o Windows 8.1 Pro. Eu fiz o teste do serial monitor dentro do IDE do Arduino e funcionou. Após isso eu fechei o IDE do Arduino e mesmo assim não consigo fazer a captura do sinal digital no canal 0 (port 8). Alguem que conseguiu fazer esse projeto funcionar pode me dar alguma dica?
Grato
Gustavo,
Bom dia.
Quanto a fechar a janela de teste da serial isso eu sempre faço.
Só me resta então tentar uma versão mais antiga da versão agla_v0_11 que seja compativel com o Arduino MEGA2560.
Grato pela ajuda.
Abs
Sergio Fink
Sérgio,
Você fechou a janela de teste da serial ?
Pois senão o Analisador Lógico vai reclamar que a porta COMX esta sendo usada.
De novo na janela Capture, clique em Begin Capture.
Selecionou os parâmetros da sua serial ?
Exemplo = Serial Port , COM3 , 115200bps, Arduino Generic Logic Analyzer.
Se não esta detectando é porque não existe comunicação, (Show device metadata)
Tente usar uma outra versão mais antiga....
Caro Gustavo, bom dia.
Estou utilizando o Arduino MEGA2560 para implementar o analisador logico. Segui todos os passos conforme você instruiu. Estou usando a versão agla_v0_11. Compilei e gravei no IDE do Arduino com sucesso. Quando chego a rodar o Logic analyzer Client, na etapa de clicar CAPTURE, BEGIN CAPTURE, fiz todas as seleções que vc orientou. Quando eu clico em SHOW DEVICE METADATA, aparece a mensagem detection failed null.
Dentro do IDE do arduino, acessei o serial monitor, digitei 1 e ENTER e apareceram as mensagens readCount = 7168
delayCount = 0
logicIndex = 0
triggerIndex = 0
rleEnabled = 0
Bytes:
done...
Creio que isso mostra que a comunicação serial está ok.
Quais passos devo verificar para solucionar esse problema?
Grato
Sergio Fink
Caro Igor Henrike, estava com o mesmo problema. Resolvi criando uma pasta nova com o nome analisador lógico (ou o nome de sua preferência). Descompacte o arquivo ols-0.9.7 dentro desta pasta. Ai sim rode o programa pelo RUN. Espero ter ajudado.
Fantástico !
Você ja viu na aba TOOLS, que tem a função SPI analyzer ?
Pode decodificar os bits da comunicação SPI.
Olá!
Eu estava tendo problema com os dispositivos SPI.
Após conseguir obter este gráfico consegui perceber o problema.
O pinos CS estavam mudando ao mesmo tempo que o MISO e o MOSI então apenas adicionei um delay(10) no código que controla os pinos de seleção.
[code]
void selecionar_SPI(int dispositivo)
{
switch(dispositivo)
{
case 0: // Utilizar cartão sd.
digitalWrite(ChipSelect_SD, LOW);
digitalWrite(SelectSlave_ETH, HIGH);
digitalWrite(ChipSelect_RFM, HIGH);
delay(10);
break;
case 1: // Utilizar ethercard
digitalWrite(SelectSlave_ETH, LOW);
digitalWrite(ChipSelect_SD, HIGH);
digitalWrite(ChipSelect_RFM, HIGH);
delay(10);
break;
case 2: // Utilizar RFM12B
digitalWrite(ChipSelect_RFM, LOW);
digitalWrite(SelectSlave_ETH, HIGH);
digitalWrite(ChipSelect_SD, HIGH);
delay(10);
break;
}
}
[/code]
Vários dias de dor de cabeça por causa de um delay de 10 milisegundos.
O interessante é que agora o analisador não encontra mais o arduino mega.
Obrigado.
Fernando, esse analisador Lógico tem limitações. Mas quebra galho, não ?
Que bom que foi util...
Obrigado pela dica.Estava querendo comprar um hoje.
Ainda bem que encontrei este tópico.
Já consegui fazer alguns teste na interface SPI.
Abraço.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!
Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)