Forum: Mikrocontroller und Digitale Elektronik Arduino bleibt stehen, was kann man dann noch an Debug Daten abrufen?


von Markus (Gast)


Lesenswert?

Hi, also ich hab jetzt auch das Problem, dass mein Arduino einfach 
stehen bleibt.

Online finde ich dazu nur, dass daran Interferenzen schuld sein können.

Der Arduino hat ohne Probleme einen Ventilator 230V über einen 
Optokoppler ein und ausgeschalten, je nachdem ob eine gewisse Temperatur 
überschritten wurde.

Jetzt habe ich ein display dazugehängt, welches die Temperatur anzeigt, 
seitdem hängt er sich regelmäßig auf.

Da beim Abschalten des Relais auch ein knacken in den PC Lautsprechern 
zu hören ist, denke ich, dass da gewaltige Interferenz zurückkommt.


Kann man beim Arduino noch etwas auslesen das eventuell Debug Infos 
anzeigt?

Bevor ich hier anfange Schaltpläne zu zeichnen und hochzuladen.

Ganz einfach gesagt:

Arduino steuert über 5V eben das Relais mit Pin.
Danach hängen noch 2 Temp Sensoren DHT 22 dran.
Und eben das mini display zum Anzeigen der Temperatur.

Seitdem das Display dran hängt, passiert das.

Zuvor hat sich nur manchmal der DHT22 aufgehängt, aber das lies sich mit 
einer simplen DHT Reset Anweisung beheben.

Freilauf Diode hängt zumindest beim Relais dran zwischen +5V und GND.
Muss da zwischen Pin und GND auch eine ran?

von EAF (Gast)


Lesenswert?

Das Zauberwort: Snubber!

von abc (Gast)


Lesenswert?

Markus schrieb:
> Seitdem das Display dran hängt, passiert das.

Firmwarebug?

Markus schrieb:
> Der Arduino

Arduino != Arduino. Welcher uC?

Markus schrieb:
> Kann man beim Arduino noch etwas auslesen das eventuell Debug Infos
> anzeigt?

Mit einem geeigneten Debugger.

von Diek (Gast)


Lesenswert?

Du könntest z.B. innerhalb des Programms Statuswörter oder Nummern 
(1,2,3,4,5) verteilen und die auf dem Display ausgeben. Wenn es dann 
hängen bleibt siehst du das Statuswort und kannst gucken an welcher 
Stelle im Programm das passiert ist.
Wenns immer die selbe Stelle ist wirds wohl am Code liegen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Markus schrieb:
> Bevor ich hier anfange Schaltpläne zu zeichnen
Das solltest du eigentlich schon vor dem Schaltungsaufbau gemacht 
haben. Jetzt ist die zweitbeste Zeit dafür. Gib allen Bauteilen eigene 
Namen (R1, R2, OK1, Relais2, ModulX, ...) und schreibe die 
Typen/Bestellbezeichnungen dazu. Wenn möglich gib für Module einen Link, 
wo du sie herhast.

> und hochzuladen.
Lade doch auch gleich ein (paar) Foto(s) vom realen Aufbau mit hoch. 
Denn selbst super Schaltpläne können wirklich untauglich in Hardware 
umgesetzt werden...

: Bearbeitet durch Moderator
von Peter D. (peda)


Lesenswert?

Markus schrieb:
> Hi, also ich hab jetzt auch das Problem, dass mein Arduino einfach
> stehen bleibt.

Definiere das.
In der Regel arbeitet nämlich die CPU munter weiter. Nur ist ein Zustand 
eingetreten, den der Programmierer an dieser Stelle nicht erwartet hat, 
z.B. ein Störimpuls an einem Eingang. Die CPU wartet dann ewig und 3 
Tage, bis eine Bedingung erfüllt ist.
Die Abhilfe besteht darin, solche Stellen zu identifizieren und mit 
einem Timeout zu sichern. Läuft der Timeout ab, muß das signalisiert 
werden, z.B. durch eine blinkende LED.
Kann man einen Debugger anschließen, dann kann man sich dort bequem 
anzeigen lassen, wo die CPU gerade rum-idled.
Und generell sollte man während der Entwicklung alle Stromsparmodi 
erstmal disablen.

: Bearbeitet durch User
von derjaeger (Gast)


Lesenswert?

Mikrocontroller-Watchdog aktivieren

von Peter D. (peda)


Lesenswert?

derjaeger schrieb:
> Mikrocontroller-Watchdog aktivieren

Beste Methode, um Programmierfehler zu verschleiern.
Nach einem Watchdogreset wird alles getilgt, was Hinweise auf die 
Fehlerursache geben könnte.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

derjaeger schrieb:
> Mikrocontroller-Watchdog aktivieren
Das ist das allerletze, was man macht, nachdem das System einige Wochen 
ohne Probleme gelaufen ist.
Die Frickelbrüder, die sich für ihren regulären Softwareablauf auf den 
WD verlassen, die sollten kein Geld für ihre Software bekommen.

Wo ich den WD als probates Mittel zum Zweck ansehe, ist z.B. bei 
stromsparenden Systemen, wenn im "Standby" der µC komplett ausgeschaltet 
ist, nur der WD läuft und alle 200ms den µC kurz neu startet, um 
abzufragen, ob eine Taste betätigt oder die Batteriespannung zu weit 
abgesunken ist.

von Dyson (Gast)


Lesenswert?

Lothar M. schrieb:
> nur der WD läuft und alle 200ms den µC kurz neu startet, um
> abzufragen, ob eine Taste betätigt oder die Batteriespannung zu weit
> abgesunken ist.

Dann aber mit WD-Interrupt und nicht mit Reset.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Dyson schrieb:
> Dann aber mit WD-Interrupt und nicht mit Reset.
Ja, seit es den Enhanced Watchdog Timer gibt. Zitat aus der Appnote 
AVR132:
"The WDT in all new AVR devices also has the ability to
generate interrupts instead of resetting the device."

Bei den alten AVR war zum Verlassen des Power Down per Watchdog 
tatsächlich noch ein Systemreset nötig...

von Dietrich L. (dietrichl)


Lesenswert?

Markus schrieb:
> Freilauf Diode hängt zumindest beim Relais dran zwischen +5V und GND.
> Muss da zwischen Pin und GND auch eine ran?

Direkt zwischen +5V und GND kommt nie eine Freilaufdiode! Sie kommt 
parallel zur Spule des Relais.

von Markus (Gast)


Lesenswert?

Diek schrieb:
> Du könntest z.B. innerhalb des Programms Statuswörter oder Nummern
> (1,2,3,4,5) verteilen und die auf dem Display ausgeben. Wenn es dann
> hängen bleibt siehst du das Statuswort und kannst gucken an welcher
> Stelle im Programm das passiert ist.
> Wenns immer die selbe Stelle ist wirds wohl am Code liegen.

Hmm dachte tatsächlich das hängt an hardware, nicht an software, aber 
hab das dennoch mal probiert ... hängt sich bei display.display() auf 
...

Hab das jetzt mal auskommentiert und mal gucken wann ich mich darum 
kümmern kann.

von Steve van de Grens (roehrmond)


Lesenswert?

Markus schrieb:
> hängt sich bei display.display() auf

Dann hängt vielleicht dein I²C Bus. Hast du vielleicht Pull-Up 
Widerstände vergessen? Auf den China Modulen sind manchmal welche drauf, 
aber meist zu hochohmig.

von Εrnst B. (ernst)


Lesenswert?

Markus schrieb:
> Jetzt habe ich ein display dazugehängt, welches die Temperatur anzeigt,
> seitdem hängt er sich regelmäßig auf.

Und das Display über lange, ungeschirmte Kabel, die nah am Relais und am 
230V-Ventilator vorbeiführen, angeschlossen?

Markus schrieb:
> Bevor ich hier anfange Schaltpläne zu zeichnen und hochzuladen.

Für die erste Beurteilung reicht meist ein Foto des Aufbaus.

: Bearbeitet durch User
von abc (Gast)


Lesenswert?

Markus schrieb:
> hängt sich bei display.display()

Inkorrekte Verwendung von Bibliotheken ist ausgeschlossen?
Poste mal den Quellcode.

von Markus (Gast)


Lesenswert?

Εrnst B. schrieb:
> Markus schrieb:
>> Jetzt habe ich ein display dazugehängt, welches die Temperatur anzeigt,
>> seitdem hängt er sich regelmäßig auf.
>
> Und das Display über lange, ungeschirmte Kabel, die nah am Relais und am
> 230V-Ventilator vorbeiführen, angeschlossen?
>
> Markus schrieb:
>> Bevor ich hier anfange Schaltpläne zu zeichnen und hochzuladen.
>
> Für die erste Beurteilung reicht meist ein Foto des Aufbaus.

Nein, das Kabel zum Temp Sensor ist geschirmt ... das Ungeschirmte was 
zum Relais führt war tatsächlich direkt über das Relais gelegt... hab 
das mal behoben.

von Anja (Gast)


Lesenswert?

Markus schrieb:
> Nein, das Kabel zum Temp Sensor ist geschirmt
hoffentlich ist der Schirm nicht an die GND-Leitung der Schaltung 
angeschlossen sondern korrekt am Metallgehäuse.

Gruß Anja

von Markus (Gast)


Lesenswert?

Das Entfernen der Leitung zum Relais das über dem Relais gelegen ist, 
hat nun geholfen.

Watchdog hat schon seit 12 Stunden nimmer angeschlagen.

von EAF (Gast)


Lesenswert?

Markus schrieb:
> Das Entfernen der Leitung zum Relais das über dem Relais gelegen ist,
> hat nun geholfen.

Der Nachbar hat den "Knack" weiterhin im Radio.

von Markus (Gast)


Lesenswert?

EAF schrieb:
> Markus schrieb:
>> Das Entfernen der Leitung zum Relais das über dem Relais gelegen ist,
>> hat nun geholfen.
>
> Der Nachbar hat den "Knack" weiterhin im Radio.

Rache dafür das ich jeden morgen seinen Wecker klingeln höre? :D

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.