Skip to main content

Tentative de restauration d'un Compaq Mini 110 (partie 1)

C'était l'ordinateur de ma conjointe, acheté neuf en 2010. C'est un petit ordinateur, à peu près la surface d'un iPad, peu performant, avec un écran de 25 cm de diagonal, bâtis autour d'un microprocesseur Intel Atom N270 32 bits à 1,60 GHz, 2 Go de RAM DDR2 (1 Go en standard + 1 Go ajouté) et d'un disque dur de 160 Go. J'aime son format compact; l'idée est de le restaurer pour piloter des synthétiseurs via une interface MIDI MidiSport 4X4. Plusieurs options sont possibles:

  • installer Windows 7 32 bits et Cubase SX
  • installer un linux 32 bits (AntiX) avec Traktion
  • installer linux, un emulateur Atari (HATARI) et Cubase.

Quoi qu'il en soit, je n'ai pas besoin de beaucoup de puissance et le format compact est très adapté à mon studio.

J'ai préparé une clef USB bootable avec AntiX.

Premier démarrage

Sans succès: l'ordinateur s'arrête après quelques secondes. Malgré plusieurs tentatives, j'obtiens le même résultat: l'écran s'allume plus ou moins longtemps, parfois les messages de boot ont le temps d'apparaître, puis il emmet un claquement sec (parquage de la tête du disque dur) et redémarre.

Hypothèses

Les fait que les messages de boot ont le temps d'apparaître montre que le microprocesseur et la carte vidéo fonctionnent. C'est déjà ça !

Hypothèse de la batterie

Ma première hypothèse était la batterie, une Li-ion (3 cellules) qui accuse 17 ans! C'est un boîtier thermo-soudée, difficile à ouvrir sans faire beaucoup de dégâts. Elle ne tient aucune charge et pourrait même drainer l'alimentation.

Mais en la retirant, le résultat est le même → on élimine cette hypothèse pour le moment.

Hypothèse de l'alimentation

Le boîtier d'alimentation (power supply) pourrait être défecteux. Je n'ai pas d'autre alimentation de portable compatible, car l'entrée du Compaq Mini n'est pas standard: c'est un mini-connecteur barrel.

L'alimentation est supposée délivrer jusqu'à 1.58A sous 19V, soit 30W. La mesure à vide donne 18,93 V, ce qui me parait faible; s'écroule-t-elle sous la charge, ce qui expliquerait le problème ?

On peut tester avec une charge fixe comme une résistance de 19 Ohms (et donc lui faire tirer 1 A, soit 19 W). J'avais récupéré il y plus de 35 ans des rhéostats en céramique, ajustable jusqu'à 47 Ohms et capable de dissiper plusieurs dizaines de watts. C'était l'idéal ! Malheureusement, je les ai vendu récemment ! C'est toujours pareil: on accumule, on accumule, puis quand on s'en débarrasse en disant que ça ne servira jamais, on en a justement besoin.

J'ai cependant 10 résistances de 100 Ohms, probablement des 5W. Avec 4 en parallèle, on obtient une résistance équivalente de 25 ohms pouvant dissiper 20W.

Testé avec cette charge, l'alimentation a bien résisté, la tension n'ayant que légèrement baissée de 18.93 V à 18.56 V. Les résistances étaient légèrement chaudes au toucher, prouvant que l'alimentation délivrait bien le courant.

L'adaptateur fonctionne → on élimine cette hypothèse.

Hypothèse de la carte mère

Le problème vient donc de l'ordinateur lui-même. La carte mère qui draine l'alimentation ? Il faut ouvrir...

Ouverture

L'ouverture se fait en suivant les étapes dans iFixIt.

Une fois le disque dur enlevé, nouvel essai: on voit le ventilateur démarrer, puis s'arrêter aussitôt. Le problème est soit sur la carte d'alimentation, soit sur la carte-mère.

Les schemas

La conception de l'ordinateur n'a pas été faite par HP, la maison mère de Compaq, mais sous-traité a la société chinoise Inventec; ce modèle est appelé Bixby-MB chez Inventec. Heureusement, les schémas sont disponibles, bien que difficile à obtenir gratuitement; je les ai déposé sur Internet Archive pour un accès plus facile.

Observation

Quand je mets sous tension, j'observe ceci:

  1. le switch de mise en route répond bien; quand je l'actionne:
    1. l'hélice du ventilateur bouge brièvement;
    2. La LED du wifi (référencée D1 sur le schéma) s'allume et reste allumée de couleur ambre;
    3. La LED sous tension (référencée D4 sur le schéma) ne s'allume pas.
    4. La LED en charge (référencée D2 sur le schéma) ne s'allume pas.
    5. La LED activité disque (référencée D3 sur le schéma) ne s'allume pas.

Il y a donc certaines tensions présentes. En effet, dans un ordinateur, il n'y a pas qu'une seule tension d'alimentation; c'est même plutôt complexe, et la page 4 montre les différents blocs et l'ordre dans lequel il sont successivement alimentés.

Notons qu'on appelle souvent rail d'alimentation les différentes tensions. C'est historique: dans les vieux systèmes, les tensions étaient effectivement délivrées par des barres conductrices parallèles, ressemblant à des rails de chemin de fer.

Voici le schéma représentant les différents rails, les signaux de commande et les circuits intégrés qui les gèrent:

Alimentation

Note: dans le texte suivant, j'ai ajouté des couleurs aux références qui figurent dans le schéma:

  • pour les références des connecteurs
  • pour les références des rails d'alimentation
  • pour les références des signaux

Note: dans l'ensemble du schéma, je comprends que les signaux suivi d'un dièse (#) sont actifs niveau bas.

Sur la carte d'alimentation

La partie alimentation proprement dite se trouve aux pages 5 à 10 (filtrage et création des différentes tensions) et aux pages 50 à 52 (carte d'alimentation). Voici comment ça fonctionne:

  1. La sortie de l'adaptateur secteur arrive sur le connecteur d'entrée PAD2000, puis filtré pour arriver sur la diode D2004, dont le rôle est d'empêcher que la batterie se vide dans l'adaptateur. Le rail principal est donc +VADPT à 19V.
  2. +VADPT alimente U2000, le contrôleur de charge de la batterie, un BQ24721C de Texas Instrument. Ce contrôleur pilote deux MOSFET (qui agissent comme des interrupteurs):
    • un FDMC6675BZ (Q2000) qui pilote le rail +VBDC; il charge la batterie via le connecteur CN2001.
    • un FDMC4435BZ (Q2002) qui pilote le rail +VBATR; il alimente la carte mère via le connecteur CN2000.
  3. Note: il y a deux résistances notées "Kevin sense" sur le schéma. Kevin serait certainement honoré d'apparaître ici, mais c'est plutôt de Lord Kelvin dont on parle ici, et d'une méthode de mesure précise du courant.
  4. Sur la carte mère, la tension arrive par le connecteur CN18. C'est le contrôleur TPS51125 (U510) qui fournit les différentes tensions d'alimentation.

Voici les contacts sur le connecteur CN18 de la carte mère:

Broche Référence Description
1 +VBATR Alimentation
2 +VBATR Alimentation
3 +VBATR Alimentation
4 Non connecté
5 GND Masse
6 GND Masse
7 GND Masse
8 GND Masse
9 BATT_IN Présence de la batterie
10 BATT_CLK Communication avec la batterie (protocole I2C: horloge)
11 BATT_DATA Communication avec la batterie (protocole I2C: signal)
12 ADP_PRES Présence de l'adaptateur secteur (autrement dit: l'ordi en branché)
13 I_ADP Sortie
14 CHGCTRL_3 ?
15 LED_3_CAPS ?
16 AC_LED Contrôle de la LED D4 ?
17 LID_SW#_3 Détecte l'ouverture de l'écran
18 +V3AL Alimentation 3V

Noter les diodes de régulation BAV99 page 51; j'ai déjà eu des soucis avec ces diodes. Cependant ici elles sont utilisées sur la lignes I2C qui dialogue avec la batterie, donc elles sont hors de cause.

On voit sur le schéma au dessus que la diode D1 est alimentée directement par le rail +V3S, prouvant que celui-ci fonctionne. En outre, ce rail alimente aussi U508, le circuit principal qui gère l'alimentation.

Le ventilateur est alimentée par le rail +V5S, piloté par Q506 et U512. U512 fait juste un ET logique entre TH_3S_WARN# et le signal de modulation PWM_3S_FAN# provenant de U508. Puisque le ventilateur bouge bièvement à l'allumage, le rail +V5S est alimenté. Ce rail est créé à partir du rail +V5A piloté par Q508, un MOSFET FDC655BN.

Mesure

À la mesure, je constate bien 18.55V (+VBATR), sur les broches 1 à 3 du connecteur CN2000, et 3.3V (+V3AL) sur la broche 17.

Conclusion: la carte d'alimentation semble fonctionner correctement, mais je n'ai pas encore testé les signaux logiques.

Sur la carte mère

Sur la carte mère, des PAD (deux zones reliées par une goutte de soudure) permettent d'isoler des parties du circuit; super pratique pour le débuggage. Bravo à Inventec, cet ordinateur est vraiment bien conçu.

+VBATR devient +VBATP après le PAD503, et c'est cette tension qui arrive à la broche 16 (VIN) de U510. Comme il est responsable de générer la tension +V3AL (3.3V) et que je mesure cette tension sur CN2000, cette partie fonctionne. Reste à vérifier +V5A (5V)...

Le problème est bien là: j'ai 860 mV sur le PAD502 connecté au rail +V5A. Qui plus est, il reboot régulièrement et la tension chute alors à 10 mV, puis remonte à 860 mV. En résumé : il manque la tension de 5V !

Et pourtant, j'ai bien 18.5V en entrée de Q509 (en vert sur le schéma).

Les prochaines étapes vont être:

  1. Vérifier que les deux condensateurs C341 et C684 ne sont pas en court-circuit
  2. Enlever la goutte de soudure du PAD502 afin d'isoler la sortie 5V du reste du système
  3. Vérifier à l'oscillo les lignes de contrôle (broches 3 et 8 de Q509)

Suite

Après une nuit de repos, je reprends le travail. J'ai directement enlevé le contact du PAD502, ce qui a isolé la production de la consommation pour le rail +V5A. Et là, surprise ! J'ai un beau 5.05V côté production. C'est donc au niveau de la consommation, en aval donc, que ce trouve le problème.

Le rail +V5A est relié aux éléments suivants:

  • Production du 1.05V (rail +V1.05S) par U513; la consommation de ce rail peut être isolé grâce au PAD505.
  • Production du 1.8V (rail +V1.8) par U501; la consommation de ce rail peut être isolé grâce au PAD501.
  • Consommation par le convertisseur buck U11 (TPS51610); il assure les tensions pour le microprocesseur Atom.
  • Consommation par le convertisseur buck U2 (TPS5110); il génère une tension de 0.9V pour la mémoire.
  • Consommation par le contrôleur entrées/sorties ICH7 (U511).
  • Consommation par le MOSFET U504 pour produire le rail USBVCC1 qui alimente le contrôleur USB.
  • Filtrage par C7, C421, C333 et C614 entre les rails +V5A et +V3S
  • Filtrage par C496, C497 entre les rails +V5A et +V5S
  • Filtrage à la masse par C107 et présence sur le connecteur CN8.

Ouf ! Beaucoup de choses a tester ! Commençons par le plus faciles: le connecteur CN8 et les condensateurs.

Mise à jour 1: nouvelles mesures

Après quelques heures occupées sur autre chose, j'ai refais d'autres mesures sur PAD502 (côté production) avant de continuer en aval. Et là, nouvelle surprise: je n'obtiens plus le même résultat. Au lieu de 5.05V, j'ai environ 2.6V, qui décroît progressivement. Hmm, donc c'est bien côté production qu'est le problème. Déjà c'est rassurant, car ça circonscrit la zone. Le fait que la tension décroisse progressivement fait penser à un condensateur qui se décharge.

La prochaine étape sera de regarder les broches 3 et 8 de Q509 à l'oscilloscope pour voir si U510 tente bien de piloter le MOSFET. Ça m'étonnerait que ce soit le circuit de feedback (C623 et R619). Donc il ne reste que deux coupables possibles: le MOSFET Q509 (le plus probable) ou le circuit de commande U510.

Rappelons le principe de fonctionnement, qui utilise une bobine (L510) pour stocker de l'énergie. Faire passer un courant électrique dans une bobine (et un fil) génère un champ magnétique, et un champ magnétique génère un courant électrique.
Le MOSFET Q509 est un interrupteur piloté par le circuit U510. Il y a 18.5V en entrée du MOSFET; quand U510 ouvre l'interrupteur, l'énergie se stocke progressivement dans la bobine sous forme d'énergie magnétique. U510 mesure la tension de sortie de Q509 et ferme l'interrupteur quand la tension atteint celle désirée, soit 5V. La bobine libère l'énergie accumulée sous forme d'un courant électrique. En pilotant l'ouverture et la fermeture l'interrupteur, U510 permet de contrôler la tension de sortie.

Comme je dois m'absenter quelques jours, il n'y aura pas de mise à jour. Et ça me permettra de reprendre la tête plus fraîche !

Mise à jour 2: erreurs

De retour après quelques jours, je refais des tests, cette fois avec l'oscilloscope. Et là, je constate qu'en testant la broche 8 de Q509, le résultat n'est pas constant selon la pression que j'exèrce avec la pointe de la sonde. Aurais-je un faux contact ? Dans le doute, je refais la soudure, et je ne vois plus de changement lorsque j'apuie plus ou moins fort. Et je trouve un beau 5V à la sortie de la bobine L510.

Puis en voulant tester le PAD502, je m'aperçois que j'ai fait une erreur: j'ai confondu PAD502 avec PAD2, ce dernier isolant seulement VCC_CORE qui alimente le bridge ITL Diamondville. Autrement dit, juste le dernier consommateur sur la chaîne.

Quoi qu'il en soit, vu que le rail +V5A semble fonctionner à ce niveau, je vais continuer à tester la génération des autres tensions, mais je doute que ça soit ça le problème.

Mise à jour 3: hypothèse du contrôleur de fonctions (U508)

Toujours en traçant les consommateurs de +V5A, j'ai testé les deux diodes D5015 et D513. J'ai remarqué que U513 (qui pilote D513) était redémarré régulièrement, par l' intermédiaire du signal VCCP_ON, qui provient de U508. Ce dernier est un IT8512E de ITE, un contrôleur de fonctions très intégré pour les portables, qui remplace de nombreux circuits. C'est lui qui pilote les circuits pour établir les différentes tensions.

C'est un circuit très complexe architecturé sur un microprocesseur 8032 (issu du célèbre 8051), programmable par ISP (In-System Programming), c'est-à-dire par une interface pilotée par un logiciel externe. Autrement dit, impossible à reprogrammer; si ce circuit est fautif, il est impossible à remplacer car si j'en trouve un neuf, il ne sera pas programmé. Quand à le programmer, même si c'est théoriquement faisable, c'est quasiment impossible: il faut trouver le matériel et le logiciel de programmation, et le programme à implanter.

La seule possibilité serait d'en trouver un provenant d'un autre ordinateur du même type.

Mais gardons espoir. Pour le moment, la prochaine étape va être de déterminer quels sont les critères et les signaux qui pilotent la phase de démarrage du circuit; peut-être qu'un de ces signaux est manquant... Attaquons les 335 pages du datasheet !

À la lecture du schéma, les registres généraux (General Purpose) GPA, GPD, GPE et GPF sont utilisés pour piloter différents signaux et comme points de test (test point).

Registre General Purpose A:

Port Broche Type Utilisé par
PWM0_GPA0 24 Sortie PWR_LED#: contrôle de la LED Power
PWM0_GPA1 25 Sortie BAT_CHARGE_LED#: contrôle de la LED Charging Battery
PWM0_GPA2 28 Sortie PWR_SWIN2#_3: contrôle de l'entrée Power management power button de U511
PWM0_GPA3 29 inutilisé
PWM0_GPA4 30 Sortie TP25 : Test point 25
PWM0_GPA5 31 Sortie IN_PWM_3: contrôle de la caméra
PWM0_GPA6 32 Sortie PWM_3S_FAN#: contrôle du ventilateur
PWM0_GPA7 34 Sortie TP502 : Test point 502

Registre General Purpose D:

Port Broche Type Utilisé par
R11#_WUI0_GPD0 18 Entrée SLP_S3#_3R: provient de U511
R12#_WUI1_GPD1 21 Entrée SLP_S4#_3R: provient de U511
TACH0_GPD6 47 Sortie KBC_PWR_ON: si ce signal ou ADP_PRES, alors autorise la production des alimentations 1.05V, 1.8V, 3V et 5V
TACH1_GPD7 48 Sortie V1.5S_ON: autorise la production de l'alimentation 1.5V

Registre General Purpose E:

Port Broche Type Utilisé par
PWRSW_GPE4 125 Entrée PWR_SWIN#_3: bouton power switch
WUI5_GPE5 35 Entrée ADP_PRES: adaptateur présent

Registre General Purpose F:

Port Broche Type Utilisé par
PS2DAT0_GPF1 86 Sortie +V5S_EN#: contrôle le rail +V5A
PS2CLK0_GPF0 85 Sortie +V3S_EN#: contrôle le rail +V3A

Note: la signification des points de test ne figurent pas dans le service manual ni dans les schémas. Il doit probablement exister un document donnant la liste et les signaux attendus, mais je 'ai pas encore réussi à le trouver.

L'importance des signaux Power Good

Comment U508 sait-il que les différentes tensions nécessaires au fonctionnement de l'ordinateur sont bien présentes ?

Grâce aux signaux Power Good. Il y en a plusieurs:

  • VCCP_PG provient de U513; il indique le statut du rail +V1.05S
  • V1.5S_PG provient de U1; il indique le statut du rail +V1.5S
  • V1.8_PG provient de U501; il indique le statut du rail +V1.8
  • PWR_GOOD_3 est un résumé des 3 signaux précédents
  • PM_NB_PWRGD provient de U11; il indique le statut du rail +VCC_CORE

Voici une photo de U508.

    J'ai mis en évidence les tensions d'alimentation:
  • Vss = noir: c'est la masse
  • Vcc = rouge: c'est l'alimentation normale par le rail +V3S
  • VSTSBY = orange: c'est l'alimentation en mode sommeil, alimenté par le rail +V3AL
  • VBAT = bleu ciel: prévu pour une alimentation minimale par pile. Pas utilisé ici, connecté au rail +V3AL.
    Les signaux d'entrées:
  • l'entrée du power switch (en blanc): à 3.3V dès que l'alimentation est branchée, tombe à 0V quand elle est actionnée.
  • les signaux de statut (en mauve):
    1. BATT_IN: présence de la batterie
    2. I_ADP: indique peut-être que la batterie est en charge
    3. ADP_PRES: présence de l'adaptateur secteur
    4. PWR_GOOD_3: Power Good
    5. PM_NB_PWRGD: Power Good pour VCC_CORE
    6. SLP_S3#_3R: Wake up
    7. SLP_S4#_3R: Wake up
    Les signaux de sortie qui contrôlent l'alimentation (en jaune):
  • VCORE_ON: autorise l'alimentation du CPU
  • VCCP_ON: autorise l'alimentation du CPU
  • V0.9S_ON: autorise la production de 0.9V
  • +V3S_EN#: autorise la sortie du rail +V3A (Q511)
  • +V5S_EN#: autorise la sortie du rail +V5A (Q508)

En résumé: U508 envoie le signal de redémarrage à U1, U11, U501, U513 et U510 (rail 3V et 5V). Bien que tous ces circuits retourne l'information qu'ils fonctionnent, U508 continue de les faire redémarrer. C'est donc une autre information qui est manquante....

Ventilateur

Bon, voici pourquoi à chaque reboot le ventilateur fait un mouvement mais ne tourne pas: à la sortie (drain) du MOSFET Q506, on ne constate qu'une courte impulsion alors que gate et source ont des tensions continues. Q506 est probablement mort; est-ce qu'il conduit le rail +V5S à la masse ?

RTC

Autre constatation: la batterie de la RTC (Real Time Clock) est complètement vide. Elle assure normalement le fonctionnement d'une partie de U511 afin que l'ordinateur connaisse la date et l'heure même si la batterie principale est à plat.

Hypothèse ICH7

ICH7 (U511), de son nom complet Intel Input/Output Controller Hub SouthBridge version 7, est un contrôleur d'entrée / sortie très complet ... et complexe ! Dans un boîtier de 652 broches en BGA (Ball Grid Array: impossible d'accéder aux broches), le datasheet fait 848 pages !

Entre autres fonctions, il gère également les tensions (power management), et c'est lui qui est responsable de fournir les signaux SLP_S3#_3R et SLP_S4#_3R. Ces signaux déclenchent la mise en sommeil (Sleep State Control) et sont utilisés par U508 pour le réveil (wake-up). Et si la cause venait de là ?

    Voici les signaux de mise en sommeil gérés par ICH7:
  • S3: Suspend To RAM. Pris en compte par U508.
  • S4: Suspend To disk. Pris en compte par U508.
  • S5: Soft off. Non pris en compte.

La mesure à l'oscilloscope confirme que ICH7 fait descendre et remonter SLP_S3#_3R et SLP_S4#_3R. Mais pourquoi ?

Les signaux SB_PWRGD et PLT_RST#

SB_PWRGD est piloté par le contrôleur de fonctions IT8512E (U508 broche 81) pour avertir le Intel ICH7 (U511, broche AA4 = PWROK). À l'état haut, il indique que la tension +VCC_CORE est stable depuis 99 ms et que PCICLK est stable depuis 1 ms.

Si la broche PWROK de U511 est mise à l'état bas, U511 va émettre un signal de redémarrage PLT_RST# (Platform Reset) sur sa broche C26. Qui reçoit ce signal ?

  • U511 lui-même sur sa broche C19 (LAN_RST#)
  • U25 (contrôleur de réseau)
  • U10 (contrôleur de mémoire)
  • U508 sur sa broche 22 (LPCRST#_WUI4_GPD2)

D'après le datasheet: LPC hardware reset will reset LPC interface and host side modules. The source is determined by EC side register bit LPCRSTEN. [...]. N'ayant pas accès au registre LPCRSTEN, j'imagine que la source configurée est bien la broche 22.

Ici, on voit bien les reset envoyés par U511; les états bas sont réguliers car la durée du signal de reset est calibré, tandis que les états haut irréguliers représentent la durée pendant laquelle tout fonctionne.

Mon hypothèse est que c'est U508 qui avertit U511, qui en retour indique à U508 de redémarrer. Voici les signaux PWR_GOOD_3 (jaune) et PLT_RST# (cyan):

On voit clairement que bien que PWR_GOOD_3 soit haut depuis envion 160 msec, U511 demande un reboot par le signal PLT_RST# (qui dure environ 1 sec). Presqu'aussitôt PWR_GOOD_3 tombe, ce qui est normal car U508 fait redémarrer les différents MOSFET.

Comments

Popular posts from this blog

Update to Ubuntu 24.04

After years running Ubuntu 20.04, I recently (January 2025) installed Ubuntu 24.04 Noble Numbat. This cames with few improvements and a couple of disappointments, mainly the lost of my dual-screen: my graphic card, Nvidia Quadro FX3700, is not supported anymore by the latest driver. The result is: when the computer boots up, it does on output 0 (right screen). But as soon as Wayland starts, it switches to output 1 (left screen), ignoring the other output; my right screen remains black. This is a new behavior, it works fine on 20.04. Keyboard I write mainly in French and English. My keyboard is US Qwerty with US International layout. In English, what I see on keyboard is what I get on screen. In French, the diacritics are obtained with compositional keys: To get Ubuntu 20 Ubuntu 24 á é í ó ú ý Á É Í Ó Ú Ý ' e (Quote letter) ' E (Quote shift+letter) à è ...

Drive replacement for Fostex DMT8-vl

The IDE hard drive on my Fostex DMT8-vl multitrack recorder shows signs of its imminent death; when getting hot, I could not record anymore. Must be said this drive comes from an old Sun Station, and has been replaced because I/O failures were detected by Solaris. It worked at least 5 years in my recorder: not so bad. However, time is now to replace it. The DMT8-vl is not able to handle drives bigger than 8.4 GB. Well, it is able to (the current drive is 15 GB), but only 8.4 GB will be usable. My tought was to use a 8 GB CompactFlash; having no moving parts means no noise, which is quite temptating for a music recording device. I purchased a CompactFlash-IDE adapter on the internet (8$) and I had to build a male-male IDE cable adapter (4$). Unfortunately, this doesn't work. The drive is correctly discovered by the operating system, which proposes to format it ("format IDE?"). After answering "yes", the formating runs pretty fast (faster than on a real drive), ...

My journey with ATtiny4313 (part 1)

Introduction The context For a personal project, I want to program an Atmel ATtiny4313 microcontroller. I use microcontrollers for several years, but not on a regular basis (maybe 3-4 times a year), mostly for testing and generally with a deceptive result. But failure isn't the best training? This article aims to share my errors and success, as well as being a personal log. The project The project is to replace the main board of a Soundpool MO4, a MIDI OUT extension for the Atari ST; details here . Overall, the project is pretty simple: reading the parallel port and copy verbatim the data to MIDI out. This is the reason behind my choice of this particular microcontroller, since it embeds an USART and has an 8 bits parallel port (20 pins DIP package). The MO4 having 4 MIDI Outs, I will use 4 ATTiny4313, one for each out; this is actually cheaper than finding a 4-channel USART. Each microcontroller must determine if the data present on the parallel port shoul...