PIN-Tester - Durchgangsprüfung

Hallo,
ich habe mir zum Test der arduino NANO Pins eine kleine Routine geschrieben.
Ich prüfe nur, ob die PINs eine Verbindung haben, keine Funktionsprüfung. Also die Kontrolle der Lötstellen. (Ich weiß, dass bei ordnungsgemäßem Löten sowas eigentlich nicht notwendig ist ...)
Die meisten PINS schalte ich auf GND und teste mit digitalRead(). Bei einigen PINs prüfe ich die Spannung an analogen PINS mit analogRead().
Wenn gewünscht, kann ich auch den kompletten Code ergänzen.
Alles klappt soweit außer RST, REF, D0 und D1.
Die Ausgabe erfolgt im seriellen Monitor.
Wie könnte ich die PINS D0 und D1 prüfen, ohne die serielle Ausgabe zu beeinflussen ?

Gruß Frank

Das wird nix.
Du musst beide Zustände setzen und auch auslesen. Wie willst Du sonst erkennen, ob der PIN umgeladen wurde oder nicht doch schon von vornherein keinen HIGH-Pegel hatte?
(Im DaBla steht, ab welcher Spannung HIGH erkannt wird)

Wenn die serielle Ausgabe funktioniert ist Pin1 ok, Wenn die serielle Eingabe funktioniert ist Pin 0 ok. Kann auch umgekehrt sein, ich habe die genaue Belegung nicht im Kopf…

So als pragmatischer Lösungsvorschlag :wink:

Na ja, mit der Feststellung, weiß ich aber nicht, ob der PIN mit dem arduino verbunden ist oder nicht ? Hatte ich noch nicht gesagt, dass die serielle Ausgabe über USB am PC angezeigt wird.

Ich habe einfach den Unterschied "PIN angeschlossen" und "PIN nicht angeschlossen" verglichen/gemessen und daraus ergab sich die Logik. Meiner Meinung nach funktioniert das...

Das geht, wenn Du den PIN mit INPUT_PULLUP HIGH vorbelegst und den PIN mit einer Verbindung nach GND ziehst. Aber um zu testen, das Du nicht zufällig irgendwo einen Schluß hast, musst Du auch auswerten, ob der PIN HIGH geht, wenn das Kabel abgezogen ist.

Dann ist das ok.

Verbindung zum Steckbrett?
Die meisten Verbindungsprobleme fangen danach erst an ... :)

Pin 1 (Tx) muss OUTPUT HIGH sein, wenn gerade nichts ausgegeben wird, nach Serial.begin
Pin 0 (Rx) ist INPUT HIGH beim Uno/Nano, wenn gerade nicht an Serial gesendet wird.

Was mit Serial passiert, wenn man pinMode(0,OUTPUT) macht. hab ich noch nie probiert.

Klar weißt du das.
Woher sollen die Daten denn zum seriellen Monitor herkommen ?

Also, die Pins sind mit dem FTDI doch verbunden:

Ok Lötkontrolle …. vergiss was ich geschrieben habe….
Ein externer FTDI Adapter ginge aber….

Ich mache bei den D-PINs im setup() nur
pinMode(pin,INPUT_PULLUP);
Getestet wird mit digitalRead() ;
Zur Vorbelegung ein zusätzliches digitalWrite(pin,HIGH) ändert am Ergebnis nichts.
Schwieriger ist D13. Hier kann ich nur D13 mit zB. A4 verbinden und die Spannung testen
pinMode(13,OOUTPUT)
digitalWrite(13,LOW)
Wenn analogRead(18) > 1000 ist, dann ist der PIN unterbrochen. Ich verstehe es nicht aber funktioniert ???

pinMode(pin, INPUT_PULLUP); ist dasselbe wie

pinMode(pin, INPUT);
digitalWrite(pin, HIGH);

und schaltet den internen Pullup-Widerstand ein.

analogRead(18); ist beim atmega328 dasselbe wie
analogRead(A4); und könnte mit dem Pullup auf I2C-SDA kollidieren.

Ich bezweifle einfach mal die Sinnhaftigkeit des Tests.
Wie soll ich eine Hardwareverbindung ausserhalb eines Chip messen, wenn auf dem gleichen Pin eine Ausgabe erfolgt und dort das Ergebniss eingelesen wird.
Ist ungefähr so, wie wenn ich mittels Lautsprecher eine Nachricht nach München schreien möchte und zur Kontrolle dann sage, dass ich es ja gehört hab', obwohl ich hier im Alpenvorland stehe. :wink:

Beantworte Dir doch einfach mal die Frage, was Du erwartest wenn z.B. eine Lötstelle nicht gelötet wurde.

Das möchte auch niemand
Ein paar Beispiele:
D2 bis D12 sind mit PIN-GND-D(zwischen D1 und D2) fest verbunden
Wenn D2 bis D12 alles Fehler sind, dann liegt es wahrscheinlich an PIN-GND-D.
Test zB. D2:
pinMode(2, INPUT_PULLUP), wenn digitalRead(2)==HIGH, dann Fehler, also ist PIN D2 nicht verbunden

A0 bis A3 sind mit PIN-GND-A(zwischen Vin und 5V) verbunden
Wenn A0 bis A3 alles Fehler sind, dann liegt es wahrscheinlich an PIN-GND-A.
Prüfung der A-PINs genau wie D-PINs.

A4 bis A7 teste ich immer in Kombination mit einem bestimmten PIN(PIN-Vin, PIN-5V, PIN-3,3V oder PIN-D13)
zB. PIN-5V wird verbunden mit PIN-A4(18)
pinMode(18, INPUT_PULLUP), wenn analogRead(18) > 1000, dann ist das ein Fehler
Also ist entweder PIN-5V oder PIN-A4 fehlerhaft. Das müßte man nun manuell prüfen.

Das ganze in sinnvolle Meldungen und einer Zusammenfassung angezeigt.

Leider kann ich am Ende keine Rote oder Grüne LED blinken lassen - ich habe keinen PIN frei.

Für den Test von D0 und D1 habe ich leider noch keine Lösung gefunden.
Ich bitte um Hinweise, was ich verbessern/ändern muss, bevor ich die Steckbrettvariante fest verdrahte.

RTC Anschlüssen und Uhrzeit einstellen, dann sind beide Pins (D0 und D1) getestet ohne extra Sketch für schreiben.

Du überprüfst also eine Schaltung, auf welcher die zu testenden Pins auf GND gebrückt sind? Damit kannst Du aber dann nichts mehr anfangen... (Wozu also der Test?).

Wenn das ein fertiges Projekt sein soll dann wergrisse sehr schnell das Steckbrett, hat mickrige Kontakte was mit der zeit Oxidieren wen man die nicht benutzt == ausstecken, einstecken.
Schreibt einer was damit auf die Schnauze gefallen ist.

Ich teste die Lötverbindung. Ich brücke PIN mit GND. Wenn trotzdem keine Verbindung vorhanden ist, dann ist es ein Fehler.

Denkst Du wirklich ?
Ich möchte nicht die Funktion hinter D0 und D1 testen, sondern ich möchte wissen, ob die PINs also die beiden Drähte die da "rausgucken" wirklich mit dem arduino verbunden sind.

Multimeter und messen?
Andere Möglichkeit irgend ein Display anschliesen und die Pins testen, oder die interne LED als anzeige, willst doch nicht 100 mall die Pins testen.
Persönlich habe noch keine MCU (um die 10) gehabt was falsch verlötet war, zwei Pins zusammen verlötet schon dafür ist aber Lupe da

Ich vermute mal, der TO möchte nur seine eigene Löttechnik testen.
Da reicht auch ein Ohmmeter. Den ganzen Aufwand kann man tatsächlich sparen.