Em um dos artigos anteriores, já mencionamos brevemente o uso de um registrador de deslocamento, em particular, o 74HC595. Vamos dar uma olhada mais de perto nas capacidades e procedimentos para trabalhar com este microcircuito.
Necessário
- - Arduino;
- - registrador de deslocamento 74HC595;
- - fios de conexão.
Instruções
Passo 1
O registrador de deslocamento 74HC595 e semelhantes são usados como dispositivos para converter dados seriais em paralelo e também podem ser usados como uma "trava" para dados, mantendo o estado transferido.
A pinagem (pinagem) é mostrada na figura à esquerda. Seu objetivo é o seguinte.
Q0… Q7 - saídas de dados paralelas;
GND - terra (0 V);
Q7 '- saída de dados seriais;
^ MR - reset mestre (baixo ativo);
SHcp - entrada do relógio do registrador de deslocamento;
STcp - entrada de pulso de clock "latch";
^ OE - habilitação de saída (baixo ativo);
Ds - entrada de dados seriais;
Vcc - fonte de alimentação +5 V.
Estruturalmente, o microcircuito é feito em diversos tipos de caixas; Vou usar o mostrado na figura à direita - a saída - porque é mais fácil de usar com uma placa de ensaio.
Passo 2
Deixe-me relembrar brevemente a interface serial SPI, que usaremos para transferir dados para o registrador de deslocamento.
SPI é uma interface serial bidirecional de quatro fios da qual participam um mestre e um escravo. O mestre em nosso caso será o Arduino, o escravo será o registrador 74HC595.
O ambiente de desenvolvimento para Arduino possui uma biblioteca integrada para trabalhar na interface SPI. Na aplicação, são utilizadas as conclusões que estão assinaladas na figura:
SCLK - saída de relógio SPI;
MOSI - dados do mestre para o escravo;
MISO - dados do escravo ao mestre;
SS - seleção de escravo.
etapa 3
Vamos montar o circuito como na foto.
Também conectarei um analisador lógico a todos os pinos do microcircuito do registrador de deslocamento. Com a ajuda dele, veremos o que está acontecendo no nível físico, quais sinais estão indo para onde, e descobriremos o que eles significam. Deve ser parecido com a foto.
Passo 4
Vamos escrever um esboço como este e carregá-lo na memória do Arduino.
A variável PIN_SPI_SS é uma constante padrão interna que corresponde ao pino "10" do Arduino quando usada como mestre da interface SPI que estamos usando aqui. Em princípio, poderíamos muito bem usar qualquer outro pino digital no Arduino; então teríamos que declará-lo e definir seu modo de operação.
Ao alimentar este pino LOW, ativamos nosso registrador de deslocamento para transmissão / recepção. Após a transmissão, elevamos a tensão para ALTA novamente e a troca termina.
Etapa 5
Vamos transformar nosso circuito em trabalho e ver o que o analisador lógico nos mostra. A visão geral do diagrama de tempo é mostrada na figura.
A linha tracejada azul mostra 4 linhas SPI, a linha tracejada vermelha mostra 8 canais de dados paralelos do registrador de deslocamento.
O ponto A na escala de tempo é o momento em que o número "210" é transferido para o registrador de deslocamento, B é o momento em que o número "0" é escrito, C é o ciclo que se repete desde o início.
Como você pode ver, de A a B - 10,03 milissegundos, e de B a C - 90,12 milissegundos, quase como pedimos no esboço. Uma pequena adição em 0, 03 e 0, 12 ms é o tempo para transferir dados seriais do Arduino, portanto, não temos exatamente 10 e 90 ms aqui.
Etapa 6
Vamos dar uma olhada mais de perto na seção A.
No topo está um pulso longo com o qual o Arduino inicia a transmissão na linha SPI-ENABLE - seleção de escravo. Neste momento, pulsos de relógio SPI-CLOCK começam a ser gerados (segunda linha a partir do topo), 8 peças (para transferência de 1 byte).
A próxima linha do topo é SPI-MOSI - os dados que transferimos do Arduino para o registrador de deslocamento. Este é o nosso número "210" em binário - "11010010".
Após a conclusão da transferência, no final do pulso SPI-ENABLE, vemos que o registrador de deslocamento configurou o mesmo valor em suas 8 pernas. Eu destaquei isso com uma linha pontilhada azul e rotulei os valores para maior clareza.
Etapa 7
Agora vamos voltar nossa atenção para a seção B.
Novamente, tudo começa com a escolha de um escravo e a geração de 8 pulsos de clock.
Os dados na linha SPI-MOSI agora são "0". Ou seja, neste momento escrevemos o número "0" no registrador.
Mas até que a transferência seja concluída, o registro armazena o valor "11010010". É enviado para os pinos paralelos Q0.. Q7 e é emitido quando há pulsos de clock na linha da saída paralela Q7 'para a linha SPI-MISO, que vemos aqui.
Etapa 8
Assim, estudamos em detalhes a questão da troca de informações entre o dispositivo mestre, que era o Arduino, e o registrador de deslocamento 74HC595. Aprendemos como conectar um registrador de deslocamento, escrever dados nele e ler dados dele.