Mise à jour : une implémentation pratique de cela est effectuée dans le projet Tapuino réalisé par Peter Edwards. Vérifiez-le, tout est open source: https://github.com/sweetlilmre/tapuino
Je travaille sur un projet où j'utilise mon Arduino pour diffuser des fichiers de données de bande TAP de mon PC vers le C64. Le côté logiciel du projet se passe bien, mais je suis encore nouveau dans l'électronique et je n'aime pas faire frire mon Commodore. J'ai donc besoin d'une aide pour l'interface matérielle.
Les bandes C64 utilisent la modulation PWM pour stocker le programme sur une cassette et lors de la lecture des données, un déclencheur opamp + schmitt convertit le signal audio en ondes carrées. Chaque transition haut-bas déclenche une interruption dans la machine et la distance entre deux interruptions (qui est la longueur de l'impulsion) représente une partie atomique du flux.
Le brochage du port de cassette ressemble à ceci (le haut et le bas ont les mêmes broches deux fois):
A-1 , GND, masse
B-2 , + 5V, 5 Volt DC
C-3 , MOTEUR, commande moteur, env. Alimentation 6 Volt du moteur
D-4 , LIRE, Entrée de données, lire les données de la base de données
E-5 , ÉCRITURE, sortie de données, écriture de données dans la base de données
F-6 , SENSE, Détection, si l'une des touches PLAY, RECORD, F.FWD ou REW est enfoncée
Mon idée actuelle est la suivante:
Basé sur le livre bleu d'interface C64 (à partir de la page 29), la machine utilise le niveau TTL sur les ports READ et WRITE, donc je suppose que je peux connecter directement une broche PWM de l'Arduino à la broche READ.
J'ai également besoin d'interfacer avec la broche SENSE. Je pense que je peux également connecter directement cela à l'un des PIN numériques et y écrire Digital LOW lorsque j'ai besoin de signaler l'état du bouton pressé. Est-ce exact?
Plus tard, je souhaite détecter la présence d'un signal + 6V sur la broche MOTOR. Certains chargeurs arrêtent le jeu de données au milieu du processus de chargement, je dois donc également le détecter pour émuler la bande correctement. Dois-je utiliser une sorte de résistance pour limiter le courant là-bas ou puis-je simplement le brancher directement? Peut-être que je devrais utiliser un relais là-bas?