⏪ | Zurück zur Hauptseite |
Inhaltsverzeichnis
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.
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).
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).
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) |
Ein Fenster zur Eingabe der Bezeichnungen der Pins öffnet sich, wenn man auf die Bezeichnung klickt.
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.
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:
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.
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.
Eine typische I²C-Sequenz sieht etwa so aus (hier Test eines MCP23017):
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.
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.
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.
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";
...
Im Projekt wurde ein DIP-ZIF-Sockel mit 28 Pins verbaut. Andere Gehäuse-Formen lassen sich mit entsprechenden Adaptern testen.
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.
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.