Arduino bleibt stehen, was kann man dann noch an Debug Daten abrufen?

Gast #7219514
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?
Gast #7219728
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.
Moderator (Firma: Titel) Persönliche Seite #7219754
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...
#7219780
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.
Moderator (Firma: Titel) Persönliche Seite #7219906
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.
Moderator (Firma: Titel) Persönliche Seite #7219980
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...
Gast #7220847
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.
#7220988
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.
Gast #7221920
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren