Hallo,
ich suche eine Möglichkeit, Mikrocontrollerports auf ihre Funktion zu
testen. Also Eingang/Ausgang mit möglichst allen Konfigurationen.
Die meisten Controllerports haben ja heutzutage mindestens folgende
Funktionen:
- Eingang ohne internen Pull-Widerstand (echtes TriState)
- Eingang mit internem Pull-Widerstand
- Ausgang mit Push-Pull-Stufe (echtes Low/High)
- Ausgang mit Open-Drain-Stufe (echtes Low/Pull-Up-Widerstand für High),
kann ggf. auch als Eingang genutzt werden (wenn man aufpasst)
Was ich bisher gefunden habe:
1) Selbsttest: Nichts am Port angeschlossen, die verschiedenen
Ausgangskonfigurationen geben jeweils ein Low/High aus, und der Pegel am
Port wird eingelesen und verglichen (man darf dann halt nicht das
Ausgangslatch lesen, sondern muss wirklich das Eingangsregister lesen).
Diese Variante ist am einfachsten, aber ich zweifle daran, ob das
wirklich Aussagekräftig ist.
2) LED + Taster an jeweils einem Portpin: Hier im Forum gibt es bereits
einige Vorschläge dazu. Man muss ein bisschen rechnen, was die
Widerstände und Spannungspegel etc. angeht, aber recht einfach
aufzubauen.
3) Aufteilung des Ports in 2x 4-Bit Eingang/Ausgang, was am Eingang
anliegt, wird am Ausgang ausgegeben (z.B. Taster & LED). Man muss
zweimal testen, da die Funktion getauscht werden muss. Wenn man auch die
Konfigurationen (z.B. Push-Pull/Open-Drain) testen will, wird die
Hardware ggf. etwas aufwendiger.
4) LED-Matrix mit Charlieplexing: Hier werden zumindest Ausgang Low/High
sowie TriState verwendet, aber eingelesen wird nichts. Relativ einfach
aufzubauen, z.B. zwei 4-Bit Matrizen halte ich noch für überschaubar.
5) Verwendung der Ports als Datenbus, z.B. ein Display oder RAM mit
parallelem Datenbus anschließen. Hier wäre alles dabei, Low/High mit
Push-Pull und Open-Drain sowie Eingang (ggf. mit externem Pull-Up).
Braucht dann mehr als 8-Bit, aber ist ebenfalls relativ einfach
aufzubauen und beinhaltet alle Konfigurationen bzw. sollte mit nahezu
allen Konfigurationen funktionieren.
Ich tendiere momentan zu #2, weil ich wissen möchte, wie zuverlässig das
ganze ist bzw. wie sich die LED verhält wenn man den Taster dauerhaft
drückt, aber vielleicht kennt jemand weitere Möglichkeiten.
Ralf
Vielleicht macht Dir Tasten drücken und LEDs anschauen Spass, aber
irgendwann wird es langweilig. Falls es also mehrere µCs sind, wirst Du
sicher einen automatisierten Test machen wollen. Oder habe ich Deine
Frage falsch verstanden?
Ein "Selbsttest" klingt erstmal nach der einfachsten Lösung.
Ich will meine China-Billig-µCs auch testen und hatte dabei gedacht, ich
hänge einfach an jeden Ausgang einen kleinen Kondensator oder einen
Widerstand und einen Kondensator in Reihe.
Dann kann man auch die internen Pull-Ups prüfen, indem der µC die Zeit
bis zum Pegel-Wechsel misst, nachdem er die Richtung von Out auf In
umgeschaltet hat.
Wäre das für Deinen Fall OK?
Mit einem oder mehreren 74HC4067 oder so, kann man das ganze natürlich
noch verfeinern.
Hmmm... Mikrocontroller sind um Größenordnungen zuverlässiger als selbst
gelötete Platinen. Und wenn was nicht stimmt, dann doch eher Ausfälle
unter extremen Temperaturen und unsauberer Spannungsversorgung.
Bisher war bei mir noch nie der MC defekt. War jedes mal EMV,
abgerissene Kabel oder versteckte Fehler im Programm.
@Torsten:
> Vielleicht macht Dir Tasten drücken und LEDs anschauen Spass, aber> irgendwann wird es langweilig. Falls es also mehrere µCs sind, wirst Du> sicher einen automatisierten Test machen wollen. Oder habe ich Deine> Frage falsch verstanden?
Du hast recht, Variante #2 bedingt natürlich manuellen Eingriff, was man
beispielsweise bei #5 nicht hat, da auch automatisch zurückgelesen
werden kann.
Insofern ist automatisiert natürlich geschickter, selbst wenn es nicht
um Serienfertigung geht.
> Ich will meine China-Billig-µCs auch testen und hatte dabei gedacht, ich> hänge einfach an jeden Ausgang einen kleinen Kondensator oder einen> Widerstand und einen Kondensator in Reihe.
Mit der ersten Variante kannst du aber nur Ausgang = Low prüfen, ein
High wäre ggf. ungesund für den Treiber, oder nicht? Der externe
Widerstand muss schon sein, denke ich.
> Dann kann man auch die internen Pull-Ups prüfen, indem der µC die Zeit> bis zum Pegel-Wechsel misst, nachdem er die Richtung von Out auf In> umgeschaltet hat.> Wäre das für Deinen Fall OK?
Hmmm... Stimmt, und man kann beides testen, ohne und mit internem
Pull-Up. Hört sich nicht schlecht an, ich grübel da mal drüber.
> Mit einem oder mehreren 74HC4067 oder so, kann man das ganze natürlich> noch verfeinern.
Du meinst um verschiedene RC-Kombinationen zu testen?
@Noch einer:
> Hmmm... Mikrocontroller sind um Größenordnungen zuverlässiger als selbst> gelötete Platinen. Und wenn was nicht stimmt, dann doch eher Ausfälle> unter extremen Temperaturen und unsauberer Spannungsversorgung.> Bisher war bei mir noch nie der MC defekt. War jedes mal EMV,> abgerissene Kabel oder versteckte Fehler im Programm.
Das stimmt. Im ersten Schritt möchte ich damit tatsächlich auch die
Programmfunktion testen können, weil der Port bzw. einzelne Portpins je
nach Anwendungsfall Ein- oder Ausgang oder auch mal beides sein können.
Ralf
Ralf schrieb:> Im ersten Schritt möchte ich damit tatsächlich auch die> Programmfunktion testen können
OK, das ist dann aber was anderes.
PS: ebay 171775947969 oder so ist teuer, spart aber vllt. Arbeit.
Ralf schrieb:>> Mit einem oder mehreren 74HC4067 oder so, kann man das ganze natürlich>> noch verfeinern.> Du meinst um verschiedene RC-Kombinationen zu testen?
Nein, eher um Signale auf bestimmte einzelne Ports zu geben oder von
verschiedenen Ports auszulesen.
Über "ungesund"^^ würde ich mir bei z.B. 10nF keine Gedanken machen.
@Torsten:
>> Im ersten Schritt möchte ich damit tatsächlich auch die>> Programmfunktion testen können>OK, das ist dann aber was anderes.
Warum? Das würde doch mit dem RC-Aufbau genauso gehen.
>>> Mit einem oder mehreren 74HC4067 oder so, kann man das ganze natürlich>>> noch verfeinern.>> Du meinst um verschiedene RC-Kombinationen zu testen?> Nein, eher um Signale auf bestimmte einzelne Ports zu geben oder von> verschiedenen Ports auszulesen.
Aso. Ich glaub das ließe sich hier nicht sinnvoll anwenden (oder ich hab
nicht genau genug drüber nachgedacht).
> Über "ungesund"^^ würde ich mir bei z.B. 10nF keine Gedanken machen.
Njaaaa, "Kondensator ist ungeladen ein Kurzschluss" und Push-Pull-Stufe
macht mich immer nervös :) Ich kenn die Berechnungsgrundlagen nicht, um
einschätzen zu können, ab wann es wirklich ungesund ist ohne
zusätzlichem Widerstand, daher sehe ich es immer als ungesund an =)
Ralf