Um novo Microcontrolador para o Teclado do Craft][ Plus



Dia desses recebi um clone nacional de Apple II, o Craft][ Plus, fabricado por aqui pela Microcraft. Externamente ele é bem parecido com um Apple II+ tradicional e a julgar pela disposição dos componentes certamente foi completamente clonado a partir do americano.


Um dos destaques dessa versão seria o "teclado inteligente", com a promessa de facilitar a digitação de comandos usando sequencias "pré-digitadas". Por exemplo, na tecla "L" temos o comando "LIST" que pode ser conseguido pressionando CTRL+SHIFT+L.

Justamente esse teclado, chegou completamente "morto", não fazendo absolutamente nada. Após testar os componentes na placa mãe, responsáveis pelo recebimento dos dados, cheguei a conclusão que o microcontrolador, um Intel D8748, estaria com defeito.


Bem, eu não tinha um leitor/gravador para esse CI e também não tinha certeza se o código dele estaria disponível, então pensei: "por que não colocar um microcontrolador moderno?". (Mais tarde descobri que a idéia não era nova e e que inclusive já tinha sido feito por aqui algum trabalho similar) :P

Observando o conector do teclado e componentes que ele trabalhava, levantei a sua pinagem.


Restava agora saber o que a placa mãe esperava, então usando um Arduino, fiz uma conexão simples, pino a pino, para simular alguma entrada de dados e logo na primeira tentativa consegui acertar.


Os sete primeiros bits da linha de dados corresponde exatamente à tabela ASCII, caracteres de 0 a 127. O último bit é usado como clock, avisando à placa mãe que o dado está disponivel no barramento. Então, fiz um código básico, onde eu pegava o caracter no Terminal no PC e jogava pros pinos de dados junto com um pequeno pulso na porta de clock.


Satisfeito com os testes, era hora de partir para a implementação propriamente dita. Retirando o CI original e batendo com o Datasheet, percebi que nada mais era do que uma tradicional matriz de teclado, com 8 linhas por 8 colunas, fazendo um total de 64 teclas possíveis. O curioso é que o teclado do Craft tem 68 teclas, porém, as teclas SHIFT e CTRL não fazem parte da matriz, tendo um pino dedicado no microcontrolador para o tratamento deles e a tecla RESET está ligada diretamente na linha de reset do micro. Então, descontando essas quatro teclas (são dois SHIFTs!), temos portanto as outras 64 da matriz. Vale frisar inclusive que o teclado númerico à direita tem suas próprias combinações de linhas e colunas, sendo independente do teclado principal. Digo, a tecla "1" do numérico nao é a tecla "1" do principal por exemplo.

Para fins didáticos, para explicar rapidamente como uma matriz de teclado funciona, vamos considerar o exemplo abaixo de quatro linhas e quatro colunas.


Cada linha no caso do Craft está ligado a um bit da porta 1 do Intel e cada uma dessas linhas a um resistor para o 5V. Esta porta fica em modo de "entrada", logo, ela pode ser lida e essa a leitura será sempre nivel "alto" por causa do resistor quando nenhuma tecla estiver pressionada. Já a porta 2, em modo "saída" ou "escrita", está nas colunas e os bits da porta são colocados em nivel baixo e e alto em sequencia para que a porta 1 faça a leitura. Então, se observamos uma leitura baixa numa linha, digamos a linha 2, e a coluna abaixada foi a coluna 3, temos uma tecla pressionada na linha 2, coluna 3, que poderia ser a tecla "A" por exemplo. Como o SHIFT e o CTRL são lidos independentes pelo microcontrolador, podemos ter a leitura segura de um CTRL+SHIFT+A por exemplo. É um pouco confuso num primeiro momento, mas a lógica é bem básica. Vejam o código-fonte no fim da página que talvez fique um pouco mais claro.

Pela quantidade requerida de pinos, deveria ser um microcontrolador "do grande" e no momento eu tinha disponível o PIC18F4550, porém praticamente qualquer microcontrolador que tenha um número de pinos suficiente poderia ser usado. Fiz uma plaquinha que nada mais é do que um "casador", colocando cada pino do CI novo, onde seria o pino do antigo com a mesma função. Inclusive poderia ter usado o cristal de frequencia original do teclado que era de 3.5Mhz, mas como esse PIC tem um oscilador interno de 8Mhz, preferi usá-lo por ser mais rápido e ainda economizar o trabalho de puxar dois fios.


Após todo o processo de debugging do código, tive um contratempo na montagem final do micro. A tampa não fechava com a plaquinha adaptadora! Tinha bastante espaço por baixo da placa, mas por cima era bem justo, logo fiz um adaptador "invertido" para ser plugado por baixo, adicionando um soquete na traseira da placa.


Após a montagem ainda fica bastante espaço livre.




Disponibilizei o código fonte aqui completamente comentado e certamente servirá como base para qualquer outro microcontrolador. Foi usado o MPLAB IDE com o compilador MCC18, ferramentas disponíveis gratuitamente pela Microchip.



Dúvidas, sugestões? Use o espaço abaixo.


Voltar - Home


Comente



COMENTÁRIOS DESABILITADOS NO MOMENTO! RETORNAM EM BREVE
É expressamente proibido a reprodução total ou parcial deste texto sem a minha devida autorização por escrito.