Ne réinventons pas la roue! Quoique ...
Il faut profiter des développements qui ont été déjà réalisés par les communautés et notamment Arduino qui est très riche. Parce que c'est plus rapide, parce que c'est plus facile et parce qu'ils ont été éprouvés, ajustés, corrigés et sont directement opérationnels.
Pour ma part, je suis parti sur l'IDE Arduino et j'ai commencé par récupérer les librairies de gestion de l'afficheur OLED ainsi que la gestion des cartes SD et des FAT.
Oui mais, oui mais, le fait est qu'on ne maitrise pas tout
Et j'ai été confronté à différents problèmes qui m'ont occupés une bonne partie de mon temps.
Le premier et le plus évident, c'est la consommation en mémoire, les librairies sont bien pensée mais elle font, en général beaucoup que ce dont on a besoin et ça prend de la mémoire. Ayant à priori choisi un ATMega328 la seule intégration des librairies et fonctions de démarrage ont pris 75% de la mémoire programme. Je suis vite arrivé à 100% sans pouvoir être en mesure de lire un secteur.
La conséquence : Il m'a fallu réaliser un carte d'adaptation pour un micro contrôleur plus puissant, un ATMega1284. ce qui m'a permis d'être largement plus confortable.
Le second problème c'est la maitrise du code utilisé dans les librairies. Je me suis aperçu, pour une raison que j'ignore que la librairie qui gère le système de fichier utilisait les interruptions. Les transfert s'effectuant à cadence du Z80 de l'ordinateur, j'avais périodiquement des enchainements de niveau perturbés par les sous-routines d'interruption.
J'ai commencé par désactiver les interruptions, mais les cartes SD ne s'initialisaient plus. J'ai donc désactivé les interruptions uniquement durant l'exécution de mes routines échanges critiques. Le résultat n'a pas été probant, car aléatoirement des transferts s'exécutaient mal. Il s'agit d'un à quatre octets sur une transmission d'un secteur de 256 octets. Jamais le même nombre jamais les mêmes octets.
La conséquence : Après être resté un bon mois à tenter de débugger, je me suis asséché, à cours d'idée et j'ai fini par jeter aux oubliettes mon code.
Exit les librairies, exit le C, exit Arduino, je suis donc reparti sur un développement en assembleur avec Atmel studio devenu MicroChip studio.
Je me suis donc documenté et lorsque que j'ai vu la masse de travail devant moi, j'ai décider d'écrire également les routines de gestion de l'afficheur OLED.
Le réseau logique programmable CPLD créé l'interface avec le TRS-80, le microcontrôleur assure la partie logicielle du driveur de lecteur de disquette.
- Détails
Il s'agit d'écrire des routines permettant la gestion d'un module d'affichage piloté avec un bus I2C et basé sur le circuit SSD1306.
- Détails
Ce développement, mis à par l'adaptation en assembleur n'a posé aucun problème.
- Détails
Ayant pas mal avancé sur les interactions avec le TRS-80, afin de poursuivre rapidement, j'ai envisagé d'abord faire au plus simple et coder un OS minimaliste.
- Détails