mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Reproduzierbarer Reset


Autor: Peter Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo miteinander,

ich habe da ein kleines Problem, wo ich nicht mehr weiter weiß. Die
Suche hier gestaltet sich auch etwas schwierig, da es sich um statische
Aufladung bei Teppichen handelt und da kommt halt nur 'unter den
Teppich kehren' oder 'auf dem Teppich bleiben' :)

Ich habe also eine Schaltung mit einem Atmega8, beschaltet wie es sich
so gehört mit genügend 100nf Kondensatoren-> also zwischen VCC/GND,
10k/100nf am Reset, das ganze versorgt mit einem 7805er und den
üblichen 100nf und einem 100µF. Achja, ein Programmieradapter ist auch
noch auf der Platine (und der stört mich eigentlich auch mit seinen
'freien' 6 Pins, wovon ja einer der Reset ist). Versorgt wird das
ganze mit einem Notebooknetzteil, habe allerdings auch schon
verschiedene ausprobiert, deswegen schließe ich die Dinger jetzt mal
aus.

Folgendes passiert immer (Tatort Büro - daheim mit Buchenparkett kein
Problem): sobald man die Schaltung anschließt, funktioniert alles
tadellos, Programm läuft wunderbar. Irgendwann steht man halt mal auf
und holt sich den Kaffee am Morgen. Sobald man sich von seinem Stuhl
erhebt, macht das Teil auf einmal einen Reset.

Dazu muß gesagt sein, das Netzteil liegt am Boden, die Schaltung ist
auf einer Plexiglasplatte in einem Kunststoffgehäuse montiert und steht
auf dem Schreibtisch (passiert aber auch, wenn es auf einem
Rollcontainer steht). Das einzige was am Boden liegt, ist halt die
Steckdosenleiste mit dem daran angeschlossenen Netzteil.

Somit bekommt die Schaltung also (meiner Meinung nach) nur Kontakt zur
Außenwelt über das Kabel des Netzteils.

Gibt es eine gute Idee, womit man diese 'Spikes' irgendwie vom
Prozessor fernhalten könnte ? Mir fällt da nur noch eine Spule oder
Kondensator noch ein, aber bei 20V / 2A wüßte ich nicht, wie ich da
vorgehen sollte.

Merci schon mal :)

Autor: tubbu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der reset muss nicht unbedingt über den resetpin ausgelöst werden.

mein beispiel-szenario: (keine ahung, ob das bei dir so sein kann,
kenne ja deine schaltung nicht)

externer interrupt ist eingeschaltet und der interrupt pin nicht
beschaltet. Wenn der entsprechende pin als Eingang geschaltet ist wird
bei einem spannungstoß ein Interrupt aufgerufen, den du aber im Code
überhaupt nicht vorgesehen hast. Dadurch kommt es zu einem Reset.

Ob das jetzt zutrifft, weiß ich nicht, aber ein solches oder ähnliches
Problem könnte eben auch der Grund sein...

Autor: Peter Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Tipp, werde ich mir mal für später merken. Leider sind bei
meinem Atmega8 Int0 und Int1 beschaltet und werden auch ausgewertet. Ok,
Int0 nur solange eine DCF77 Zeit empfangen werden soll. Wenn
erfolgreich, wird Int0 wieder deaktiviert im Programm, aber
unbeschaltet sind beide nicht.

Gruss, Peter

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

ich kenn das Problem ;)

Bei mir in der Wohnung sorgte der Einschalt- / Ausschalt- Impuls meines
Kühlschrankes für einen regelmäßigen Absturz meiner
µC-Kühlschrank-Regelung.

Die gesamte µC Platine bestückte ich mit den verschiednartigsten
Kapazitäten, half aber nicht :(

Die Komplettabsturze waren nicht so schlimm, der µC startete wieder und
das Programm wurde vernünftig abgearbeitet.

Aber es kam auch vor, dass der µC durch diese Störimpulse in einen
undefinierten Zustand gebracht wurde
(Eingänge mutierten plötzlich zu Ausgängen).

Abhilfe:

Ein Blechgehäuse, wenn das nicht mehr möglich ist, das Plastegehäuse
von innen mit Leiterplattenmaterial "tapezieren" und dieses auf GND
legen.

Bernhard

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achte auch auf unbeschaltete Pins, entweder auf Ausgang schalten oder
PullUp / PullDown-Widerstände.

Eine stromkompensierte Drossel in die Versorgungsleitung legen.
Auf kurze Leiterbahnen und Leitungen achten.

R am Reset verkleinern auf 1k.

Suche im Forum nach EMV.

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Natürlich kann auch durch Deine Software das REGISTER MCUCSR

(Resetgrund) ausgelesen und ausgewertet werden,

aber erfahrungsgemäß sind es bei solchen Problemen meistens interne

und nicht nachvollziehbare Resets die Ursache.

Ich hoffe, Dein Reset-Pin wurde mit einem kleinen Elko (10 µF)
beschaltet?

Autor: Peter Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Bernhard,

der Reset Pin hat 'nur' einen 10k gegen VCC und einen 100nF Kerko
gegen GND. Zuwenig ?

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>der Reset Pin hat 'nur' einen 10k gegen VCC und einen 100nF Kerko
>gegen GND. Zuwenig ?

erstmal besser als garnichts, den C kannste ja mal vergrößern, wird
aber sicherlich nichts bringen ?

Autor: Peter Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke übrigens auch an die anderen mit den Tipps :) Ich werde zuerst
jetzt mal die unbenutzen Pins als Ausgänge deklarieren.

Was mir beim Atmega8 jetzt allerdings auffiel: Der PC6, also der Reset
Pin, wird der Ausgang oder Eingang im DDRx Register eingestellt.
Momentan steht er auf 1, also als Ausgang.

Merci, Peter

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Was mir beim Atmega8 jetzt allerdings auffiel: Der PC6, also der >Reset
Pin, wird der Ausgang oder Eingang im DDRx Register
> eingestellt. Momentan steht er auf 1, also als Ausgang.

lass ihn so, ist ok.

PS:
Bei den Fuse-Bits kannst Du Dir den RESET-PIN deaktivieren und den
eigentlichen PC6-Pin aktivieren. Aber vorsicht, der µC lässt sich dann
nicht mehr programmieren ;)

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Gibt es eine gute Idee, womit man diese 'Spikes' irgendwie vom
> Prozessor fernhalten könnte ? Mir fällt da nur noch eine Spule
> oder Kondensator noch ein, aber bei 20V / 2A wüßte ich nicht, wie
> ich da vorgehen sollte.

Dein Prozessor braucht 20V/2A? :)

> Was mir beim Atmega8 jetzt allerdings auffiel: Der PC6, also der
> Reset Pin, wird der Ausgang oder Eingang im DDRx Register
> eingestellt. Momentan steht er auf 1, also als Ausgang.

Das ist egal. Solange er per Fuse als Reset-Pin konfiguriert ist, ist
die normale Portfunktion inaktiv.

Autor: Peter Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

also Reset Pin muß Reset bleiben ;) Leider habe ich keinen
HV-Programmer.
@Rolf: nö, der Proz braucht keine 20V/2A, aber die Schaltung
'drumherum' :)

Da dumme ist, daß ich das Gehäuse auch nicht mit Platinenmaterial
abschotten kann, da sich im inneren der Conrad DCF-Empfänger befindet
und der dann höchstwahrscheinlich gar nix mehr empfängt.

Aber ich werde jetzt noch heute abend mal den 10k am Reset-Pin gegen
was einen 4,7k auswechseln. Im Datenblatt vom Atmega8 mußte ich ja auch
schmunzeln, als ich gesehen habe, das im inneren ein Spike-Filter drin
sein soll - funktioniert wohl nicht so toll :)))

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>daß ich das Gehäuse auch nicht mit Platinenmaterial abschotten kann,

vielleicht aber die Unterseite/Oberseite des µC, bewirkt manchmal schon
Wunder ;)

Vermutlich gelangt der Störimpuls direkt in den Chip des µC und bringt
dort alles durcheinander

Autor: Peter Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Bernhard,

vermute ich auch, daß der dort direkt reinkommt, allein schon wegen dem
Programmieradapter auf der Platine. Das Teil ist nämlich unterhalb des
Prozessors angebracht, also am unteren Rand da wo Pin 14/15 sind (DIP
Ausführung). Somit wirkt wahrscheinlich die Leitung bis Pin1 auch schön
als 'Antenne'.
Habe auch gerade noch ein paar App-Notes von Atmel gelesen und einen
Verweis darauf, daß man im jeweiligen Datenblatt nachsehen soll, wie
groß der Pull-Up Widerstand am Reset sein soll. Beim Atmega8 steht drin
MIN 30k MAX 80k. Meinen die 30k wirklich ernst ? Wieso sagt man dann
immer, 10k ist ok, manchmal sogar vielleicht kleiner. Kann man also dem
Datenblatt nicht so vertrauen, oder ? :))

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"wie groß der Pull-Up Widerstand am Reset sein soll. Beim Atmega8 steht
drin MIN 30k MAX 80k."

Das ist der Wert des internen Pullup-Widerstands.

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Beim Atmega8 steht drin MIN 30k MAX 80k.
>Meinen die 30k wirklich ernst ?

kommt auf den Programmieradaper drauf an,
ich nutze meistens 470 Ohm .... 1,2 K.

Wird ér zu niederohmig, dann kann der Programmieradapter den µC nicht
mehr in den Reset-Zustand versetzen.

Autor: Jadeclaw Dinosaur (jadeclaw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, warum nicht das Problem an der Quelle anpacken?
Z.B. Sessel und Teppich mit Antistatikspray behandeln.
Rat aus der Lötanleitung des Sinclair ZX81: "" Gehen Sie barfuß ""

Gruss
Jadeclaw.

PS: Ich habe keine derartigen Probleme, lediglich der Kühlschrank
resettet das Teil, wenn der ISP-Adapter dran ist. 10kOhm & 100nF lösten
auch dieses Problem. Kühlschrank ist 31 Jahre alt.

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann es sein sein, dass der mega8 mit >=8MHz läuft und die CKOPT Fuse
nicht gesetzt ist ? Das liefert ähnliche Ergebnissse.

Autor: Peter Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Benedikt,

ja, ist so, der Mega8 läuft mit 16Mhz und CKOPT ist in Ponyprog nicht
angekreuzt, somit auch nicht programmiert (Bit = 1).

Gibts da einen Zusammenhang mit dem Reset, daß sozusagen der Takt nicht
sauber ist bzw. 'in a very noice environment' betrieben wird ?

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, jede noch so kleine Störung bringt das Programm zum Absturz, wenn
CKOPT nicht gesetzt ist, und der Takt hoch ist.

Ich würde sogar eine Wette darauf abschließen, dass die Schaltung
problemlos läuft, wenn du CKOPT setzt...

Autor: Der Techniker (_techniker_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was passiert eigendlich, wenn man CKOPT immer setzt, egal wie hoch
(niedrig) die Frequenz ist? :)

Gruß,
Techniker

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mache ich immer, dann schwingt der Oszillator mit voller Amplitude,
also sicherer.
Dafür braucht der AVR wenige mA mehr.

Autor: Peter Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf die paar mA kommts hier nicht an :)

@Jadeclaw: wenn ich dürfte, würde ich gerne den Teppich im Büro mit
Spray behandeln, denke nur das es a)meinem Kollegen stinkt und b)
unsere Facilitymanagement was dagegen hat

Ich jetzt mal CKOPT gesetzt, mal sehen was das Teil jetzt im Büro
macht, ist jetzt direkt ein 'Nachteil' daheim mit dem schönen
Buchenparkett, nix zum reproduzieren, außer ich nehm ein Wollpulli und
einen Kunststoffstab und fahr einmal genüßlich übers Gehäuse ;)

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter, hallo Benedikt,

>Ja, jede noch so kleine Störung bringt das Programm zum Absturz, wenn
>CKOPT nicht gesetzt ist, und der Takt hoch ist.

Das ist eine sehr gute Idee!!

Peter, teste es mal, sollte dieser einfache Trick wirkungsvoll sein,
dann hat uns Benedikt jetzt schon ein schönes Ostern beschert ;)

Bernhard

Autor: Jadeclaw Dinosaur (jadeclaw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter: Antistatik100 ist geruchsfrei und greift Oberflächen nicht an:
http://www.crcind.com/csp/web/ProdDisp.csp?lng=4&c...

Gruss
Jadeclaw.

Autor: Ssss Ssssss (sssssss)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>@Peter: Antistatik100 ist geruchsfrei und greift Oberflächen nicht an:
Stimmt nicht ganz, Tafellack greift es an (gibt dunkle Flecken die
nicht wieder weggehen)

Bye, Simon

Autor: Peter Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

also der Tipp von Benedikt scheint es wohl (bis jetzt) gewesen zu
sein.

Ich rutsche schon den ganzen vormittag hier auf meinem Stuhl rum, stehe
auf, höre es sogar knistern, aber das Teil läuft stabil. Kein Absturz
oder Reset mehr.

Ich habe auch absichtlich nur diese eine Änderung bis jetzt gemacht,
also CKOPT Fuse gesetzt, nicht zu viel auf einmal ändern mit Leitungen,
kleinerem Widerstand am Reset, 'Clamp-Diode' einbauen usw.

Vielen herzlichen Dank auf jeden Fall :)))

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>also der Tipp von Benedikt scheint es wohl (bis jetzt) gewesen zu
>sein.

...und wenn Du "CKOPT" wider umprogrammierst, ist dann das alte
Fehlerbild wieder da?

Autor: Peter Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, selbes Fehlerbild wieder. Es hängt zumindest bei meiner Schaltung
mit dem CKOPT zusammen. Ich muß kleinlaut zugestehen, es ist auf
Lochraster aufgebaut schäm

Aber auf den Takt wäre ich gekommen :)

Danke Benedikt !

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist an Lochraster schlimm ? Ich habe schon einige Digitalschaltungen
mit über 50MHz auf Lochraster aufgebaut...

Wenn man einmal auf die CKOPT Fuse reingefallen ist, und mehrere Tage
den Fehler in der Software gesucht hat, vergisst man die CKOPT Fuse nie
mehr zu setzen.

Die Fehler sind echt merkwürdig, manchmal treten sie an den
verrücktesten Stellen auf: z.B. bestimmten Bitmuster bei den zu
verarbeitenden Daten oder ähnlichem. Da würde echt niemand auf die
CKOPT Fuse kommen.

Autor: Peter Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eben, ich wär auch nicht drauf gekommen. Das Teil hat die merkwürdigsten
Sachen gemacht (Propeller-Uhr Basisstation). Mal gabs nen Reset, mal hat
sich der Motor ein- oder ausgeschaltet, mal hat das Teil weder auf die
Fernbedienung noch die Taster reagiert (lief aber munter vor sich hin,
aber tot).

Das sucht man sich wirklich einen Wolf in der Software bis man auf das
kommt.

Ich sag nur deswegen Lochraster*schäm*, weil halt einige
Kupferlackdrahtverbedingungen drauf sind, die auch nicht gerade kurz
verlaufen. Deswegen dachte ich mir erst, die Dinger wirken halt wie
gute Antennen für diese ganzen 'Hochspannungsentladungen' von dem
Teppichboden. Noch dazu hat das Teil nicht mal Kontakt zum Boden, alles
auf Plexiglas aufgebaut, die einzige Verbindung ist nur über das
Notebook-Netzteil.

Auf jeden Fall merke ich es mir ;)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.