Hallo Zusammen, ich habe einen ATtiny44A programmiert der nach einer Senderoutine in den Sleep-Modus versetzt wird und nur sporadisch aufwacht um eine Überwachung durchzuführen. Was mich überrascht, der ATtiny44A scheint aus dem Sleep-Modus trotz eines Batteriewechsels nicht aufzuwachen, d.h. die Startroutine wird nicht durchlaufen sie wird erst nach dem Drücken des Reset-Tasters ausgeführt. Ich habe auch die Anschlußpins der Platine (natürlich ohne Batterien) kurzgeschlossen um die Kondensatoren zu entladen, auch die BOD-Fuse eingeschalten, nichts half. Es ist nervig nach jedem Batteriewechsel die Reset-Taste zu betätigen weil diese im Gerät verbaut ist und ohne aufschrauben nicht zugänglich ist. Davon abgesehen würde es mich interessieren was die Ursache sein kann daß selbst die fehlende Spannung keinen Neustart auslöst. Aufgeweckt wird der ATtiny44A durch einen Watchdog-Interrupt der alle 8 Sekunden stattfindet. Der Programmcode mit Kommentare: --> hier wird die Startroutine durchgeführt Set Wdtcsr.wdp3 ' ** Watchdog Timeout einstellen: alle 8 Sek Set Wdtcsr.wdp0 Set Wdtcsr.wdie ' ** Watchdog-Timer einschalten Set Wdtcsr.wde ' ** Watchdog einschalten ' ** abschalten nicht benötigter Peripherie Set PRR.PRTIM1 ' ** Timer 1 Set PRR.PRTIM0 ' ** Timer 0 Set PRR.PRUSI ' ** USI Set PRR.PRADC ' ** AD-Wandler Enable Interrupts Do --> hier wird überwacht ' ** Power-Down Modus aktivieren Set Mcucr.sm1 Set Mcucr.se $asm sleep $end asm Loop Danke und Grüße Markus
Im Sleep braucht der so wenig Strom, daß schon kleine Kapazitäten ausreichen, um ein paar Sekunden Batteriewechsel zu überbrücken. Du sagst, Du schliesst die Batterieanschlüsse kurz. Hast Du zwischen Batterie und VCC eine Diode, z.B. als Verpolungsschutz? Schliesse mal die VCC direkt am Controller kurz. Gruß, Stefan
Ich habe keine Diode vorgeschalten, der Kurzschluß geht direkt zu den Controlleranschlüßen. Die Reset-Schaltung ist nur ein 22K Ohm Widerstand gegen Vcc. Also kein C zwischen Reset und Gnd, in einem anderen Forumsbeitrag wurde dies bei den heutigen Mikros als überflüssig dargestellt. Wäre vielleicht ein Versuch wert, so in der Größe von etwa 100nF.
Es sind in der Schaltung nur drei Kondensatoren mit jeweils 100nF verbaut. Zwischen Vcc und Gnd des ATtiny44A und bei dem Funkmodul das zwei Vcc-Anschlüße hat. Jeweils ganz nah an den Bauteilen.
Besteht die ganze Schaltung nur aus dem Tiny und dem Funkmodul? Oder sind Pins des Tinys irgendwo noch angeschlossen? Ich frage deshalb, weil sich bei nicht vorhandener Vcc der Tiny durchaus auch über die Schutzdioden der IO-Pins seine Versorgung ziehen könnte.
Ein DS18B20 Temperatursensor, das Funkmodul und der ATtiny44A, mehr nicht. Ich habe es ausgebaut und nur das Modul mit den drei Bauteilen wird mit der Batterie verbunden, sonst keinerlei Verbindung nach außen.
Wieviele Zellen hat Deine Batterie? Eine? Dann reicht die Spannung vielleicht nicht aus, um die Schaltschwellen des Power-On Resets zu durchlaufen. Liegt die Spannung unter der unteren Schwelle (Im Datenblatt 1,6V als max. Wert (Bei neueren Tiny-Revisionen)) ist der Reset nicht aktiv, so daß der Tiny durchaus laufen kann, wenn die Taktfrequenz klein genug ist, und man ihm einen Reset von extern gibt. Mit freundlichen Grüßen - Martin
Es sind 4 Mignon-Akkus, also 4,8 V. Der BOD-Level ist bei 2,2 V eingestellt und als Takt habe ich gewählt intern mit 8 MHz und einer Anlaufverzögerung von 64mSek, also das max. Mögliche. Viele Grüße Markus
Hallo Markus EL, mit den 4 Zellen sollte das eigentlich problemlos gehen, und durch den eingestellten BOD sollte es reichen, wenn die Spannung unter 2,2V fällt, um einen Reset auszulösen. Die 2,2V BOD kommen mir für 8 MHz knapp vor, würde da höher gehen, in dem Bereich sind die Akkus eh schon bös tiefentladen. Du solltest bedenken, daß die Zellen, wenn sie randvoll sind, auch 1,5V haben können, da bist Du dann bei 6V am Tiny, das ist schon an den Absolute Maximum Ratings, bei denen die Funktion nicht mehr garantiert wird. 3 Zellen liegen da eigentlich besser im Spannungsbereich des Controllers. Mal eine ganz andere Idee: Du weisst, daß der Controller, bei einem Reset, den RAM-Inhalt nicht ändert, vielleicht lässt Du dich ja dadurch täuschen? Ich habe da mal was beobachtet, das mich doch verwundert hat. Ein Aufbau mit einem ATmega644P, bedient über ein Terminalprogramm, auch mit der Möglichkeit Datzensätze aus dem RAM des Controllers zu lesen. Ich musste meine Bastelei unterbrechen, um einkaufen zu gehen, Alles ausgeschaltet, ca. eine 3/4 Stunde später ging ich wieder ran, versuchsweise einen Datensatz gelesen, in der Historie des Terminalprogramms noch der Abzug von vorher, und von den 32 Bytes waren nur 2 oder 3 anders, der Rest war komplett identisch. Hab den Versuch dann wiederholt, nach der 3/4 Stunde waren noch ca. 0,2V am Controller, und wieder ein ähnliches Bild. Diese 0,2V haben gereicht, einen großen Teil der RAM-Inhalte zu erhalten. Mit freundlichen Grüßen - Martin
:
Bearbeitet durch User
Egal, was bei BDO eingestellt ist, 0 Volt bedeutet: Es folgt ein Reset. Somit kommt nach meiner Meinung nur eine ungewollte Stütze infrage. Ob das jetzt eine Fremdspeisung oder ein nicht entladener Kondensator ist sollte verifiziert werden.
Markus El schrieb: > d.h. die Startroutine wird > nicht durchlaufen Woher weißt Du das? Das Programm macht ja nichts, an dem man was erkennen könnte (z.B. Portpin schalten). Was für eine Programmiersprache ist das überhaupt?
Wäre es möglich, dass dein Funkmodul zur Initialisierung einfach zu lange braucht? Also der Attiny versucht schon zu senden, das Funkmodul ist aber noch nicht bereit und so scheint es für dich, dass der Tiny nicht sendet? Dann drückst du den Reset, das Modul hatte nun genügend Zeit zum "hochfahren" und kann nun mit deinem Tiny kommunizieren. Ist zwar bei 64ms Anlaufzeit unwahrscheinlich aber du kannst ja mal als Beginn deines Programms einfach ein großzügiges Delay einbauen.
:
Bearbeitet durch User
Markus El schrieb: > Davon abgesehen würde es mich interessieren was die Ursache sein kann > daß selbst die fehlende Spannung keinen Neustart auslöst. Markus El schrieb: > Was mich überrascht, der ATtiny44A scheint aus dem Sleep-Modus trotz > eines Batteriewechsels nicht aufzuwachen, Markus El schrieb: > Die Reset-Schaltung ist nur ein 22K Ohm Widerstand gegen Vcc. > Also kein C zwischen Reset und Gnd, in einem anderen Forumsbeitrag wurde > dies bei den heutigen Mikros als überflüssig dargestellt. > Wäre vielleicht ein Versuch wert, so in der Größe von etwa 100nF. würde ich mal vorschlagen und über den 22k nach VCC eine Diode damit der Kondi sich schneller entlädt bei Batteriewechsel. Evtl. noch Code hinzufügen ob es ein power on Reset war oder der Reset Taster, evtl. noch eine LED zur Signalisierung damit du erst mal den Code überprüfen kannst, bzw. optisch feststellen ob beides richtig erkannt wurde. Ich hatte es mir angewöhnt eine LED 3-5 x blinken zu lassen am Start, dann sehe ich ob der Start richtig durchlaufen wird bevor es in die never ending loop geht wo vielleicht nix mehr passiert. Bei dir bietet es sich an 2 verschieden farbige LEDs zu Probe zu verbauen 1 für power on reset und eine für den reset taster, damit du das besser unterscheiden kannst. Nun aber genug Prosa, zeichne einen Plan wie dein aufbau ist und zeige den, auch Bilder sind willkommen.
Beachte aber, hier gibt es eine Menge Reset-Quellen: Der externe Reset über den Kondensator und Widerstand am Reset-Pin, Der Power-On Reset, vom Controller intern generiert (bei ca. 1,3V), Der Brown-Out Reset, vom Controller generiert bei der eingestellten Spannung (Zuletzt 2,2V, bei Dir). Jeder dieser Reset Typen hat sein eigenes Bit im MCUSR – MCU Status Register. Mit freundlichen Grüßen - Martin
Joachim B. schrieb: > Bei dir bietet > es sich an 2 verschieden farbige LEDs zu Probe zu verbauen 1 für power > on reset und eine für den reset taster Martin Schlüter schrieb: > Der externe Reset über den Kondensator und Widerstand am Reset-Pin, > Der Power-On Reset, vom Controller intern generiert (bei ca. 1,3V), > Der Brown-Out Reset, vom Controller generiert bei der eingestellten > Spannung (Zuletzt 2,2V, bei Dir). OK dann 3 Ports, drei verschieden farbige LEDs, einverstanden?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.