Mikrokontroller Ausfall nach Erschütterung

Gast #3734448
Lesenswert?

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
Gast #3734607
Lesenswert?

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
Angehängte Dateien:
Gast #3734783
Lesenswert?

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?
Gast #3734822
Lesenswert?

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.
Gast #3734839
Lesenswert?

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.
Gast #3734853
Lesenswert?

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.
Gast #3734860
Lesenswert?

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.
Gast #3734879
Lesenswert?

_??? 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
Gast #3734888
Lesenswert?

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 ;-)
#3734897
Lesenswert?

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.
Gast #3734900
Lesenswert?

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 :-)
Gast #3734903
Lesenswert?

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
#3734909
Lesenswert?

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.
Gast #3734910
Lesenswert?

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... :)
Gast #3734917
Lesenswert?

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.
#3734922
Lesenswert?

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.
Gast #3734953
Lesenswert?

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!
#3735046
Lesenswert?

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.
#3735053
Lesenswert?

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.
Gast #3735114
Lesenswert?

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!
Gast #3735142
Lesenswert?

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
Gast #3735180
Lesenswert?

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ß
Gast #3735237
Lesenswert?

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
Gast #3735266
Lesenswert?

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
Gast #3735273
Lesenswert?

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
#3735294
Lesenswert?

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.
Gast #3735295
Lesenswert?

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... :)
#3735326
Lesenswert?

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
Gast #3735338
Lesenswert?

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
Gast #3735354
Lesenswert?

>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.
Gast #3735364
Lesenswert?

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?
Gast #3735375
Lesenswert?

>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.
Gast #3735395
Lesenswert?

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...
#3735552
Lesenswert?

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 ...
#3735564
Lesenswert?

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.
#3735683
Lesenswert?

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.
Gast #3735736
Lesenswert?

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...
Gast #3735770
Lesenswert?

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...
Gast #3735787
Lesenswert?

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
Gast #3735801
Lesenswert?

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?
#3735865
Lesenswert?

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.
#3735870
Lesenswert?

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.
Moderator (Firma: Titel) Persönliche Seite #3735913
Lesenswert?

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...
Gast #3735917
Lesenswert?

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
#3735952
Lesenswert?

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.
Gast #3736005
Lesenswert?

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...
Angehängte Dateien:
#3736021
Lesenswert?

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.
Gast #3736025
Lesenswert?

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?
Gast #3736037
Lesenswert?

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
#3736042
Lesenswert?

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.
#3736186
Lesenswert?

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.
Gast #3736197
Lesenswert?

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
Gast #3736259
Lesenswert?

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
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #3736309
Lesenswert?

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...
#3736322
Lesenswert?

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.
Gast #3736332
Lesenswert?

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!!
Gast #3736337
Lesenswert?

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..
Gast #3736365
Lesenswert?

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!
Gast #3736372
Lesenswert?

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!?
#3736374
Lesenswert?

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.
Moderator (Firma: Titel) Persönliche Seite #3736461
Lesenswert?

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...
#3736651
Lesenswert?

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.
Gast #3736687
Lesenswert?

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?
#3736723
Lesenswert?

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.
Gast #3736943
Lesenswert?

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
Gast #3736961
Lesenswert?

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?
Gast #3737016
Lesenswert?

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
Gast #3737020
Lesenswert?

>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.
#3737053
Lesenswert?

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.
Gast #3737064
Lesenswert?

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...
#3737265
Lesenswert?

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.
#3737281
Lesenswert?

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.
Gast #3737385
Lesenswert?

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)...
Gast #3737436
Lesenswert?

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?
Gast #3737514
Lesenswert?

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...
Angehängte Dateien:
Gast #3737616
Lesenswert?

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.
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #3737790
Lesenswert?

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.
#3738287
Lesenswert?

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.
Gast #3738495
Lesenswert?

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
Gast #3738553
Lesenswert?

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
Gast #3739150
Lesenswert?

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
Gast #3739277
Lesenswert?

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
Gast #3739391
Lesenswert?

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 :)
Gast #3770259
Lesenswert?

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
Gast #3770342
Lesenswert?

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
Gast #3772278
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren