Hallo! Ich verwende eine einfach Elektronik mit einem ATtiny84A in sehr erschütterungsreicher Umgebung. Die Schaltung wird mit einer AA Batterie 1,5V und einem StepUpKonverter auf 5 V versorgt. Die Kontaktverluste zur Batterie (kurze SPannungsunterbrechung durch Erschütterung) werden über einen Elko gepuffert. Der StepUp hat einen Enable-Eingang, der auf High liegen muss. Durch längeren Tastendruck (solange der Taster gedrückt ist wird der µC über den Step-Up versorgt) kann die Elektronik aktiviert werden (µC schaltet Enable-Eingang des StepUp auf High und hält somit die Spannungsversorgung aufrecht). Das ganze läuft so lange, bis die Batterie leer ist, das BrownOut-Flag des µC ist gesetzt für 4,2V. Nun zum Problem: Es kam vor, dass nach einer Erschütterung die Elektronik deaktiviert wurde und sich durch den Tastendruck nicht mehr aktivieren ließ. Entfernt man jedoch die Batterie und setzt sie kurz darauf wieder ein, funktionierts wieder. Woran kann das liegen? Danke, lG
Werz schrieb: > Nun zum Problem: Es kam vor, dass nach einer Erschütterung die > Elektronik deaktiviert wurde und sich durch den Tastendruck nicht mehr > aktivieren ließ. Liefert der Step up dann bei gedrückter Taste trotzdem die 5V? Wenn ja dann beim µC suchen Wenn nein, dann beim Step up oder Taster suchen
Und schon sind viele auf der Suche nach ihren Glaskugeln :-) Im ernst, Schaltplan und evtl. Programmauszug wären hilfreich.
Hi Ooch Mensch, mit nem Schaltplan und Programm kann das ja jeder..... Gruß oldmax
Udo Schmitt schrieb: > Liefert der Step up dann bei gedrückter Taste trotzdem die 5V? > Wenn ja dann beim µC suchen Ja richtig, ein Tastendruck aktiviert den Step Up und liefert am Ausgang 5 V (Versorgung für µC) Hey schrieb: > Im ernst, Schaltplan und evtl. Programmauszug wären hilfreich. Schaltplan und Programmauszug im Anhang! Zur Schaltung: Vbatt ist die 1,5V Batteriespannung, SHDN, das von links unten kommt ist das Tastersignal, d.h. wenn taster gedrückt, dann 1,5V. ADC1 ist für die Messung der Batteriespannung, R6 und R7 sind die Referenz für den ADC RESET, MOSI, MISO uns SCK sind für die Programmierung OUT 1 und 2 sind zwei PWM Ausgänge Danke, lG
Keiner eine Idee, woran das liegen könnte? Das ganbze System ist ja nun so ausgelegt, dass die Elektronik in den inaktiven Zustand geht, wenn die Batterie leer wird, d.h. wenn die Batterie eine Spannung unterschreitet, wird dem µC die Versorgung weggenommen. Sollte in so einem Fall der BrownOut detektor generell aktiviert sein oder nicht?
Wenn es rüttelt schüttelt, ist deine Batterie doch sicher mit Lötfahnen angelötet oder? Der Pufferelko ist sicher schnell leer.
Werz schrieb: > Sollte in so einem Fall der BrownOut detektor generell > aktiviert sein oder nicht? Wenn bei einer Erschütterung die Spannung für kurve Zeit unter 4,2V sinkt, macht dein Controller halt ein Reset. Musst du wissen, ob du das willst. Werz schrieb: > ADC1 ist für die Messung der Batteriespannung Du willst aber nur Messen, ob eine Spannung anliegt oder nicht..? Denn eine Bestimmung der genauen Spannung die anliegt ist mit deiner Hardware in dem Falle nicht möglich. Werz schrieb: > R6 und R7 sind die Referenz für den ADC Wie Präzise sollte die Referenz sein? Falls genaue Messresultate gebraucht werden: So wird das nichts.
Werz schrieb: > Udo Schmitt schrieb: >> Liefert der Step up dann bei gedrückter Taste trotzdem die 5V? >> Wenn ja dann beim µC suchen > > Ja richtig, ein Tastendruck aktiviert den Step Up und liefert am Ausgang > 5 V (Versorgung für µC) Ja und, passiert das auch in deinem Fehlerfall? Messen!!!
Ahha schrieb: > Wenn bei einer Erschütterung die Spannung für kurve Zeit unter 4,2V > sinkt, macht dein Controller halt ein Reset. Musst du wissen, ob du das > willst. Ein Reset ist OK, aber was passiert, wenn ich keinen BrownOut einstelle und die Spannung absinkt? Ahha schrieb: > Wie Präzise sollte die Referenz sein? Falls genaue Messresultate > gebraucht werden: So wird das nichts. Warum, wie würde es denn genauer gehn? Abgesehen davon, das gurndlegende Problem ist ein anderes: Ich muss die Batterie entfernen und wieder reintun, dass das ding wieder geht. Wenn ich die Batterie nicht entferne, reagiert der µC aus irgend einem Grund nicht.
Udo Schmitt schrieb: > Ja und, passiert das auch in deinem Fehlerfall? > Messen!!! Hmm, du hast mir jetzt einen Gedankenanstoß gegeben: Es könnte sein, dass die Batterie durch die Erschütterung nicht nur kurzzeitig Kontakt verliert, sondern auch langfristig irgendwie verrutscht oder so, was man jedoch optisch schwer erkennt. Es kann sein, dass es minimal keinen Kontakt mehr hat (die Batteriehalterung ist selbst entwickelt und nicht gerade die beste). Wenn nun die Batterie neu eingesetzt wird, ist der Kontakt wieder da. Das könnte auch damit zusammenpassen, da es ja nicht immer passiert. Messen kann ich auf die schnelle leider nícht, da ich den Fehler nur beschrieben bekommen habe, das Gerät jedoch derzeit nicht verfügbar habe. Power schrieb: > Wenn es rüttelt schüttelt, ist deine Batterie doch sicher mit Lötfahnen > angelötet oder? Der Pufferelko ist sicher schnell leer. Es ist ein sehr großer Pufferelko, der für die Unterbrechungen sicher reicht. Allerdings natürlich nicht, wenn die Batterie verrutscht und den Kontakt für immer verliert (was wie oben beschrieben sein kann). Nein, die Batterie ist ncihtmit Lötfahnen versehen.
Vermutung: Durch die Erschütterung wird der mechanische Batteriekontakt kurz unterbrochen. Ich kenne Deine Resetbeschaltung nicht, aber möglicherweise wird kein sauberer Reset generiert und der µC ist in einem undefinierten Zustand. Vielleicht kannst Du Deine Init - Routine zyklich aufrufen und schauen wie sich die Schaltung dann verhält.
_??? schrieb: > Durch die Erschütterung wird der mechanische Batteriekontakt kurz > unterbrochen. Ja das ist richtig, aber diese kurze Unterbrechung puffert der Elko (ist ausreiuchend dimensioniert). Auch wenn es nicht so sein sollte, sollte sich die Elektronik danach wieder eingeschalten werden können, das tut sie aber nicht. _??? schrieb: > Ich kenne Deine Resetbeschaltung nicht, aber möglicherweise wird > kein sauberer Reset generiert und der µC ist in einem undefinierten > Zustand. Das klingt sehr interessant. Könntest du darauf bitte näher eingehen? Der RESET-Pin des µC ist nur an die Schnittstelle zum Programmieren rausgeführt, sonst nichts. Man kann das auch so sehen: der Reset Pin des µC geht über die Platine (relativ kurze Leiterbahn) über einen MolexPicoBlade Stecker und darauffolgende Litze (ca 20cm) nach außen. Sonst hängt nichts am Reset. _??? schrieb: > Vielleicht kannst Du Deine Init - Routine zyklich aufrufen und > schauen wie sich die Schaltung dann verhält. Was würde ich daraus dann sehen? Vielen Dank, lG
Werz schrieb: > Sonst hängt nichts am Reset. Ich kenne den ATtiny nicht, aber es würde mich wundern wenn er keine Reset- beschaltung braucht. Schau mal ins Datenblatt. Werz schrieb: > Was würde ich daraus dann sehen? Evtl. das die Schaltung nach der Erschütterung weiter funktioniert, weil der µC wieder initialisiert wird. Aber das ist nur eine Vermutung. Fehlersuchen heisst Experimentieren ;-)
Du solltest den Watchdog aktivieren. Der kann dafür sorgen, dass du aus dem undefinierten Zustand 'rauskommst.
Werz schrieb: > Ahha schrieb: >> Wie Präzise sollte die Referenz sein? Falls genaue Messresultate >> gebraucht werden: So wird das nichts. > > Warum, wie würde es denn genauer gehn? Wie wäre es mit der internen 1,1V Referenz Wenn sich der Kontroller durch den Spannungsausfall undefiniert verhält und du das nicht anders in den Griff bekommst, könnte der Watchdog helfen.
Einhart Pape schrieb: > Du solltest den Watchdog aktivieren. Der kann dafür sorgen, dass du aus > dem undefinierten Zustand 'rauskommst. Danke für den Tipp. Was genau ist denn dieser undefinierte Zustand? Wie kommt der µC in diesen zustand?
1.Klapperatismus am Batterieanschluss ausschließen. Prüfen ob Fehler auch mit externer Batterie auftritt! 2.Manche klapprigen Tasten haben auch ein Eigenleben. 3.Mechanische Resonanzen vermeiden. Schwere Teile brechen mit der Zeit ab! Werz schrieb: > Nun zum Problem: Es kam vor, dass nach einer Erschütterung die > Elektronik deaktiviert wurde und sich durch den Tastendruck nicht mehr > aktivieren ließ. Entfernt man jedoch die Batterie und setzt sie kurz > darauf wieder ein, funktionierts wieder. Woran kann das liegen? Beim Einschalten fängt der Prozessor üblicherweise bei NULL an. Ein Programm fängt dagegen irgendwo an oder macht genau das, was DU programmiert hast :-)
Werz schrieb: >> Wie Präzise sollte die Referenz sein? Falls genaue Messresultate >> gebraucht werden: So wird das nichts. > > Warum, wie würde es denn genauer gehn? Weil du eine Referenz direkt aus VCC herstellst. Die Chance das VCC Stabil ist, ist relativ klein. Wird da irgendwann zwischendurch noch was unterbrochen, dann ist VCC erst recht nichtmehr saube rund wird sich daher nicht für eine saubere Messung eignen. Lösung: - Interne Referenzspannung verwenden - Externen Referenzspannungserzeuger verwenden
oszi40 schrieb: > Ein > Programm fängt dagegen irgendwo an Welches Programm? Was meinst du damit? Bei einem RESET fängt mein Programm doch auch bei NULL an oder?
Werz schrieb: > Einhart Pape schrieb: >> Du solltest den Watchdog aktivieren. Der kann dafür sorgen, dass du aus >> dem undefinierten Zustand 'rauskommst. > > Danke für den Tipp. Was genau ist denn dieser undefinierte Zustand? Wie > kommt der µC in diesen zustand? Wenn irgendein Bit im Programmzähler umkippt, dann führt der Prozessor nicht den nächsten geplanten Befehl aus sondern setzt die Programmausführung irgendwo im Speicher fort.
Ahha schrieb: > Lösung: > - Interne Referenzspannung verwenden > - Externen Referenzspannungserzeuger verwenden Ich dachte immer, dass die interner Referenzspannungen noch ungenauer sind. Aber gut, das sollte jetzt nur die Genauigkeit der Messung beeinflussen. Lieber wäre mir, mein eigentrliches Problem zu lösen... :)
Einhart Pape schrieb: > Wenn irgendein Bit im Programmzähler umkippt, Und wie kann so ein Bit umkippen? Ich weiß, dass dies nach (sehr) langer Zeit passieren kann, aber warum passiert das bei Erschütterungen?
Scope dranklemmen und messen, wo welche Spannungen sich beim Erschüttern verändern. Ein Taster prellt schon beim normalen Betätigen, was glaubst du, was da für ne Party ist, wenn man die Platine irgendwo aufprallen lässt? In Halter gesteckte Batterien können unzuverlässig sein. Nicht umsonst akzeptieren z.B. Modellflugversicherungen solche Konstruktionen nicht in den Fernsteueranlagen, auch wenn in anderen Foren regelmäßig ein Glaubenskrieg darüber ausbricht.
Hi
>aber warum passiert das bei Erschütterungen?
Ist halt ein wackliges Bit.
Aber etwas ernsthaftes: Wie sieht die Startup-Time deiner Fuses aus?
MfG Spess
Werz schrieb: > Einhart Pape schrieb: >> Wenn irgendein Bit im Programmzähler umkippt, > > Und wie kann so ein Bit umkippen? Ich weiß, dass dies nach (sehr) langer > Zeit passieren kann, aber warum passiert das bei Erschütterungen? Bei Erschütterung fällt so ein Bit eine Zelle weiter ;-) - es gibt verschieden Gründe für solch einen Fehler. Erschütterungen gehören aber nicht dazu. Versorgungsspannungsprobleme sind da eher verdächtig.
:
Bearbeitet durch User
M.N. schrieb: > Ein Taster prellt schon beim normalen Betätigen, was glaubst du, was da > für ne Party ist, wenn man die Platine irgendwo aufprallen lässt? Ich kann mir nicht vorstellen, dass der taster im ausgeschalteten zustand (Kontakt weit weg vom Schaltkontakt) prellt, wenn Erschütterungen auftreten. Der prellt doch nur mechanisch nach, wen er eingeschalten wird. Außerdem dürfte das Prellen nichts ausmachen, weil das SHDN-Signal sowiso auf High ist, wenn der µC läuft (und somit den StepUp immer enabled). spess53 schrieb: > Aber etwas ernsthaftes: Wie sieht die Startup-Time deiner Fuses aus? Ich habe da was in Erinnerung. Ich denke, dass ich hier die höchste gewählt habe. Ich verwende den internen 128kHz Oszillator. Was hat es mit dieser StartupTime auf sich bzw. wie soll sie optimal eingestellt werden? hoch/niedrig?? Danke!
Du hast dich bei deinem Boost nicht sehr an das Datenblatt gehalten. Kondensator am Eingang 4,7µ am Ausgang 10µ. Vielleicht habe ich es überlesen, aber was ist im Fehlerfall: Spannung am IN des Boost Spannung am EN des Boost Spannung am Out des Boost Wenn du dann die Taste drückst, die selben Messungen noch mal.
Guck och nur! schrieb im Beitrag #3735005: > die dann aber trotz aller Informationen NICHTS an > Hilfe herausbringen. Vieleicht war dann ein anderer schon schneller. Es hat nicht jeder Zeit (oder Lust) ständig in einen Thread zu schauen. Schon gar nicht wenn dann noch die meisten Infos fehlen.
Hubert G. schrieb: > Vielleicht habe ich es überlesen, aber was ist im Fehlerfall: > Spannung am IN des Boost > Spannung am EN des Boost > Spannung am Out des Boost > > Wenn du dann die Taste drückst, die selben Messungen noch mal. Habe ich doch schon zwei mal gefragt. Die Antwort war: Beitrag "Re: Mikrokontroller Ausfall nach Erschütterung"
Das hab ich überlesen. Aber ohne diese Infos ist es nur ein weiterraten.
Hubert G. schrieb: > Du hast dich bei deinem Boost nicht sehr an das Datenblatt gehalten. > Kondensator am Eingang 4,7µ am Ausgang 10µ. Irgendwo im Datenblatt steht, dass man auch 10µ am Eingang nehmen kann, ich glaub bei der "typischen Anwendungschaltung"... @Spess: Wie ist das mit dieser Startuptime? Wie könnte die mit dem besprochenen Problem zusammenhängen? DANKE!
Werz schrieb: > Irgendwo im Datenblatt steht, dass man auch 10µ am Eingang nehmen kann, > ich glaub bei der "typischen Anwendungschaltung"... Im deiner Schaltung ist aber weder am Eingang noch am Ausgang etwas zu sehen.
Hallo, da du ja Reset auf den programmierstecker geführt hast, würde ich zumindest probehalber dort einen "ordentlichen" Reset anschliessen, z.B. mit einem der vielen Supervisor-ICs von Maxim. Dein Schaltregler schaltet ja auch nicht VCC schnell ein, sondern läuft langsam hoch. Der externe Resetimpuls kann ruhig eine halbe Sekubde oder so lang sein, wichtig ist, dass Reset erst freigegeben wird wenn alles stabil ist. Alles andere ist Murks. Und von wegen Batterie rausmachen: auf einen richtigen Resetimpuls MUSS jeder Prozessor neu starten. Georg
Hallo Georg, danke für die Info; kann das alles einen Zusammenhang mit meinem Problem haben? Ich weiß nicht, woher mein µC einen Resetimpuls bekommen soll im Betrieb. Der Reset wird doch extern nur während dem Programmieren über SPI ausgelöst. In keinem anderen fall wird extern ein Reset ausgelöst, ich sehe hier den Zusammenhang nicht. Gruß
Hi >@Spess: Wie ist das mit dieser Startuptime? Wie könnte die mit dem >besprochenen Problem zusammenhängen? Startuptime ist die Zeit, nachdem der Controller nach einem Reset wirklich los läuft. In deinem Fall die längst mögliche Zeit, also 6 CK/14 CK + 64 ms. MfG Spess
Werz schrieb: > Ein Reset ist OK, aber was passiert, wenn ich keinen BrownOut einstelle > und die Spannung absinkt? Dann kann der µC in unkontrolliertem Zustand z.B. hängen bleiben. Wenn der BR eingestellt ist, Unterspannung erkannt wird, fährt der µC runter.
Hi Spess, danke für die Info, jetzt verstehe ich auch den Zusammenhang: Falls ich die kürzeste eingestellt hatte, kann es dann sein, dass der µC schon loslaufen versucht, und die SPannungsversorgung noch nicht stabil ist? Es könnte durchaus sein, dass dies das Problem ist. Wenn der Elko nicht puffert (und der ist tatsächlich kaputt gegangen, weiß aber noch nicht genau, wann) dann kann eine Kontaktunterbrechung durchaus einige 10 ms, möglicherweise auch 100 ms betragen. Und wenn der µC dann versucht, durch den eingestellten Brown Out einen Reset zu machen, dann fährt er vorher hoch, bevor die Spannungsversorgung OK ist. Hmmm, kann das jemand bestätigen? Warum stellt man dann eigentlich diesen Brown out ein? wenn ich den µC einfach die Versorgungsspannung wegnehme, ohne BrownOut, was passiert dann? Wartet der dann so lange, bis er wieder eine Versorgungsspannung hat? LG
F. Fo schrieb: > Dann kann der µC in unkontrolliertem Zustand z.B. hängen bleiben. > Wenn der BR eingestellt ist, Unterspannung erkannt wird, fährt der µC > runter. OK sorry, zu spät gelesen :) danke für den Tipp!! Also sollte man den Brown Out in meinem Fall aktiviert haben. Aber es gibt 3 verschiedene Level: 4,2; 2,7 und einen noch kleineren (weiß nicht mehr genau welchen). Wenn man hier den niedrigsten wählt, kann es dann auch sein, dass der µC z.B. bei einer Versorgungsspannung die noch ein bisschen drüber liegt und den Brown Out gerade noch nicht auslöst, auch schon hängen bleibt? Ich meine, was ist der Grund, dass der µC hängen bleibt: eine kleine Spannung oder wenn die Spannung auf Null absinkt? LG
Werz schrieb: > Aber es > gibt 3 verschiedene Man kann den µC ja auch mit verschiedenen Spannungen betreiben. So hoch wie möglich und so niedrig wie nötig. Wenn du also eine stabile Spannung hast, sagen wir 5 Volt, dann nimmst du den ersten unterhalb der 5 Volt (also 4,2 Volt, um bei deinem Beispiel zu bleiben). Denn die 4,2 Volt sind doch schon sehr niedrig und da muss schon etwas faul sein. Also bringt sich der µC in einen sicheren Zustand.
Ahhhh, deswegen die verscheidenen Niveaus, wegen den unterschiedlichen, möglichen Versorgungen, klingt logisch! Danke! Vielleicht könnte noch jemand von euch Experten meine vorige Vermutung bestätigen, ob das so möglich ist... :)
Werz schrieb: > Keiner eine Idee, woran das liegen könnte? > Das ganbze System ist ja nun so ausgelegt, dass die Elektronik in den > inaktiven Zustand geht, wenn die Batterie leer wird, d.h. wenn die > Batterie eine Spannung unterschreitet, wird dem µC die Versorgung > weggenommen. Sollte in so einem Fall der BrownOut detektor generell > aktiviert sein oder nicht? Ich kenne die AVRs nicht so, aber so wie ich das Datenblatt verstehe, wird ein Brown-Out-Reset nur ausgelöst, wenn auch BODEN aktiviert ist. Den richtigen BODLEVEL zu setzen (siehe Eröffnungsposting) reicht nicht aus. Also muss BODEN aktiviert sein, wenn du den Reset haben willst. Wenn nicht, hast du ein undefiniertes Verhalten, wenn die Spannung absinkt. Sowas seht üblicherweise auch in Datenblättern, lesen hilft. Den RESET-Pin einfach so, ohne weitere Beschaltung auf den Programmierstecker zu führen geht auch nur, wenn du RSTDISBL aktiviert hast. Dann kannst du alerdings nicht mehr seriell programmieren. Also muss da ein Pull-up hin. Vielleicht postest du mal noch die ganzen Konfigurationsbits. PS: Liest eigentlich irgendwer mal die Einsteiger-Artikel des Forums? -> http://www.mikrocontroller.net/articles/Absolute_Beginner-AVR_Steckbrettprojekte
Michael L. schrieb: > Also muss BODEN aktiviert sein, wenn du den Reset haben willst. Ok, also diese Fuse habe ich auch gesetzt. Michael L. schrieb: > Den RESET-Pin einfach so, ohne weitere Beschaltung auf den > Programmierstecker zu führen geht auch nur, wenn du RSTDISBL aktiviert > hast. Das habe ich nicht aktiviert... Kann das mit dem Problem zusammenhängen? Also soll ich einen Pullup auf RESET legen und den Programmierstecker unterhalb des Pullups anbringen? LG
>wenn du RSTDISBL aktiviert hast. >Das habe ich nicht aktiviert Das lässt du auch besser sein! >Kann das mit dem Problem zusammenhängen? Nein.
holger schrieb: > Das lässt du auch besser sein! Ok, wie jetzt? Aktivieren oder nicht? Wenn ich diese Fuse aktiviere, kann dann überhaupt kein Reset mehr ausgeführt werden?
>Ok, wie jetzt? Aktivieren oder nicht? Wenn ich diese Fuse aktiviere, >kann dann überhaupt kein Reset mehr ausgeführt werden? Nicht aktivieren. Wenn du das tust kommst du per ISP nicht mehr an den Controller ran.
Mike schrieb: > Wo? Im Schaltplan ist keiner zu sehen. Ist richtig, der ist für den Prototyp direkt parallel zur Batterie gelötet und deswegen nicht im Schaltplan... Tut jetzt aber nichts zur Sache... Wenn meine Vermutung vorher wirklich das Problem ist, kann mir dann jemand erklären, warum das Ding wieder läuft, wenn man die Batterie entfernt und wieder reintut und dann mit dem Taster einschaltet?
>Es ist ein sehr großer Pufferelko, der für die Unterbrechungen sicher >reicht. Allerdings natürlich nicht, wenn die Batterie verrutscht und den >Kontakt für immer verliert (was wie oben beschrieben sein kann). Kläre das erstmal. Weitere Anworten sind hier sonst eigentlich zwecklos.
Den BrownOut auf 4,2, die längste Startup-Time und den Watchdog Timer kann ich ja trotzdem sicherheitshalber einstellen. Wenn der Watchdog nicht hilft, kann es eigentlich nur eine fehlende Spannung sein, richtig? Leider ist es im Moment sehr schwer, an ein Gerät mit dem beschriebenen Fehler zu kommen, bitte einfach so hinnehmen. Tut mir leid, dass es dadurch etwas schwieriger ist, weil ich nicht einfach die Spannung usw nachmessen kann... Dauert vermtulich Monate bis ich so ein Ding bekomme, das genau den Fehler hat...
Werz schrieb: > Michael L. schrieb: >> Den RESET-Pin einfach so, ohne weitere Beschaltung auf den >> Programmierstecker zu führen geht auch nur, wenn du RSTDISBL aktiviert >> hast. > > Das habe ich nicht aktiviert... Kann das mit dem Problem zusammenhängen? > Also soll ich einen Pullup auf RESET legen und den Programmierstecker > unterhalb des Pullups anbringen? Lies meine Antwort bitte vollständig: "Dann kannst du alerdings nicht mehr seriell programmieren. Also muss da ein Pull-up hin." Ist doch nicht so schwer!? Und wie schon gesagt, ein Blick ins Datenblatt ...
Werz schrieb: > Ist richtig, der ist für den Prototyp direkt parallel zur Batterie > gelötet und deswegen nicht im Schaltplan... Tut jetzt aber nichts zur > Sache... Wie groß ist denn der Pufferleko? So wie die 10000N wie in Schaltung1.png? Die Zahlenwurst sieht zwar groß aus, aber tatsächlich sind Zehntausend Nanofarad nix, auch wenn es am MCP vielleicht grad richtig ist. Ich würde ja mal noch 100µF vor C4 in Schaltung2.png machen. > Wenn meine Vermutung vorher wirklich das Problem ist, kann mir dann > jemand erklären, warum das Ding wieder läuft, wenn man die Batterie > entfernt und wieder reintut und dann mit dem Taster einschaltet? Och Mönsch Mädel ... nicht immer nur wild rumspekulieren und vermuten. Lies doch mal meine Antworten richtig: "Also muss BODEN aktiviert sein, wenn du den Reset haben willst. Wenn nicht, hast du ein undefiniertes Verhalten, wenn die Spannung absinkt. Sowas seht üblicherweise auch in Datenblättern, lesen hilft." Überlege doch mal was logischerweise passiert, wenn du in der Situation die Batterie abklemmst, und schreib nicht schon vorher die nächste "Und-Warum"-Frage.
Hallo, also meine Theorie ist daß Werz (= Chris?) uns nicht alles verraten hat. Beitrag "Spannungversorgung bei Erschütterung 1,5V" Und der EMP der gleichzeitig durch die starke Beschleunigung des Metallteils entsteht für einen Latchup des Prozessors sorgt. Da dürfte auch kein Watchdog helfen. Gruß Anja
Werz schrieb: > Leider ist es im Moment sehr schwer, an ein Gerät mit dem beschriebenen > Fehler zu kommen, bitte einfach so hinnehmen. Tut mir leid, dass es > dadurch etwas schwieriger ist, weil ich nicht einfach die Spannung usw > nachmessen kann... Dauert vermtulich Monate bis ich so ein Ding bekomme, > das genau den Fehler hat... Werz schrieb: > Ist richtig, der ist für den Prototyp direkt parallel zur Batterie > gelötet und deswegen nicht im Schaltplan... Tut jetzt aber nichts zur > Sache... Ja was denn jetzt? Einmal ist ein Prototyp vorhanden, dann dauert es wieder Monate bis du so ein Gerät hast... Irgendwas ist faul. Kenne mich zwar auch nicht sonedrlich gut mit Atmel aus, aber auf den ersten Blick fehlt in meinen Augen da auch der Pull-Up am Reset. Sofern der wie bei jedem anderen Controller auch low-aktiv ist. Michael L. schrieb: > und schreib nicht schon vorher die nächste > "Und-Warum"-Frage. Generell kommt es mir vor, als würde man hier irgendwie am TO vorbeireden.
Michael L. schrieb: > Wie groß ist denn der Pufferleko? Der Pufferelko hat 10 mF... das reicht für die Überbrückung... Michael L. schrieb: > "Also muss BODEN aktiviert sein, wenn du den Reset haben willst. > Wenn nicht, hast du ein undefiniertes Verhalten, wenn die Spannung > absinkt. Ich hab doch e beschrieben, dass ich den BODEN aktiviert hab. In diesem Fall würde dann bei Entfernen der Batterie ein Reset ausgelöst werden. Aber ich verstehe immer noch nicht, warum der µC dann hängen bleibt, wenn ich die Batterie nicht entferne. Anja schrieb: > Und der EMP der gleichzeitig durch die starke Beschleunigung des > Metallteils entsteht für einen Latchup des Prozessors sorgt. Da dürfte > auch kein Watchdog helfen. Du meinst, dass hier ein elektromagnetischer Impuls entsteht, der den µC stört und er dadurch hängen bleibt? Also wenn die BAtterie entfernt und wieder eingesetzt wird, funktioniert wieder...
oszi40 schrieb: > Beim Einschalten fängt der Prozessor üblicherweise bei NULL an. Ein > Programm fängt dagegen irgendwo an oder macht genau das, was DU > programmiert hast :-) Ja, nach einem Reset müsste doch das Programm wieder ganz oben in der Main anfangen. D.h. wenne s zu einer SPannungsunterbrechung kommt, löst der Brown Out einen Reset aus und das Programm fängt von vorne wieder an. Es bleibt jedoch hängen, warum auch immer...
Georg schrieb: > Und von wegen Batterie rausmachen: auf einen richtigen Resetimpuls MUSS > jeder Prozessor neu starten. Ok, aber was ist, wenn zum Zeitpunkt des Reset die Spannungsversorgung noch nicht da ist? Angenommen, die Spannung wird kurzzeitig (einige 100ms) unterbrochen, der Brown out löst sofort einen Reset aus, die Stabilität der Versorgung dauert jedoch länger als die maximale Startup Time, die ich einstellen kann. Dann will der µC starten, hat aber noch keine Versorgung... Könnte dieses Szenario mein Problem sein? Danke, lG
Michael L. schrieb: >>> Den RESET-Pin einfach so, ohne weitere Beschaltung auf den >>> Programmierstecker zu führen geht auch nur, wenn du RSTDISBL aktiviert >>> hast. OK, wo liegt das Problem, wenn iche s nicht so mache? Ich meine, ich könnte das nun so machen mit einem PullUp, aber welchen Vorteil würde es in meinem Fall bringen?
Nachdem du nicht messen kannst, bleibt dir nur die Möglichkeit alles zu tun um Störungen zu unterdrücken. Dazu gehört: BODEN mit entsprechender Spannung aktivieren Oszillator Startup Time auf Maximum erhöhen An den RESET 10k nach VCC und 100n nach GND Watchdog aktivieren Beim freien Pin PB0 den PullUP aktivieren An den EN des Boost 470k nach GND Dann hättest du mal die erdenklichen Möglichkeiten der Störunterdrückung erfüllt und kannst mal testen wie sich die Schaltung weiter verhält.
Werz schrieb: > Michael L. schrieb: >>>> Den RESET-Pin einfach so, ohne weitere Beschaltung auf den >>>> Programmierstecker zu führen geht auch nur, wenn du RSTDISBL aktiviert >>>> hast. >Ich meine, ich > könnte das nun so machen mit einem PullUp, aber welchen Vorteil würde es > in meinem Fall bringen? Das hat der Michael etwas komisch ausgedrückt, aber ein Pullup gehört in jedem Fall da dran. Lies dir mal die Design Empfehlungen (Appnote weiß ich gerade nicht) durch. Zwischen 4.7-10kOhm sollte der sein. In den meisten Schaltungen siehst du ein 10kOhm. Sonst können ungewollte Resets ausgelöst werden. Lies mal diese Appnote.
Anja schrieb: > also meine Theorie ist daß Werz (= Chris?) uns nicht alles verraten hat. > Beitrag "Spannungversorgung bei Erschütterung 1,5V" erwischt!
Werz schrieb: > Also wenn die BAtterie entfernt und wieder eingesetzt wird, funktioniert > wieder... Ich habe schon "Latchup-Effekte" bei den AVR beobachtet, wenn die Versorgungsspannung sehr langsam angestiegen ist und die Versorgung hochohmig war. Da brach dann beim Starten der Oszillatoren die Versorgung zusammen mit der Folge, dass die RC-Oszillatoren stehen blieben, auch der Watchdog... :-o F. Fo schrieb: > aber ein Pullup gehört in jedem Fall da dran. Steht so zwar in der AVR042 Appnote, effizienter ist aber ein Kondensator mit 33nF gegen GND...
Hubert G. schrieb: > BODEN mit entsprechender Spannung aktivieren > Oszillator Startup Time auf Maximum erhöhen OK > An den RESET 10k nach VCC und 100n nach GND und mit der Reset Leitung kann ich dann noch zum Programmierstecker? Muss ich in deisem Fall nun die RSTDSBL Fuse setzen oder nicht? > Watchdog aktivieren OK > Beim freien Pin PB0 den PullUP aktivieren Das hab ich schon gemacht (ist zur Zeit implementiert, siehe Sourcecode) > An den EN des Boost 470k nach GND Du meinst vermutlich nach VCC? Auf GND ist der deaktiviert... Dank, lG
Werz schrieb: >> An den RESET 10k nach VCC und 100n nach GND > > und mit der Reset Leitung kann ich dann noch zum Programmierstecker? > Muss ich in deisem Fall nun die RSTDSBL Fuse setzen oder nicht? Nein, nicht setzen, sonst kannst du nicht mehr über ISP programmieren. Die Leitung zum Programmierstecker bleibt. Werz schrieb: >> An den EN des Boost 470k nach GND > > Du meinst vermutlich nach VCC? Auf GND ist der deaktiviert... Es ist schon richtig mit GND. Wenn der Kontroller abschaltet oder in Reset ist hast du sonst ein unbestimmtes Potential an EN. Mit der Taste oder vom Kontroller her wird der EN dann auf high gezogen.
Hubert G. schrieb: > Es ist schon richtig mit GND. Wenn der Kontroller abschaltet oder in > Reset ist hast du sonst ein unbestimmtes Potential an EN. Mit der Taste > oder vom Kontroller her wird der EN dann auf high gezogen. Ok, ist verständlich, danke!
Hallo, nach langen Auslesungsversuchen habe ich es nun geschafft, die Fuses nachzusehen (anbei ein Screenshot der gestzeten Fuses)! Wie ihr seht, ist das BODLEVEL auf 4,3V eingestellt, sollte so passen. Aber wie ar das jetz mit BODEN? Ich dachte das ist auch eine Fuse, ist das ein Flag, das ich softwaremäßig setzen muss?? Wenn es das ist, dann habe ich das nicht gemacht... :(( Also ist nach der obingen Diskussion in diesem Fall auch der BrownOutDetector gar nicht aktiviert? Die StartupTime ist auch die längste eingestellt (64ms bei 128kHz). Das Auslesen der Fuses ist im DeubugWireMode gar nicht so einfach, man muss während des Debuggens im Menü "DebugWire disable" auswählen, damit man danach wieder Zugriff auf die Fuses hat...
Lothar Miller schrieb: > Steht so zwar in der AVR042 Appnote, effizienter ist aber ein > Kondensator mit 33nF gegen GND... In der Appnote steht (oder anderswo in einem Atmel Doku), dass ein Kondensator nicht unbedingt nötig ist. Ich dachte mir auch immer es ist besser einen drinnen zu haben, denn wenn man die Erklärungen liest, dann ergibt sich das meines Erachtens von selbst.
Noch eine Zusatzinfo, die ich gerade rausgefunden habe (ich habe noch eine alte Platine gefunden): Ich programmiere über DebugWire, wenn ich den DebugModus starte, muss ich während des Debuggens im menü auswählen "Disable Debug Wire and Close", damit ich auf die Fuses und auf die Divice ID wieder zugreifen kann. Wenn ich das nicht mahce, gibts beim Auslesen der DeviceID einen FEhler und der µC stürzt ab (reagiert nicht mehr auf Tastendruck, die Versorgung ist jedoch OK! Wenn ich dann die Batterie entferne und wieder einsetze, läuft das Ganze wieder, das ist ganz gleich wie bei meinem beschriebenen Problem. Seht ihr da irgendwo einen Zusammenhang?
Hi >Aber wie ar das jetz mit BODEN? Ich dachte das ist auch eine Fuse, ist >das ein Flag, das ich softwaremäßig setzen muss?? Wenn es das ist, dann >habe ich das nicht gemacht... :(( Also ist nach der obingen Diskussion >in diesem Fall auch der BrownOutDetector gar nicht aktiviert? Liest du auch nur mal ansatzweise Datenblätter? Mit BODLEVEL kannst du die einzelnen Pegel umschalten und auch BOD komplett abschalten. MfG Spess
Werz schrieb: > Seht ihr da irgendwo einen Zusammenhang? Ich mache mich jetzt wieder unbeliebt, aber bei mir hat DW auch nie richtig funktioniert. Allerdings mit dem (derer zwei) Dragon. Ich konnte zwar debugen, aber ich konnte den DW nie wieder abschalten, immer nur mit HV. Kann ja sein, dass ich zu doof bin, aber mit zwei Drachen, verschiedenen Rechnern und verschiedenen Versionen vom Studio (6.0-6.2) hatte das Abschalten nie bei mir (!) geklappt. Deshalb kann ich aus meiner (!) Erfahrung sagen, dass man DW nicht zu ernst nehmen sollte.
Fällt sonst bei den Fuses noch was auf, außer dass der Watchdog nicht aktiviert ist? Danke, lG
Wenn du mit DebugWire arbeitest darf kein oder nur ein sehr kleiner Kondensator an RESET sein. Der Kondensator würde die Kommunikation stören. Der PullUp-Widerstand sollte aber schon sein.
Gestern hatte ich mal in diesem Zusammenhang ins Datenblatt geschaut, da gab es wohl eine Besonderheit. Habe ich aber vergessen, weil ich hier selbst (selbstgemachte) Probleme hatte. Musst du mal "Boden" als Suchbegriff im Datenblatt eingeben, irgendwann kommst du an einen Punkt wo eine Fußnote steht.
Hi >Gestern hatte ich mal in diesem Zusammenhang ins Datenblatt geschaut, da >gab es wohl eine Besonderheit. Habe ich aber vergessen, weil ich hier >selbst (selbstgemachte) Probleme hatte. In welchem Datenblatt? Der ATTiny84A hat keine BODEN-Fuse. MfG Spess
Hallo, richtig, ich finde auch nichts, wenn ich "Boden" eingebe...
Sorry, da habe ich wohl das falsche Datenblatt erwischt. Hab es auch gerade gesehen. War gestern alles sehr schwierig und spät. Wollte keine falsche Fährte legen. Ist mir jetzt etwas peinlich.
Foldi schrub: >Ist mir jetzt etwas peinlich. https://www.youtube.com/watch?v=WyasJ0587HU ;-) MfG Paul
Hubert G. schrieb: > Der PullUp-Widerstand sollte aber schon sein. Hier ein Auszug aus dem Datenblatt (Seite 151): When designing a system where debugWIRE will be used, the following must be observed: Pull-Up resistor on the dW/(RESET) line must be in the range of 10k to 20 kΩ. However, the pull-up resistor is optional. • Connecting the RESET pin directly to VCC will not work. • Capacitors inserted on the RESET pin must be disconnected when using debugWire. • All external reset sources must be disconnected. Ich habe eine Schaltung angefügt, wo ich den Pullup reingetan habe (R13). Die Reset Leitung kommt nach wie vor vom Programmierstecker (DebugWire). Ich denke, das war so gemeint? Danke
Werz schrieb: > Ich denke, das war so gemeint? Hast du jetzt ein Problem mit dem Debuggen oder der Funktion? Für mich kommt an jedes Seriengerät der Kondensator dran. Wenn ich so ein Gerät debuggen will, dann ist das eine Ausnahmeerscheinung und ich löte den Kondensator aus... Werz schrieb: > Es kam vor, dass nach einer Erschütterung die Elektronik deaktiviert > wurde und sich durch den Tastendruck nicht mehr aktivieren ließ. Einmal insgesamt oder einmal täglich oder einmal pro Minute? Wie sieht denn der Spannungsverlauf auf der Versorgungsschiene überhaupt aus? Hast du da mal irgendwas gemessen? Oder rätselst du nur herum? Du kannst ja einfach mal Kabel an relevante Stellen anlöten, ein Oszi daran anschließen und dann dein Gerät anständig auf die Tischplatte klopfen. Es ist zudem sonnenklar, dass der Shutdown-Pin des Reglers aus EMV Sicht einfach offen und hochohmig ist. Ein Handy in der Nähe macht mit diesem Pin, was es will. EMV-technisch ist ein Pin mit mehr als 5kOhm Impedanz offen. Ich schalte das Licht an und die Schaltung tut, was ihr gerade gefällt: weiterlaufen oder nicht...
Lothar Miller schrieb: > Wie sieht denn der Spannungsverlauf auf der Versorgungsschiene überhaupt > aus? > Hast du da mal irgendwas gemessen? Oder rätselst du nur herum? Das ganze ist seit stolzen seit stolzen 84 Beiträgen ein einziges Ratespiel. Keine Messungen vorhanden, nur halbvollständige Antworten des TO's und die hälfte der Antworten scheint er gekonnt zu ignorieren. Würde dir nicht zuviele Hoffnungen machen auf irgendwelche Messergebnisse.
Lothar Miller schrieb: > Hast du jetzt ein Problem mit dem Debuggen oder der Funktion? Eigentlich beides, ich denke aber, dass ich es beim PullUp belassen werde. Eigetlich sehe ich hier nicht wirklich einen Zusammenhang des fehleden PullUps zu meinem Problem. Es sei denn, über die Leitung des Programmiersteckers (ca 20cm) wird eine Störung aufgenommen und der reset Pin hat ein undefiniertes Potential. Hmmm, das hat er auch ohne die Leitung, könnte das mein Problem sein? Ich werd das mit dem PullUp auf alle Fälle mal versuchen! Lothar Miller schrieb: > Einmal insgesamt oder einmal täglich oder einmal pro Minute? Genau gesagt war es dreimal in Serie (innerhalb einer Minute), nachdem der Elko kaputt gegangen ist (der Elko ist durch strake erschütterungen gebrochen). Bei Tests vorher, die jedoch schon einige Monate vorher stattfanden, war der Elko OK und es trat kein Problem auf. Vermutlich spielt hier wirklich die fehlende Überbrückung (Spannungsunterbrechung) eine Rolle. Lothar Miller schrieb: > Wie sieht denn der Spannungsverlauf auf der Versorgungsschiene überhaupt > aus? > Hast du da mal irgendwas gemessen? Nein, ich habe leider noch nichts gemessen. Lothar Miller schrieb: > Es ist zudem sonnenklar, dass der Shutdown-Pin des Reglers aus EMV Sicht > einfach offen und hochohmig ist. Ein Handy in der Nähe macht mit diesem > Pin, was es will. OK, meinst du hier auch das Problem, das Hubert oben angesprochen hat? Also 470k von ENABLE des Boost auf GND? Somit hat der Pin immer ien definiertes Potential? Es könnte natürlich auch sein, dass dadurch die Versorgung gestört wird... Bitte kurz auf dieses Problem antworten :) Danke!!
Werz schrieb: > Genau gesagt war es dreimal in Serie (innerhalb einer Minute), nachdem > der Elko kaputt gegangen ist (der Elko ist durch strake erschütterungen > gebrochen). Bei Tests vorher, die jedoch schon einige Monate vorher > stattfanden, war der Elko OK und es trat kein Problem auf. Und diese Information behält er 86 Beiträge lang für sich..
Ahha schrieb: > Und diese Information behält er 86 Beiträge lang für sich.. Jau! Das ist der Hammer.
Es tut mir leid, das habe ich soeben erst erfahren. Aber das deutet darauf hin, dass es mit der Spannungsversorgung zu tun hat... @Lothar: bitte um kurzes Feedback, ob ich das mit dem 470kOhm Widerstand am Enable Pin des Boost richtig interpretiert habe... DANKE!
Werz schrieb: > Vermutlich > spielt hier wirklich die fehlende Überbrückung (Spannungsunterbrechung) > eine Rolle. Das traurige daran ist, es macht den anschein als wäre er Überrascht darüber...
HI >Aber das deutet darauf hin, dass es mit der Spannungsversorgung zu tun >hat... Das wussten hier alle nach deinem Eröffnungspost. MfG Spess
Ahha schrieb: > Das traurige daran ist, es macht den anschein als wäre er Überrascht > darüber... Der BOD ist aktiviert, wo liegt das Problem? Wenn du gescheider bist dann schlage mir eine Lösung vor / einen möglichern Grund vor, der mit der fehlenden Spannungsüberbrückung zu tun hat! Wenn der BOD aktiviert ist, kann der µC doch nicht in einen undefinierten zsuatdn gehen!?
Werz schrieb: > Es tut mir leid, das habe ich soeben erst erfahren. Was/Wie um alles in der Welt entwickelt ihr bitte? Arbeitet ihr Quer durch Deutschland und kommuniziert mit Briefen? Wenn das ganze was werden soll Besorg dir die Leiterplatte (Angeblich hast du ja nun eine?) und dann probier aus. Basteln, Messen, was weiss ich. Nur durch Forenbeiträge wird aus einem Mikrocontroller auch kein fertiges Produkt.
Werz schrieb: > @Lothar: bitte um kurzes Feedback, ob ich das mit dem 470kOhm Widerstand > am Enable Pin des Boost richtig interpretiert habe... Nein. Meine aussage war: alles über 5kOhm ist zu hochohmig. Der uC-Ausgang gehört so direkt wie möglich an den Enable-Eingang. Dazwischen dürfen max. 5kOhm sein. Dann haben beide den selben Pegel, auch wenn mal eine Störung einkoppelt. BTW: warum heißt dein Enable-Signal eigentlich invertiert Shutdown? Was ist, wenn Enable=1 ist? Ist dann auch Shutdown=1? Und was bedeutet es, wenn Shutdown=1 ist? Ist der Regler dann enabled oder im Shutdown? Du siehst: selber Name für invertierte Funktion...
Lothar Miller schrieb: > Der uC-Ausgang gehört so direkt wie möglich an den Enable-Eingang. > Dazwischen dürfen max. 5kOhm sein. Dann haben beide den selben Pegel, > auch wenn mal eine Störung einkoppelt. Der von mit angesprochene Widerstand soll ja nicht zwischen µC und EN kommen sondern von EN nach GND, also als PullDown. Mit den 470k habe ich möglicherweise etwas zu hoch gegriffen, 47k sind vielleicht realistischer. Die angesprochenen 5k halte ich für etwas zu klein und nur in einem sehr extremen Umfeld vertretbar. Der zusätzliche Strom durch den PullDown ist dann schon mit zu bedenken.
Lothar Miller schrieb: > Der uC-Ausgang gehört so direkt wie möglich an den Enable-Eingang. > Dazwischen dürfen max. 5kOhm sein. Dann haben beide den selben Pegel, > auch wenn mal eine Störung einkoppelt. Das bedeutet, du meinst hier den Widerstand R9 von Schaltung2.png? Der ist zur Zeit 100k, den soll ich auf maximal 5k setzen? Lothar Miller schrieb: > warum heißt dein Enable-Signal eigentlich invertiert Shutdown? Was ist, > wenn Enable=1 ist? dann ist der Regler aktiv und regelt... Wenn enable = 0 ist dann ist der Regler inaktiv. Lothar Miller schrieb: > Und was bedeutet es, wenn > Shutdown=1 ist? Ist der Regler dann enabled oder im Shutdown? Du siehst: > selber Name für invertierte Funktion... OK, du meinst, dass die Namenswahl meines SHDN Signales schlecht ist...S Stimmt, eigentlich sollte das Signal EN heißen! :) Hubert G. schrieb: > Der von mit angesprochene Widerstand soll ja nicht zwischen µC und EN > kommen sondern von EN nach GND, also als PullDown. Mit den 470k habe ich > möglicherweise etwas zu hoch gegriffen, 47k sind vielleicht > realistischer. Die angesprochenen 5k halte ich für etwas zu klein und > nur in einem sehr extremen Umfeld vertretbar. Der zusätzliche Strom > durch den PullDown ist dann schon mit zu bedenken. Hubert, kann ich den PullDOwn weglassen, wenn ich den µC Ausgang PA3 direkt in der Initialisierung auf LOW setze? Dann wird der ENABLE auch gleich beim Starten auf LOW gezogen?
Jetzt habe ich das Problem erkannt das Lothar meinte. Es wäre besser wenn du alles auf ein Schaltbild zeichnest und auch die Taste dazu. Dann fällt auch die irreführende Beizeichnung SHDN weg. Ebenso ist dann die Problematik von Tastenspannung und µC-Pin Spannung sofort klar ersichtlich. R9 ist zu groß. Was machst du eigentlich mit PA2, hab in deinem Programmschnippsel nichts dazu gefunden. Werz schrieb: > Hubert, kann ich den PullDOwn weglassen, wenn ich den µC Ausgang PA3 > direkt in der Initialisierung auf LOW setze? Dann wird der ENABLE auch > gleich beim Starten auf LOW gezogen? Nein, sollst du nicht. Wenn im µC z.B. BOD anspricht und der Ausgang damit hochohmig wird, ist das Potential an EN wieder undefiniert und du weisst nicht was der Boost dann macht.
Hallo! Hubert G. schrieb: > Was machst du eigentlich mit PA2, hab in deinem Programmschnippsel > nichts dazu gefunden. das ist ein analogeingang: ich erkenne damit, ob der Taster gedrückt ist (ob eine Spannung von ca 1,5V anliegt). Hubert G. schrieb: > R9 ist zu groß. OK, dann mach ich R9 zu 5kOhm und mach zusätzlich einen PullDown von 47k zischen EN und GND.... ich denke, so waren eure beiden Ideen gemeint? LG
Hab heute noch was gelesen: Kann es sein, dass bei einem BrownOut Reset nicht das selbe passiert wie bei einem Power On Reset? Dass bei einem Brown Out Reset zwar das Programm von vorne beginnt, aber die Hardware-Register (wie bei einem PowerOnReset) nicht auf die Default-Werte zurückgesetzt werden? Hat jemand Erfahrungen damit?
Hi >Kann es sein, dass bei einem BrownOut Reset nicht das selbe passiert wie >bei einem Power On Reset? Dass bei einem Brown Out Reset zwar das >Programm von vorne beginnt, aber die Hardware-Register (wie bei einem >PowerOnReset) nicht auf die Default-Werte zurückgesetzt werden? Nein. Ein Brownout-Reset erzeugt den gleichen internen Reset wie ein Impuls am RESET-Pin. >Hat jemand Erfahrungen damit? Lesen reicht. Datenblatt S.39/40. MfG Spess
>Ja was denn jetzt? Einmal ist ein Prototyp vorhanden, dann dauert es >wieder Monate bis du so ein Gerät hast... Irgendwas ist faul. Ja, oberfaul. >Generell kommt es mir vor, als würde man hier irgendwie am TO >vorbeireden. Das kann man wohl sagen. >Kann es sein, dass bei einem BrownOut Reset nicht das selbe passiert wie >bei einem Power On Reset? Dass bei einem Brown Out Reset zwar das >Programm von vorne beginnt, aber die Hardware-Register (wie bei einem >PowerOnReset) nicht auf die Default-Werte zurückgesetzt werden? Das ist ein kompletter Reset. So, jetzt mal Butter bei die Fische: Provoziere so einen Absturz und miss an deinem Spannungwandler ob da noch was rauskommt. Wenn der AVR keine Spannung mehr hat kann er auch nicht mehr arbeiten. Es ist komplett überflüssig hier weiter zu diskutieren bevor du das nicht gemacht hast. Alle hühnern hier auf dem AVR rum, dabei weiss überhaupt niemand ob der im Fehlerfall noch ausreichend Spannung zum arbeiten hat.
Werz schrieb: >> Was machst du eigentlich mit PA2, hab in deinem Programmschnippsel >> nichts dazu gefunden. > > das ist ein analogeingang: ich erkenne damit, ob der Taster gedrückt ist > (ob eine Spannung von ca 1,5V anliegt). Hm, naja, man kann es auch übertreiben. Wenn die 1,5V anliegen und der Booster arbeitet nicht, dann arbeitet auch der µC nicht und dann kann er auch nichts messen.
Hubert G. schrieb: > Hm, naja, man kann es auch übertreiben. > Wenn die 1,5V anliegen und der Booster arbeitet nicht, dann arbeitet > auch der µC nicht und dann kann er auch nichts messen. Mit dem Taster wird aber auch im Betrieb einiges eingestellt, d.h. ich muss erkennen wenn der Taster gedrückt wird... es ist ein sehr kleines Programm und der Analogwert wird zyklisch abgefragt...
F. Fo schrieb: > Sorry, da habe ich wohl das falsche Datenblatt erwischt. Hab es auch > gerade gesehen. > War gestern alles sehr schwierig und spät. Wollte keine falsche Fährte > legen. > Ist mir jetzt etwas peinlich. Die falsche Fährte hab ich wohl schon gelegt. Ich hatte noch das Datasheet vom Mega8 offen, und versehentlich dort nachgesehen. Mit den Tinys mache ich eigentlich nichts, so war mir auch nicht bekannt, dass die Fuses für Brownout dort anders funktionieren. - Ja, es war spät, auch bei mir.
Michael L. schrieb: > Mit den > Tinys mache ich eigentlich nichts, so war mir auch nicht bekannt, dass > die Fuses für Brownout dort anders funktionieren. Die sind teilweise sehr unterschiedlich. Beim Tiny10 ist der INT0 genauso wie beim ATmega 328 und beim Tiny13 dann wieder ganz anders. Beim Tiny10 kannst du den Interrupt INT0 auf nem Arduino testen und dann den Code so für den Tiny10 verwenden.
:
Bearbeitet durch User
spess53 schrieb: > Nein. Ein Brownout-Reset erzeugt den gleichen internen Reset wie ein > Impuls am RESET-Pin. Das habe ich gelesen. Die Frage ist, ob dadurch auch alle Register auf die Defaultwerte zurückgesetzt werden, wie es bei einem PoweronReset ist. Das Programm fängt zwar wieder von vorne an, aber ich bin mir nich sicher, ob die Register zurückgesetzt werden bei den 3 anderen Resets (extern, Brownout, Watchdog)...
Hubert G. schrieb: > Werz schrieb: >> Hubert, kann ich den PullDOwn weglassen, wenn ich den µC Ausgang PA3 >> direkt in der Initialisierung auf LOW setze? Dann wird der ENABLE auch >> gleich beim Starten auf LOW gezogen? > > Nein, sollst du nicht. Wenn im µC z.B. BOD anspricht und der Ausgang > damit hochohmig wird, ist das Potential an EN wieder undefiniert und du > weisst nicht was der Boost dann macht. Aber in diesem Fall ist es eigentlich e egal was er macht. Wenn der BrownOut einmal ausgelöst hat, muss der taster sowiso neu betätigt werden... wie kommst du denn eigetnlich auf 47k? es würden dann im Betrieb zusätzlich 100µA auf der Sekundärseite fließen... Werz schrieb: > OK, dann mach ich R9 zu 5kOhm Wieviel Strom wird dann im Betrieb in den Enable des Boost fließen? Ist das immer ein hochohmiger Eingang oder wird in diesem Fall der Strom nur durch die 5V ausgangsspannung des µC und den Widerstandswert 5k bestimmt?
Hallo, ich hab nun die Schaltung entsprechend geändert, siehe ANhang: R-C- Glied mit 10k und 10n an den RESET (Programmierung über Debug Wire funktioniert noch) R9 auf 5k geändert Die Funktion ist OK Was ich allerdings auch versucht habe: 47k vom EN des Boost auf Masse, in diesem Fall wird ein Tastendruck nicht mehr erkannt; ich werden diesen Widerstand weglassen...
Werz schrieb: > Was ich allerdings auch versucht habe: 47k vom EN des Boost auf Masse, > in diesem Fall wird ein Tastendruck nicht mehr erkannt; ich werden > diesen Widerstand weglassen... Da ist gar nirgends eine Taste... Oder andersrum: wie ist die Taste angeschlossen? Wie kommst du da auf einen definierten Pegel?
Ups, die vorige Reset-Beschaltung ist natürlich falsch, im Anhang die korrigierte Version mit dem PullUp. @Lothar: das Tastersignal ist, wenn du "Schaltung1" ganz oben anschaust, das SHDN Signal, das von links unten kommt; hier wird einfach die BAtteriepsannung von 1,5V auf EN geschalten. wenn der Taster dann lange genug (2s) gehalten wird, setzt der µC den Ausgang PA3 auf High und es erfolgt eine Selbsterhaltung.
Werz schrieb: > hier wird ... geschalten Bei dir lass ich das gerade nochmal durchgehen, so weit südlich vom Bodensee... ;-) > wenn der Taster dann lange genug (2s) gehalten wird, setzt der µC > den Ausgang PA3 auf High und es erfolgt eine Selbsterhaltung. Du hast also eigentlich keinen richtig definierten Low-Pegel, wenn der Taster nicht gedrückt und der uC abgeschaltet ist.
:
Bearbeitet durch Moderator
Lothar Miller schrieb: > Bei dir lass ich das gerade nochmal durchgehen, so weit südlich vom > Bodensee... ;-) Wie kommst du auf den Bodensee? :) Lothar Miller schrieb: > Du hast also eigentlich keinen richtig definierten Low-Pegel, wenn der > Taster nicht gedrückt und der uC abgeschaltet ist. Ja das stimmt...
Werz schrieb: > spess53 schrieb: >> Nein. Ein Brownout-Reset erzeugt den gleichen internen Reset wie ein >> Impuls am RESET-Pin. > > Das habe ich gelesen. Die Frage ist, ob dadurch auch alle Register auf > die Defaultwerte zurückgesetzt werden, wie es bei einem PoweronReset > ist. Das Programm fängt zwar wieder von vorne an, aber ich bin mir nich > sicher, ob die Register zurückgesetzt werden bei den 3 anderen Resets > (extern, Brownout, Watchdog)... Normalerweise sollte sich der Tiny bei den verschiendenen Resets in gewissem Rahmen unterschiedlich verhalten. So kenne ich das zumindest von anderen µC, habe aber grad keine konkrete Aufstellung im Datenblatt gefunden, welche Register bei welchem Reset zurückgesetzt werden, nur verschiedene Andeutungen. Die I/O-Register werden bei jedem Reset mit initialisiert. Richtig ist auch, dass das Programm bei jedem Reset immer an Adresse 0 (Reset Vector) beginnt. Und du kannst nach dem Start feststellen (MCUSR), welcher Reset ausgelöst wurde, und den gegebenen Möglichkeiten entsprechend reagieren.
Hallo Michael, danke für die Antwort! Nachdem ich ein recht kleines Programm habe, werde ich einfach am Beginne der Initialisierung (siehe Code am Anfang) alle Register, die ich irgendwo im Programm verwende, auf die defaultwerte setzen. Ich denke, dass ich damit auf der sicheren Seite bin, was sagt ihr dazu? Lg
Hi >Normalerweise sollte sich der Tiny bei den verschiendenen Resets in >gewissem Rahmen unterschiedlich verhalten. Warum? Bis auf eine Ausnahme gibt es für jedes IO-Register ein Initial-Value auf das das Register bei einem Reset gesetzt wird. Die Ausnahme ist das von dir erwähnte MCUC-Register. Das wird entsprechend der Reset-Source gesetzt. >Nachdem ich ein recht kleines Programm habe, werde ich einfach am >Beginne der Initialisierung (siehe Code am Anfang) alle Register, die >ich irgendwo im Programm verwende, auf die defaultwerte setzen. Ich >denke, dass ich damit auf der sicheren Seite bin, was sagt ihr dazu? Die Default-Werte werden automatisch gesetzt. Setzen musst du nur Werte die nicht default sind. Wie wäre es endlich mal mit dem vollständigen Programm (nicht als Screenshoot sondern als Dateianhang) und etwas mehr als die zwei Schaltplanfragmente? MfG Spess
spess53 schrieb: > Bis auf eine Ausnahme gibt es für jedes IO-Register ein > Initial-Value auf das das Register bei einem Reset gesetzt wird Gehören hier auch alle Hardwareregister dazu, z.B. vom ADC, Timer usw?? Heißt das, es werden ALLE Register des µC, mit Ausnahme von MCUC, bei JEDEM Reset auf die default werte zurückgesetzt? spess53 schrieb: > Die Default-Werte werden automatisch gesetzt. Setzen musst du nur Werte > die nicht default sind Die setzte ich ja sowiso in meiner initialisierung, d.h. hier bräuchte ich keine zusätzlichen Maßnahmen. Ich dachte nur, dass bestimmte Hardwareregister (die ich in der init nicht setze, weil ich davon ausgehe, dass sie default sind, die aber während des Programms verändert werden) nicht bei einem Reset rückgesetzt werden und somit nach der initialisierung nicht mit default werten versehen sind. LG
Hi >Gehören hier auch alle Hardwareregister dazu, z.B. vom ADC, Timer usw?? Was meinst du denn von welchen Registern ich rede? >Heißt das, es werden ALLE Register des µC, mit Ausnahme von MCUC, bei >JEDEM Reset auf die default werte zurückgesetzt? Nicht zurück gesetzt wird der RAM. Dazu kommen einige Bits, die von den Fuses abhängen und auf den dort eingestellten Wert setzen (CKPR/WD-Register). Undefiniert sind EEARL/H und ein paar Bits in EECR. Aber das dürfte alles uninteressant für dich sein. MfG Spess
Werz schrieb: > Wie kommst du auf den Bodensee? :) Dort fängt für mich das Land an, wo man irgendwas "ausgeschalten" haben darf. Wobei speziell du es natürlich noch weit hin hast bis zum Bodensee... Und wie komme ich auf dieses Land? Ganz einfach: Autor: Lothar Miller (lkmiller) (Moderator) ;-)
Lothar Miller schrieb: > Werz schrieb: >> Wie kommst du auf den Bodensee? :) > Dort fängt für mich das Land an, wo man irgendwas "ausgeschalten" haben > darf. Wobei speziell du es natürlich noch weit hin hast bis zum > Bodensee... > > Und wie komme ich auf dieses Land? Ganz einfach: > Autor: Lothar Miller (lkmiller) (Moderator) ;-) Naja, wohl eher östlich vom Bodensee ;) Und warum man in diesem Land was "ausgeschalten" haben darf :) keine Ahnung, verstehe den Zusammenhang nicht :)
Hallo! Schon etwas länger ehr, aber ich habe nun durch Messungen was rausgefunden: Manchmal wenn ein BrownOutReset ausgelöst wird bleibt der µC hängen! er wird nicht richtig resetet, weil die Spannungsversorgung nach einem Brown Out noch da ist! (der µC hält seine Versorgung über einen Ausgangspin selbst aufrecht (siehe vorige Kommentare/Schaltungen). D.h. es wird kein richtiger Reset ausgelöst, sonst müsste die Spannungsversorgubng weg sein. Der µC ist aber noch versorgt, reagiert aber nicht mehr?! Wenn ich die Versorgung dann wegnehme und dadurch einen PowerOnReset mache, funktionierts wieder! lG
Hmm, noch etwas: Der Step Up hat eine Mindestspannung, die er auf die 5V "transformieren" kann, liegt irgendwo bei 0,7V... Wenn ich mich in der Nähe dieses Grenzwertes befinde und den Taster drücke, passiert es manchmal, dass DER STEPUP in einen undefinierten Zustand geht! D.h. die Ganze Schaltung (der StepUp) saugt Strom, aber am Ausgang des Step Up liegen nur ca 600mV anstatt der 5V. Das könnte die Lösung sein, es liegt also vermutlich nicht am µC. Durch weitere Tastendrücke reagiert gar nichts mehr, auch die Stromaufnahme bleibt gleich. Erst wenn ich die Versorgungsspannung wieder minimal hochdrehe (Netzteil), sodass ich über diese Grenze komme, springt der STrom wie3der auf (annähernd) Null zurück, wie es auch im ausgeschalteten zustand der Schaltung sein solllte. Dann funktioniert der Taster zum Einschalten auch wieder. Es liegt also vermutlich tatsächlich am Step Up, der anscheinend irgendetwas tut, wenn er nicht die minimale Spannung am Eingang bgekommt! Kann sich das jemand erklären? Der verwendete StepUp (siehe Schaltung am Anfang) ist dieser hier: http://ww1.microchip.com/downloads/en/DeviceDoc/22234B.pdf 1640B lG
Hallo, ich hab jetzt das Ganze Datenblatt des StepUp durchforstet, leider finde ich jedoch keinen Hinweis auf den beschriebenen Fehler. Wenn die Batteriespannung (die in diesem Fall mit einem Netzteil hergestellt wird) genau an der Grenze der Minimalen Eingangsspannung des Step-Up (bei ca 0,7V) liegt, das Gerät ausgeschalten ist und ich versiuche, es mit dieserr Spannung einzuschalten (die Spannung von 0,7V wird in diesem Fall also an den Eingang und an den Enable Pin gelegt), kommt es manchmal vor, das der StepUp "hängen bleibt". Die Schaltung zieht Strom, also ob sie aktiviert wäre (ca 20mA), am Ausgang des Step Up liegen jedoch nur ca 600mV. Erst wenn ich die Spannung wieder hochdrehe, z.B. auf 0,9V, kommt der StepUp aus diesem Zustand wieder raus. Vielleicht liegt es aber auch einfach daran, dass die Spannung schon unter dem Grenzwert liegt und der StepUp dadurch einfach nicht mehr hochkommt... Hat jemand Erfahrung damit bzw. kann mir einen Hinweis diesbezüglich geben? Danke, lG
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.