Atualização : uma implementação prática disso é feita no projeto Tapuino feito por Peter Edwards. Confira, tudo é de código aberto: https://github.com/sweetlilmre/tapuino
Estou trabalhando em um projeto em que estou usando meu Arduino para transmitir arquivos de dados de fita TAP do meu PC para o C64. O lado do software do projeto está indo bem, no entanto, ainda sou novo em eletrônica e não gosto de fritar meu Commodore. Então, eu preciso de ajuda de interface de hardware, na verdade.
As fitas C64 usam modulação PWM para armazenar o programa em fita cassete e, ao ler os dados, um gatilho opamp + schmitt converte o sinal de áudio em ondas quadradas. Cada transição alto-baixo aciona uma interrupção na máquina e a distância entre duas interrupções (que é o comprimento do pulso) representa uma parte atômica do fluxo.
A pinagem da porta cassete fica assim (o lado superior e o lado inferior têm os mesmos pinos duas vezes):
A-1 , GND, terra
B-2 , + 5V, 5 Volt DC
C-3 , MOTOR, Controle do motor, aprox. Fonte de alimentação de 6 volts do motor
D-4 , READ, Entrada de dados, ler dados do conjunto de dados
E-5 , WRITE, Saída de dados, gravar dados no conjunto de dados
F-6 , SENSE, Detecção, se uma das teclas PLAY, RECORD, F.FWD ou REW for pressionada
Minha ideia atual é a seguinte:
Com base no C64 Interfacing Blue Book (a partir da página 29), a máquina usa o nível TTL na porta READ e WRITE, portanto, acho que posso conectar diretamente um pino PWM do Arduino ao pino READ.
Eu também preciso fazer interface com o pino SENSE. Eu acho que posso conectar diretamente isso também a um dos PINs digitais e escrever digitalmente LOW quando precisar sinalizar o estado do botão pressionado. Isso está correto?
Mais tarde, desejo detectar a presença do sinal de + 6V no pino MOTOR. Alguns carregadores param o conjunto de dados no meio do processo de carregamento, então eu tenho que detectar isso também para emular a fita corretamente. Devo usar algum tipo de resistor para limitar a corrente lá ou posso ligar isso diretamente também? Talvez eu deva usar um relé lá?