Actualización : una implementación práctica de esto se realiza en el proyecto Tapuino realizado por Peter Edwards. Compruébalo, todo es de código abierto: https://github.com/sweetlilmre/tapuino
Estoy trabajando en un proyecto en el que estoy usando mi Arduino para transmitir archivos de datos de cinta TAP desde mi PC al C64. El lado del software del proyecto va bien, sin embargo, todavía soy nuevo en electrónica y no me gusta freír mi Commodore. Así que necesito ayuda de interfaz de hardware en realidad.
Las cintas C64 utilizan la modulación PWM para almacenar el programa en cinta de cassette y al leer los datos, un disparador opamp + schmitt convierte la señal de audio en ondas cuadradas. Cada transición alto-bajo provoca una interrupción en la máquina y la distancia entre dos interrupciones (que es la longitud del pulso) representa una parte atómica de la corriente.
El pinout del puerto del cassette se ve así (la parte superior e inferior tiene los mismos pines dos veces):
A-1 , GND, tierra
B-2 , + 5V, 5 voltios DC
C-3 , MOTOR, Control del motor, aprox. Fuente de alimentación de 6 voltios del motor
D-4 , LEER, Entrada de datos, leer datos del datasette
E-5 , ESCRIBIR, Salida de datos, escribir datos en el datasette
F-6 , SENSE, Detection, si se presiona una de las teclas PLAY, RECORD, F.FWD o REW
Mi idea actual es la siguiente:
Basado en el Libro azul de interfaz C64 (a partir de la página 29), la máquina usa el nivel TTL en el puerto READ y WRITE, así que supongo que puedo conectar directamente un pin PWM del Arduino al pin READ.
También necesito interactuar con el pin SENSE. Creo que también puedo conectarlo directamente a uno de los PIN digitales y escribir BAJO digital allí cuando necesito indicar el estado del botón presionado. ¿Es eso correcto?
Más tarde, deseo detectar la presencia de una señal de + 6V en el pin MOTOR. Algunos cargadores detienen el conjunto de datos en el medio del proceso de carga, así que tengo que detectar eso también para emular la cinta correctamente. ¿Debo usar algún tipo de resistencia para limitar la corriente allí o puedo conectarla directamente también? Tal vez debería usar un relé allí?