Zurück zur Hauptseite

 

In­halts­ver­zeich­nis

Bedienung

IC-Auswahl / Aktionsauswahl

Neuanlage / Editierung

Kenndaten

Pin-Typen

Testschritte

I²C-Test

ICs testen

Test-Sockel

Export / Import

Bedienung

IC-Auswahl / Aktionsauswahl

Das Startfenster zeigt auf der linken Seite eine sortierte Liste der bereits erstellten IC-Definitionen. Ein Kontextmenü erlaubt es Aktionen mit dem ausgewählten IC auszuführen. Im rechten Bereich werden die Kenndaten des IC angezeigt. Dieser Bereich dient auch geleichzeitig zur Neuanalage und Editierung eines ICs.

Main Window

Die Neuanlage bzw. Editierung einer IC-Definition wird nachfolgend beschrieben. Ebenso die Testdurchführung. Die anderen Aktionsmöglichkeiten sind selbsterklärend.

Die ersten vier in der Liste vorhandenen Definitionen sind zum Selbsttest (s. Kapitel Hardware).

Neuanlage / Editierung

Kenndaten

Wurde Hinzufügen (Neuanlage) ausgewählt, wird der rechte Bereich mit leeren Felder zur Datenerfassung freigegeben. Wichtig ist, gleich zu Beginn die korrekte Anzahl Pins einzustellen. Ein nachträgliche Änderung führt zu Datenverlusten und sollte vermieden werden. Eine Abbildung des ICs kann einfach per Drag&Drop in das Grafikfeld gezogen werden. Nach Eingabe der Kenndaten müssen zunächst die Pins näher definiert (Schaltfläche Pins) und dann die Testschritte (Schaltfläche Test).

IC hinzufügen

Pin-Typen

Die Pin-Typen werden per Kontext-Menü ausgewählt. Das Menü kann per Mausklick auf das Kästchen geöffnet werden. Folgende Typen stehen zur Verfügung:

Typ Bedeutung MCP23017-Pin
NC Nicht angeschlossen (Not Connected) Input (3-State Z)
GND negative Versorgungspannung (Ground, Masse) Output LOW
VCC positive Versorgungsspannung (CC = Collectors (Mehrzahl) Output HIGH
Input Der Pin des zu testenden ICs ist ein Input-Pin Output LOW/HIGH definiert durch Testschritt
Output Der Pin des zu testenden ICs ist ein Output-Pin Input, wird nach Setzen der Input-Pins eingelesen
OpenCollector Der Pin des zu testenden ICs ist ein Output-Pin mit OC-Ausgang (Open Collector) Input-Pullup, wird nach Setzen der Input-Pins eingelesen
SDA SDA-Signal der I²C-Schnittstelle, der Pin muss mit dem Pin A0 des Arduino verbunden werden. Input (3-State Z)
SCL SCL-Signal der I²C-Schnittstelle, der Pin muss mit dem Pin A1 des Arduino verbunden werden. Input (3-State Z)

Pin-Def-Window

Ein Fenster zur Eingabe der Bezeichnungen der Pins öffnet sich, wenn man auf die Bezeichnung klickt.

Edit Pin Name

Testschritte

Nachdem die Pins definiert wurden, können die einzelnen Testschritte angelegt werden. Zu Beginn hat die Tabelle nur einen leeren Eintrag. Sobald mit der Bearbeitung des leeren Eintrags begonnen wird, wird eine neue leere Zeile am Schluss der Tabelle angelegt. Zur weiteren Bearbeitung der Zeilen steht ein Kontextmenü zur Verfügung.

Test Definition

Die funktionalen Pins (NC, VCC, GND, SCA, SCL) sind nicht einstellbar. Sie werden von der Software gemäß ihrer Funktion beschickt. Für die nicht-funktionalen IO-Pins muss pro Testschritt ein logischer Wert festgelegt werden festgelegt .

Input-Pins des zu testenden ICs sind blau hinterlegt, die Output-Pins rot. Es stehen jeweils die Optionen LOW, HIGH und IGNORE zur Verfügung:

Auswahl logischer Pegel

Log. Wert Bei Input-Pins Bei Output-Pins
LOW Belegung des Pins mit LOW Prüfung gegen Erwartungswert LOW
HIGH Belegung des Pins mit HIGH Prüfung gegen Erwartungswert HIGH
IGNORE Belegung des Pins mit LOW Wird nicht geprüft.

Zu beachten ist, dass, bedingt durch die Verwendung von MCP23017, die 28 Pins des Testsockels nicht gleichzeitig, sondern nacheinander in vier Blöcken gesetzt werden ([1..8], [21..28], [9..14], [15..20]). Bei statischen ICs, wie z.B. einem NAN-Gatter, ist das kein Problem. Bei dynamischen ICs, wie z.B. einem Flip-Flop, muss darauf geachtet werden, dass das Takt-Signal erst dann erfolgt, wenn die Datenleitungen den korrekten Wert besitzen.

I²C-Test

Ein Ziel des Projekts war, die I²C-Schnittstelle von ICs testen zu können. Bei ICs, die eine I²C-Schnittstelle besitzen (genau jeweils ein Pin hat den Typ SDA bzw. SCL), erscheint der Eintrag "I²C-Test einfügen" im Kontext-Menü. Es wird eine zusätzliche Zeile angelegt, mit der man eine I²C-Test-Sequenz anlegen kann.

Testdefinition mit I2C

Eine typische I²C-Sequenz sieht etwa so aus (hier Test eines MCP23017):

I2C-Sequenz

Eine I²C-Sequenz kann beliebig viele Sende-Pakete enthalten (im Beispiel 3), optional gefolgt vom einem Einlese-Auftrag mit Erwartungswerten.

Die genaue Beschreibung für den Aufbau ist im Kapitel Aufbau einer I²C-Sequenz beschrieben.

ICs testen

Das Testen des ICs geschieht über das Test-Fenster. Links wird die hinterlegte Grafik des ICs angezeigt, iIn der Mitte eine Liste der definierten Testschritte und rechts der Stand der aktuellen Testdurchführung.

Test Durchführung

Unterhalb der Grafik befindet sich eine ComboBox zur Auswahl des COM-Ports an den der Arduino angeschlossen ist.  Diese Liste ist gefiltert. Durch Anklicken der Schaltfläche Start startet der Test. Über die CheckBox EinzelSchritt kann der Einzelschritt-Modus ausgewählt werden. Über die Schaltfläche Testschritt muss dann jeder Testschritt freigegeben werden.

Aus noch unbekannten Gründen tritt es beim Teststart, wenn das System zum ersten mal gestartet wurde, ein Fehler bei dem Datenaustausch mit dem Arduino auf. Beim zweiten Anklicken von Start funktioniert es dann aber.

Parallel zum Test-Fenster wird ein Fenster mit den Testschrittdefinitionen aufgeblendet. In diesem Fenster werden die fehlerhaften Stellen angezeigt. Hier ein Beispiel mit einem anderen IC-Typ.

Testschritte

Dieses Fenster ist ansonsten funktionslos. Es wird beim Schließen des Test-Fensters wieder geschlossen.

Bei meinem Aufbau habe ich einen Arduino Nano eingesetzt, bei dem der übliche CH340C durch einen CH340B ersetzt wurde. Auf dem wurde eine Seriennummer hinterlegt (s. CH340 ersetzen: eindeutiger Port). Die Filterung der COM-Port erfolgt entweder durch einen Namensfilter (s. NameFilter in ComPortExtensions: ComPort-Zugriffe einfacher) oder durch Auswahl der Seriennummer:

private void comPortSelector_ComPortFound(object sender, ComPortFoundEventArgs e)
{
   e.ComPortDescriptor.DisplayName += " " + e.ComPortDescriptor.SerialNo;
   if (Main.ComPortSerialNo != "")
      e.AddDeviceToList = e.ComPortDescriptor.SerialNo.Contains(Main.ComPortSerialNo);
}

In der Fensterklasse Main sind die Werte direkt zu Beginn hinterlegt und können dort geändert werden:

public partial class Main : Form
{
   internal const String ComPortNameFilter = "";
   internal const String ComPortSerialNo = "ICTEST";
...

Test-Sockel

Im Projekt wurde ein DIP-ZIF-Sockel mit 28 Pins verbaut. Andere Gehäuse-Formen lassen sich mit entsprechenden Adaptern testen.

ZIF-SOP-Adapter ZIF-PLCC-Adapter
Adapter für SOP-Gehäuse Adapter für PLCC-Gehäuse

Eine Übersicht über die verschiedenen Gehäuseformen findet man bei BARTRONIX und Details in Wikipedia.

Export / Import

Das Projekt enthält bereits eine ganze Reihe von IC-Test-Definitionen. Um den Austausch mit anderen zu ermöglichen, gibt es die Aktionen Export und Import mit der einzelne Definitionen exportiert bzw. importiert werden können. Erstellt bzw. eingelesen werden XML-Dateien.