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
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?
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 ;-)
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.
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"
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
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.
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.
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
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.
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..
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...
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.
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.
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