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 :)
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...
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
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
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.
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?
Hallo Bernhard, der Reset Pin hat 'nur' einen 10k gegen VCC und einen 100nF Kerko gegen GND. Zuwenig ?
>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 ?
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
>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 ;)
> 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.
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 :)))
>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
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 ? :))
"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.
>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.
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.
Kann es sein sein, dass der mega8 mit >=8MHz läuft und die CKOPT Fuse nicht gesetzt ist ? Das liefert ähnliche Ergebnissse.
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 ?
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...
Was passiert eigendlich, wenn man CKOPT immer setzt, egal wie hoch (niedrig) die Frequenz ist? :) Gruß, Techniker
Das mache ich immer, dann schwingt der Oszillator mit voller Amplitude, also sicherer. Dafür braucht der AVR wenige mA mehr.
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 ;)
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
@Peter: Antistatik100 ist geruchsfrei und greift Oberflächen nicht an: http://www.crcind.com/csp/web/ProdDisp.csp?lng=4&country=GE&product=ANTISTATIK%20100&brand=KOC Gruss Jadeclaw.
>@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
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 :)))
>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?
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 !
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.
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 ;)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.