Go Down

Topic: Wie bringt man einen Uno dazu stehen zu bleiben? (Read 1 time) previous topic - next topic

MiReu

Hallo Leute,

folgendes Problem ist aufgetreten.

Auf dem original Uno R3 läuft meine DCF77 Uhr (Sketch im Anhang, zu groß um ihn hier einbinden zu können).

Naja, also gestern lief er dann nicht mehr  :o  um 21:27 und ca. 30 Sek. stand die Uhr still.

Leider habe ich den Uno mit einem externen Netzteil (12V/1,5A) betrieben, Spannung war stabil und vorhanden. Ein Anschluss an den PC war nicht möglich und hätte mir persönlich auch nichts genutzt. Nachdem ich den 12V Stecker gezogen und wieder eingesteckt hatte lief alles wieder als sei nichts gewesen.

Einen millis Überlauf kann ich mir, mit meinem geringen Wissen (hab was von 45 Tagen gelesen) nicht vorstellen, so lange läuft der Sketch noch nicht.

Vielleicht kann von euch mal einer drüber schauen und mir auf die Sprünge helfen. Zum Betrieb wird kein OLED Display benötigt, man kann auch die Serielle-Ausgabe einschalten.


Vielen Dank für eure Beachtung :)

Gruß

MiReu
Wer nix macht, macht nix falsch, lernt aber auch nix.

SkobyMobil

Hallo,
schöner Sketch, das kann alles Mögliche sein.

Du könntest Fehler abfangen und dokumentieren...
Einfach auf SD ein Protokoll mitschreiben.
Gruß und Spaß
Andreas
die zweite Maus bekommt den Speck...

MiReu

Hallo Andreas,

Danke für das Lob  :-\

Wenn du mit SD die Speicherkarte meinst, habe dafür noch kein Board :(
Solltest du etwas anderes meinen, dann sitze ich gerade auf dem Schlauch bzw. mir fällt nicht ein was du meinen könntest.

Ah! Serielle Diagnose vielleicht?

Also die sekündliche Ausgabe rausschmeißen und nur minütlich und im Fehlerfall anzeigen. Dann die Ausgabe durchsehen, in der Hoffnung das dann was sinnvolles angezeigt wird. Sinnvoll im Sinne von Fehlerbeseitigung.

Mache mich sofort ans Werk.

Danke einstweilen.

Gruß

MiReu
Wer nix macht, macht nix falsch, lernt aber auch nix.

HotSystems

Auch I2C macht gern mal Probleme.
Sind PullUp-Widerstände verbaut ?
Wie ist die RTC verbunden ?
Auf dem Steckbrett oder gelötet ?
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

SkobyMobil

Hallo,
static uint16_t hiMillis,loMillis;

long timeDiff=millis()-lastChangeTime;

loMillis+= timeDiff;

das ist richtiger Wertebereich?

Für mich sieht das aus wie uint16_t + long

die uint16_t geht bis 65,535 - und long bis 2147483647

nur mal so.
Gruß und Spaß
Andreas


die zweite Maus bekommt den Speck...

SkobyMobil

Hallo,
am Anfang einer Funktion z.B. A1
am Ende einer Funktion z.B. E1

A1 gleich 1. Funktion im Sketch

So nummerierst Du die durch und gibst seriell immer nur println "A1"

im FehlerFall steht dann an letzter Stelle:

A44

Dann weißt Du das er in die 44. Funktion gesprungen ist, diese aber nicht verlassen hat.
Da würde sonst ja E44 stehen.

So in der Art, was weiß ich.
Gruß und Spaß
Andreas
die zweite Maus bekommt den Speck...

MiReu

@HotSystems
Ja, I²C R's sind vorhanden.

Was meinst du mit wie die RTC verbunden ist? Diese "hängt" auch am I²C und steckt im Steckbrett.

Noch ist alles auf dem Steckbrett, auf dem Schreibtisch. Erst wenn ich sicher bin das alles Fehlerfrei läuft kommt das ganze ins Auto.



@SkobyMobil
Darauf kann ich dir leider keine Antwort geben Andreas. Dies stammt aus dem Teil von jurs. Davon verstehe ich noch nicht viel (deshalb auch noch keine deutschen Kommentare).
Aber, ich danke dir für den Gedankenanstoß und werde versuchen das ganze zu verstehen um es dann ggf. anzupassen.
Wer nix macht, macht nix falsch, lernt aber auch nix.

HotSystems

Was meinst du mit wie die RTC verbunden ist? Diese "hängt" auch am I²C und steckt im Steckbrett.

Noch ist alles auf dem Steckbrett, auf dem Schreibtisch. Erst wenn ich sicher bin das alles Fehlerfrei läuft kommt das ganze ins Auto.
Diese Steckbretter können Probleme machen.
Kontrolliere mal die "Steckverbindungen" zum I2C.

Wenn der I2C im Betrieb kurzzeitig unterbrochen wird, hängt das System und du weist nicht warum.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

MiReu

Hallo,
am Anfang einer Funktion z.B. A1
am Ende einer Funktion z.B. E1
Ah, sehr clever. Auf solch eine Idee kommt man wohl erst wenn man schon länger am Thema ist. Wäre mir so schnell nicht eingefallen.
Wer nix macht, macht nix falsch, lernt aber auch nix.

SkobyMobil

#9
Aug 02, 2017, 05:26 pm Last Edit: Aug 02, 2017, 05:30 pm by SkobyMobil
Hallo,
glaube nur nicht, das ich Deinen Sketch verstehe. Mir ist das- nur aufgefallen.
Gruß und Spaß
Andreas
P.S. mache Dir von dem Sketch eine Kopie. Eine zum Fehler aufdecken- im Original änders Du dann.
Dann brauchst Du das FehlerGekritzel nicht wieder raussuchen.
die zweite Maus bekommt den Speck...

MiReu

Diese Steckbretter können Probleme machen.
Kontrolliere mal die "Steckverbindungen" zum I2C.

Wenn der I2C im Betrieb kurzzeitig unterbrochen wird, hängt das System und du weist nicht warum.

Danke, wusste ich auch noch nicht. Dann werde ich mal eine Lötversion aufbauen.


Da ich jetzt zur Arbeit muss, werden heute vermutlich keine Antworten mehr von mir kommen. Dies hat nichts mit Desinteresse zu tun, ich melde mich wieder - ganz sicher!

Bis hier schon mal DANKE.

Schönen Abend noch

Gruß

MiReu
Wer nix macht, macht nix falsch, lernt aber auch nix.

HotSystems

Danke, wusste ich auch noch nicht. Dann werde ich mal eine Lötversion aufbauen.

Da ich jetzt zur Arbeit muss, werden heute vermutlich keine Antworten mehr von mir kommen. Dies hat nichts mit Desinteresse zu tun, ich melde mich wieder - ganz sicher!

Bis hier schon mal DANKE.

Schönen Abend noch

Gruß

MiReu
Ok, gutes Gelingen.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

HajoPiltz

Schön, mal eine DCF77 Implementierung ohne Interrupt zu sehen. Vielleicht bediene ich mich mal an Deinem Code für mein Projekt, das fast 300 W2812b LEDs ansteuert was nur bei deaktivierten Interrup-Handlern möglich ist...

MiReu

Hallo,
static uint16_t hiMillis,loMillis;

long timeDiff=millis()-lastChangeTime;

loMillis+= timeDiff;

das ist richtiger Wertebereich?

Für mich sieht das aus wie uint16_t + long

die uint16_t geht bis 65,535 - und long bis 2147483647

nur mal so.
Gruß und Spaß
Andreas
So, ich habe mich mal in dem Bereich umgesehen. Auch wenn ich mich wiederhole, ich bin Anfänger, von daher könnte das nachfolgende auch falsch interpretiert sein!

Also ein Überlauf dürfte eigentlich nicht geschehen, die Variablen werden ein paar Zeilen weiter unten auf Null gestellt.

Da ich zu der Zeit, als der Arduino stoppte, bei der Arbeit war, habe ich mit meiner Frau gesprochen. Es besteht die Möglichkeit das sie an die Strippen gekommen ist und somit, dank billigem Steckbrett :( ein Verbindungsproblem an den I²C Adern vorlag - Danke HotSystems für den Hinweis.


@HajoPiltz
Mach nur, ich hatte dir ja schon eine frühere Version in deinem Thread hochgeladen.

Zu den Versionen welche einen Interrupt nutzen. Habe ich mir natürlich auch angesehen, aber - zum Einen habe ich nicht verstanden warum man sich einen der zwei Eingänge (auf den Uno und ähnliche bezogen) belegen soll, wenn es auch anders geht. Zum Anderen waren mir die Programme auch viel zu aufgeblasen und unverständlich. Diese Lib's sind vielleicht dann sinnvoll wenn man keine RTC nutzt und auf das DCF Signal angewiesen ist. Meine RTC synchronisiert sich wenn ein gültiges Datentelegramm vorliegt. Um die Uhrzeit anzuzeigen wird kein DCF Signal benötigt, anders wäre dies bei einer Uhr fürs Auto auch gar nicht machbar. Ich weiß, es gibt GPS, da habe ich aber keinen Empfänger hier rumliegen.

So, wenn keinem, bei Aktuellem Informations- und Wissensstand, mehr was einfällt, dann lassen wir das Thema ruhen. Ich werde den Aufbau jetzt an einem geschützten Platz ein paar Tage laufen lassen und melde mich dann wieder, wenn es noch jemanden interessiert.

Schönen Tag euch :)

Gruß

MiReu
Wer nix macht, macht nix falsch, lernt aber auch nix.

HotSystems

Es ist sicher für alle die sich am Thread beteiligt haben, interessant.
Und ja, diese Steckbretter können schon heftig nerven.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Go Up