Ce projet est maintenant complété. J'ai fait un montage sommaire du circuit sur un morceau de bois qui trainait dans le garage. Comme les modules LED ne tenaient pas bien à la vertical j'ai ajouté un morceau d'acrylique pour les tenirs droit.
J'ai ajouté un petit haut-parleur au circuit de la carte mère pour signaler certains événements aux joueurs. Voici le schéma corrigé.
Schéma des manettes de contrôle:
PIC12F1822
Comme c'est la première fois que j'utilise un PIC12F1822 sur ce blogue je vais en faire une brève présentation. Il s'agit d'un MCU à 8 broches avec un coeur enhanced mid-range avec 2KBi de mémoire flash, 128 octets de RAM et 256 octets EEPROM. Mais ce qui rends intéressant les enhanced mid-range c'est l'adressage indexé relatif via les 2 registres FSR. J'ai profité de cette fonctionnalité pour utiliser une façon différence de programmer. Tout en travaillant en assembleur, j'ai en quelque sorte imité le travail d'un compilateur 'C'. C'est à dire que j'ai créé une pile (stack) pour passer les arguments aux sous-routines et aussi pour les variables locales. J'ai défini un ensemble de macros pour faciliter ce travail avec la pile. Le programme ne fait donc pas usage de variables temporaires autres que celles qui sont empilées. L'ensemble des fichiers du projet sont ici.
fonctionnalités
Il ne s'agit pas seulement d'un jeux de tictactoe, le cube de LED peut-être contrôlé à partir d'un PC grâce à un cable sériel RS-232. les paramètres de transmission sont 19200BAUD/8N1 pas de contrôle de flux. Vous trouverez dans le dossier google docs du projet 3 scripts python à titre d'exemple.
Lorsque le jeux est allumé et avant de démarrer la partie, le PC peut transmettre des commandes au contrôleur maître qui les relais au cube. Cependant lorsque la partie est débutée les commandes ne sont plus relayées.
liste des fichiers source.
fichier | contenu |
---|---|
tictactoe3d.asm | firmware des modules LEDs. |
pic10f322_m.inc | macros d'usage général pour PIC10F322 |
tictactoe-master.asm | firmware du contrôleur principal sur la carte-mère. |
pic12f1822_m.inc | macros d'usage général pour PIC12F1822 |
difficultés rencontrées
Je dois dire que le développement du firmware a été plus difficile que je l'aurais cru surtout pour le contrôleur maître. En bonne partie du à ma nouvelle façon de travailler avec une pile. Il faut toujours un certain temps pour s'adapter à une nouvelle méthode de travail. Mais cette méthode vaut la peine d'être explorée et améliorée. Vous noterez dans le code source du fichier controleur-maitre.asm la présence de 2 sous-routines qui n'ont pas été compilées dans la version finales. send_to_pc et display_byte n'étaient que des outils de débogage. La première sous-routine envoie un octet vers le PC et l'autre utilise les modules 1 et 4 du cube pour afficher un octet en base 4. Sans ces outils le travail le n'aurais peut-être jamais aboutis. Ce sont deux exemples de la façon d'utiliser des ressources qui sont déjà disponible dans le projet pour faire du débogage.
conclusion
tictactoe-master.asm n'utilise que 51% de la mémoire programme et 12% de la RAM. Tictactoe3D.asm utilise 63% de la mémoire programme et 23% de la RAM il y a donc encore de la place pour apporter des améliorations et nouvelles fonctionnalités au projet.
mise à jours
2016-09-23 ajout d'une vidéo sur youtube suite à une demande.
Aucun commentaire:
Publier un commentaire
Remarque : Seuls les membres de ce blogue sont autorisés à publier des commentaires.