PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Uc resettet sich selbst ? HÄÄ??



Philipp83
13.09.2006, 16:27
Hallo,

ich habe ein etwas komplexeres Programm geschrieben welches auch gut funktioniert.
Allerdings resettet es sich nach immer unterschiedlichen durchläufen selbst.
Es sieht so aus als ob der Uc kurz aus und wieder an geht. ?Hä?
Wie kann so etwas sein, hat schonmal jemand so ein Problem gehabt?

tobimc
13.09.2006, 16:37
HI

Welchen µC benutzt du?

Hast du einen Pullup auf RESET?

Und: Vergrössere mal den Stack und die Framesize.

VLG Tobi

scales
13.09.2006, 17:10
Wie kann so etwas sein, hat schonmal jemand so ein Problem gehabt?

ich hab das gleiche Problem bei einem 8051er, allerdings nur sobald ich einen Motor einschalte
ich hab überall nach dem Problem gesucht, alle möglichen Teile ausgetauscht,
aber ich weis immernoch nicht wo der Fehler ist

zum Glück funktionierts beim fahren auf dem Boden fast ohne Aussetzer,
sobald man ihn aber bei eingeschaltetem Motor hochebt quitiert der controller innerhalb von ein paar Sekunden den Dienst

Vitis
13.09.2006, 17:19
Na dann entstör mal Deine Versorgungsspannung von dem Teil.

Masseschleifen raus,
Masseflächen auf dem PCB,
Stützkondensatoren,
Freilaufdioden,
Funkenlöschkreis etc.
Ach so, mitunter übersteht der µC einen Spannungseinbruch
ohne Programmabbruch, indem man den "Brown Out" dekativiert oder auf
niedrigeres Level setzt. Überspannung mag er indess überhauptnicht.

scales
13.09.2006, 17:32
was heist "Masseflächen auf dem PCB"?
und was sind Masseschleifen und wie macht man die raus?

(ich hab nach beidem gesucht aber bei Masseschleifen kommt nur was über ton,
und zu dem ersten kommt nichts was damit zu tun hat)

Freilaufdioden und Stützkondensatoren hab ich,
und nen funkenlöschkreis braucht man soweit ich weis nur bei Triacs
(ich benutz Transistoren für den Motor)

Vitis
13.09.2006, 17:49
Also, Masseflächen bedeutet, das man auf seiner Platine die ungenutzten
Flächen nicht wegätzt, sondern stehen lässt und mit GND verbindet, also ne Massefläche. PCB ist Deine Platine.

Eine Masseschleife ist, wenn man nicht Seine Bauteile von einem Punkt aus
sternförmig mit GND anfährt, sondern eben ringförmig von Pin zu Pin und dann am Besten noch den Ring schließt, indem man eine Verbindung zum Anschluss zurückführt oder dergleichen, das gibt nämlich ne prima Antenne ab für Störimpulse. Also GND immer sternförmig.

Ich vermute Dein Motor hat Bürsten und funkt wie ein Wilder, diesen also entsören, das meine ich mit funken löschen. Nadelimpulse geben super Störungen ab.

scales
13.09.2006, 17:56
ich benutz Lochraster, muss ich dann was anderes als Massefläche nehmen, oder ist das nicht so wichtig?
der Motor sollte ausreichend entstört sein, an dem waren schon von anfang an die drei nötigen Kondensatoren dran (ist ein RC-Car Motor)

aber Masseschleife könnte gut sein, sogar ziemlich gut,
ich hab mehrere "Sammelstellen" für GND gemacht damit ich nicht so viele lange Kabel brauch, das änder ich mal...

Vitis
13.09.2006, 21:02
ach so, auch ne Fehlerquelle kann sein, wenn der Pullup am Reset bei Atmels nicht dran ist ... beim 8051 bin ich da zwar nicht firm, aber kannst ja mal nachkucken.
Mit den Massen ist das so ne Sache, ich hatte mal in der Lehre ne Schaltung, die wegen sowas einfach angeschwungen ist, ich bin fast wahnsinnig geworden beim Suchen, vor allem deshalb, weil beim Messen jedesmal der Fehler weg war, bis ich dann rausgefunden hab, das eben die kleine Last duch die Prüfspitze eben die entsprechende Dämpfung brachte. Hab dann Abschirmungen eingebaut was nur geht, dann lief die Sache tadellos.
Wenn Deine Kabel lang sind währ das ggf auch ne Fehlerquelle bei zu kleinem Querschnitt. versuch da mal für die Saftversorgung stärkere Leitungen einzuziehen. Vorallem die Zuleitungen von Bat zu Motorregler zu Motor.

Philipp83
13.09.2006, 21:21
Habe Entstörkondensatoren auf der Primär und Sekundärseite des Lm7805.
Auch betreibe ich keinen Motor, sondern nur ein Lcd und einen Schaltkontakt.
Wenn keine Impulse kommen, resettet er sich komischerweise auch nicht.
Pullup am Resetpin ist ebenfalls dran
wenn ich im Betrieb mit dem Finger über die Schaltung gehe, passiert auch nix. Erst bei irgend einem schaltkontakt.
Auch bringt ein 30x30 Kühlkörper als Massefläche so wie eine Schutzdiode nix.

Auch wenn ich den Uc über einen Akku betreibe resetter er sich nach willkürlicher Zeit.

bin etwas verzweifelt :-(


Stack und die framesize???
von der framesize habe ich noch nie gehört :-)

ldi r16, LOW(RAMEND)
out SPL, r16
ldi r16, HIGH(RAMEND)
out SPH, r16

mehr mache ich mit dem stack nicht

scales
13.09.2006, 22:33
Mit den Massen ist das so ne Sache, ich hatte mal in der Lehre ne Schaltung, die wegen sowas einfach angeschwungen ist, ich bin fast wahnsinnig geworden beim Suchen, vor allem deshalb, weil beim Messen jedesmal der Fehler weg war, bis ich dann rausgefunden hab, das eben die kleine Last duch die Prüfspitze eben die entsprechende Dämpfung brachte. Hab dann Abschirmungen eingebaut was nur geht, dann lief die Sache tadellos.

was könnt ich denn als Massefläche nehmen?
der ganze Untersatz ist leider aus Plastik

Vitis
13.09.2006, 22:43
ein Blech z.B. , aber ich glaub nicht, das in Deinem Fall das soviel bringt.

Ach so, du hast nen 7805 als Regler davor? Der bringt nur 1,5A soweit ich weiß, aber bestimmt nicht viel mehr ... das könnte auch n Flaschenhals sein.

Philipp83
13.09.2006, 22:58
ja, aber da ich nur einen atmega16 + Lcd betreibe, sollte das reichen.

Philipp83
14.09.2006, 14:51
kann durch einen defekt am uC solch ein Fehler entstehen?

tobimc
15.09.2006, 07:48
Hi.

Was ist das für ein "Schaltkontakt"?
Ein Relais?
Oder ein Taster?

Schaut mal, ob eure Versorgungsspannung einbricht....

VLG Tobi

chr-mt
15.09.2006, 09:00
Hi,
läuft in deinem Programm vielleicht irgendeine Zählvariable hoch, die nicht zurückgesetzt (oder begrenzt) wird ?

Das kann auch einen Reset auslösen.

Gruß
Christopher

tobimc
15.09.2006, 09:08
Hi

Oder zu viele Unterfunktionen mit zu großen Übergabevariablen aufgerufen...

VLG Tobi

PICture
16.09.2006, 13:27
Hallo!

Ist der watchdog vielleicht aktiv ? :)

MfG

Philipp83
21.09.2006, 09:25
Ja, ich lasse ein paar register hoch und auch überlaufen.
Aber nach dem Überlauf fängt er doch von allein wieder bei 0 an.
Da er sich nach völlig unterschiedlichen durchläufen resettet, kann das doch nicht der fehler sein oder??


unterfunktionen?
Ich habe ein laaaanges Programm, indem ich mit rcall hin und her springe.
oder ist mit unterfunktionen etwas anderes gemeint?

watchdog?
welche bedingungen kann er überwachen?

shaun
21.09.2006, 11:14
rcall ist ja auch ok, solange sichergestellt ist, dass irgendwo auch ein return folgt. Wenn Du aus einer Subroutine per jump in eine Andere oder ins Hauptprogramm oder zurückspringst und dann wieder ein call kommt, läuft der Stack über, darauf wollte tobimc bestimmt hinaus. Aber wie ich das so lese brauche ich Dir das nicht zu sagen, das dürftest Du selbst wissen.

Philipp83
21.09.2006, 12:03
Das ist ein guter Gedanke, aber da es ja einige durchläufe funktioniert, sollte der fehler doch eigentlich woanders liegen oder nicht?