LusoRobótica - Robótica em Português
Discussão Geral => Off-topic => Tópico iniciado por: SerraCabo em 17 de Fevereiro de 2021, 01:43
-
... só por curiosidade...
Olá.
Estava aqui a vasculhar umas linhas de controlo para tentar perceber quanto a comunicação I2C atravanca o controlador (ATmega 2560 a 16MHz) e deparei com uma coisa curiosa.
Reparem (olhem em baixo) no último bit antes de ACK aparece um glitch na linhas D5. Não aparece sempre (ou não é 'agarrado') mas aparece pelo menos 50% das vezes. Quando aparece, aparece nesse local.
(https://lusorobotica.com/index.php?action=dlattach;topic=9758.0;attach=4909)
O clock D4 trabalha a 100KHz e a frequência de amostragem está a 8MHz.
Não estou preocupado com isto porque, de uma forma ou outra, o LCD está a funcionar bem.
Outra coisa curiosa: não estava à espera que ele enviasse um byte de cada vez. Estava à espera que houvesse um cabeçalho e despachasse uma molhada de caracteres. Eu suponho que esta comunicação seja unidireccional.
Já agora, este "Logic Analyzer" que trabalha (diz ele) até 24MHz, tem um preço muito acessível e é particularmente útil. O software é o PulseView.
Abraço
SC
-
Já percebi por que aparece o glitch. Dá-se quando o master (controlador) larga a linha de dados (vai passar a receptor). A linha vai para HI (haverá um pull-up qualquer) para que o slave (o LCD), possa colocar a linha a LOW indicando ao master que os dados foram lidos.
Agora, há outra coisa que eu não esperava. Se não houver resposta do slave (desligando, por exemplo a linha de dados), o controlador fica pendurado.