[Arduino] ICT testeur de circuits intégrés

Placez ici vos trucs et astuces, étalez sans retenue votre savoir-faire et votre science qui va nous permettre de redonner une apparence neuve et fonctionnelle à nos bouzes.

Modérateurs : Carl, Papy.G, fneck

Brochiman
Messages : 778
Inscription : 02 juin 2019 11:26

Re: [Arduino] ICT testeur de circuits intégrés

Message par Brochiman »

@hlide captures du 4000 dans XGPro?
4000.jpg
4000.jpg (162.5 Kio) Consulté 111 fois
Brochiman
Messages : 778
Inscription : 02 juin 2019 11:26

Re: [Arduino] ICT testeur de circuits intégrés

Message par Brochiman »

Voilà le grand frère, le 74245, beaucoup plus rapide à recopier :D :D :D

Code : Tout sélectionner

$74245
3-state Octal bus transceiver
20
111111111GHHHHHHHH0V
0HHHHHHHHG111111110V
0HHHHLLLLG000011110V
100000000GLLLLLLLL0V
110101010GLHLHLHLH0V
111111111GHHHHHHHH0V
0LLLLLLLLG000000000V
Avatar de l’utilisateur
hlide
Messages : 2128
Inscription : 29 nov. 2017 10:23

Re: [Arduino] ICT testeur de circuits intégrés

Message par hlide »

Bon je pense avoir extrait le nécessaire de Logic.lst. Il reste des octets dont j'ignore la signification (toujours à 0 a priori) mais qui n'ont pas l'air d'influencer sur la conversion. Pareil pour l'entête du fichier, je suis allé à l'essentiel pour extraire et convertir via un programme que j'ai écrit.

Donc on au max 48 broches de testable pour XGPro - je n'ai pas été voir pour ICT.

@brochiman, j'ai besoin d'un exemple qui contient du C (clock pulse) et Z (high impedance) et le convertisseur sera au point.
Avatar de l’utilisateur
hlide
Messages : 2128
Inscription : 29 nov. 2017 10:23

Re: [Arduino] ICT testeur de circuits intégrés

Message par hlide »

Allez hop ! ça devrait faire l'affaire :
logic_XGPro.zip
(7.31 Kio) Téléchargé 3 fois
la description est "TODO" parce que ça ne fait pas partie de ces fichiers.
Avatar de l’utilisateur
hlide
Messages : 2128
Inscription : 29 nov. 2017 10:23

Re: [Arduino] ICT testeur de circuits intégrés

Message par hlide »

L'autre fichier était petit et ne contenait rien de notable et de reconnaissable.
Brochiman
Messages : 778
Inscription : 02 juin 2019 11:26

Re: [Arduino] ICT testeur de circuits intégrés

Message par Brochiman »

@hlide Merci pour la conversion :D . Est-ce que celui-la te convient:

Code : Tout sélectionner

$74374
3-State octal D-Type transparent latches and edge-triggered flip-flops
20
1Z11ZZ11ZGCZ11ZZ11ZV
0H11HH11HGCH11HH11HV
0L00LL00LGCL00LL00LV
Avatar de l’utilisateur
hlide
Messages : 2128
Inscription : 29 nov. 2017 10:23

Re: [Arduino] ICT testeur de circuits intégrés

Message par hlide »

C'est tout bon !
Avatar de l’utilisateur
hlide
Messages : 2128
Inscription : 29 nov. 2017 10:23

Re: [Arduino] ICT testeur de circuits intégrés

Message par hlide »

Par contre, tu récupères comment la description ?
Brochiman
Messages : 778
Inscription : 02 juin 2019 11:26

Re: [Arduino] ICT testeur de circuits intégrés

Message par Brochiman »

je regarde le datasheet :mrgreen: :mrgreen: mais je pense que sur la page wikipedia en anglais on devrait pouvoir trouver la liste

Edit: https://en.wikipedia.org/wiki/List_of_7 ... d_circuits
Patrick
Messages : 1779
Inscription : 16 mai 2009 09:30
Localisation : Clermont-Ferrand

Re: [Arduino] ICT testeur de circuits intégrés

Message par Patrick »

Beau travail Hlide.
J'ai comparé les fichiers logic.ict et celui que tu as produit à partir des données XGPro.

Première constatation, les définitions sont très semblables. Je ne me prononcerai pas sur qui à copié qui.

Deuxième point, il est fait usage du code Z qui correspond à une sortie en haute-impédance, généralement, c'est un H dans le fichier ICT. Il faut que je regarde comment traiter ce cas pour permettre l'utilisation des données de XGPro, si toutefois cela est autorisé.

Enfin, j'ai mis à jour les descriptions des composants dans le nouveau fichier de données, à partir des informations de logic.ict. Un effet de bord est que toutes les nouvelles définitions ont encore un TODO.
Voici le fichier modifié :
logic_XGPro.zip
(9.76 Kio) Téléchargé 1 fois
J'ai vu avec intérêt que le PIA 6821 était géré.
Patrick
Avatar de l’utilisateur
hlide
Messages : 2128
Inscription : 29 nov. 2017 10:23

Re: [Arduino] ICT testeur de circuits intégrés

Message par hlide »

Voici le fichier source (C++ parce que je ne fais que ça au boulot - pas spécifiquement Windows) pour générer le fichier ICT avec la commande : "ExtractLogicLst.exe >logic_XGPro.ict". Le fichier XGPro doit être dans le même répertoire que le convertisseur.

Code : Tout sélectionner

#include <iostream>
#include <fstream>

struct Device
{
    int lines;              // nombre de lignes de test
    char name[33];          // le dernier est un zéro terminal
    char pin_count;         // nombre de broche du composant
    char pad[6];            // inconnus au bataillon
    unsigned char pins[1];  // 4 bits encodant un état par broche
};

int main()
{
    // ouverture du fichier
    std::ifstream in("Logic.lst", std::ios::binary);
    if (in.bad())
        return false;

    // déterminer sa taille en octet
    in.seekg(0, in.end);
    auto length = int(in.tellg());
    in.seekg(0, in.beg);

    // allouer la mémoire pour lire tout le fichier
    auto data = new char[length];

    // lire le fichier en mémoire
    in.read(data, length);

    // se place sur le premier device
    int file_offset = 0x10;

    // fonction lambda pour récupérer le device et se positionner sur le suivant pour la prochaine itération
    auto next_device = [&]() -> Device *
    {
        auto device_offset = *((int*)(&data[file_offset]));

        file_offset += 4;

        return device_offset ? (Device *)(&data[device_offset]) : (Device *)nullptr;
    };

    // on itère sur l'ensemble des devices
    while (auto device = next_device())
    {
        // récupération du nom et du nombre de broche pour le fichier ict en sortie.
        std::cout
            << "$" << device->name       << std::endl
            << "Description TODO"        << std::endl
            << int(device->pin_count)    << std::endl;
        // on itère sur les lignes de test
        for (int line = 0; line < device->lines; ++line)
        {
            std::string row;
            auto pins = device->pins + 24 * line;
            // on itère sur les broches du device
            for (int pin = 0; pin < 48; ++pin)
            {
                // l'état d'une broche est encodé sur 4 bits
                switch (*pins & 15)
                {
                case  0: row += "0"; break;
                case  1: row += "1"; break;
                case  2: row += "L"; break;
                case  3: row += "H"; break;
                case  4: row += "C"; break;
                case  5: row += "Z"; break;
                case  6: row += "X"; break;
                case  7: row += "G"; break;
                case  8: row += "V"; break;
                default: break;
                }
                // passe à la broche suivante
                *pins >>= 4;
                if (pin & 1) ++pins;
            }
            // et on les sort dans le fichier en sortie
            std::cout << row << std::endl;
        }
    }
}
Répondre