Pois bem, depois de perder algum tempo preocupado com as formas de onda da linha de dados que circula entre os registradores de barramento, achei o primeiro pedaço do problema: Falta de resistores de pullup nos pinos de seleção de linhas.
O circuito precisa de resitores de pull-up nos pinos que vão às linhas de endereço. |
Já no emulador de teclado, as linhas de endereço são ligadas aos pinos de /oe dos registradores de deslocamento, e sem os resistores de pullup essas linhas todas ficavam em estado indeterminado. O interessante é que eu esperaria que essas linhas ficassem ativas, pois os registradores de deslocamento são HC e os pinos abertos são tomados como nível baixo, o que deveria ter gerado algum lixo que seria percebido pelo TK como alguma tecla pressionada, mas enfim, não foi assim que aconteceu.
O fato é que depois que coloquei os resitores de pull-up já foi possível baixar o sinal, linha a linha e conferir o acionamento de cada coluna à medida em que se pressionava a tecla correspondente.
Todas as linhas funcionaram, exceto a última linha!! Daí conferindo o circuito, achei que o pino do /oe do chip que recebe os bits da última linha estava em nível alto o tempo inteiro, devido a uma problema na solda (o fio esmaltado não tinha perdido a isolação direito).
Depois de consertada a solda e conferido o contato no multímetro, novo teste e.... Mesma situação!!
Novamente o mesmo procedimento, checar todos os sinais que chegam ao CI. Assim descobri que tinha esquecido de soldar o pino 12, do sinal de RCK que é o sinal responsável por transferir os dados do registrador de deslocamento para o latch de saída.
Havia uma falha dupla na montagem de um dos registradores de deslocamento. |
Pois é, falha dupla!!! O pior das falhas duplas é você achar um defeito e achar que está resolvido e depois não testar mais aquele pedaço! Isso pode acontecer com tudo: de máquinas a software!! E o procedimento para resolver e sempre o mesmo: Conferir tudo, mesmo que já tenha sido conferido antes, sem tomar nada por garantido. Se tiver dúvida se já testou ou não, teste de novo.
Depois de consertado mais esse problema, a última linha passou a funcionar. O passo seguinte foi ligar no TK e torcer os dedos!!
Aí sim, sucesso!!!!
Circuito montado na placa ressuscitada. |
Todas as teclas funcionaram perfeitamente, inclusive as compostas (setas, backspace, etc) |
Detalhe da montagem. A alimentação vem do TK |
Circuito composto de 8 registradores de deslocamento (HC595) e um PIC16F688 |
O projeto ficou pequeno, e ocupou apenas 575 bytes de memória. Isso significa que cabe perfeitamente num PIC menor como um 12F675 ou 12F629, e ainda sobra espaço para melhorar a tabela de associação das teclas (por exemplo BACKSPACE ficou mapeado como SHIFT + 0 pressionados simultaneamente).
Tela do projeto, que está bem simples e consumiu pouca flash. |
Agora preciso dar uma arrumada no código, melhorar os comentários, etc antes de publicar. Também preciso redesenhar o circuito.
Um comentário:
Cláp!!! Cláp!!! Cláp!!! Cláp!!! Cláp!!!
Excelente trabalho!!!
Aprendi muito com este post. Fiquei com gostinho de quero mais.
Euclides.
euclas@gmail.com
Postar um comentário