Hallo zusammen! Ich würde nochmals Hilfe benötigen. Ich würde meine Sensorschaltung gerne mit einem Taster aus- bzw. ein schalten. Ich verwende den ATtiny 24. Der Taster geht von PB3 auf Ground. Möchte also den internen Pull Up Widerstand nutzen. Wenn das Gerät ausgeschaltet ist, muss ja weiterhin eine Schleife ablaufen die den Taster abfragt. Der Controller wird sich in dieser Zeit ja wahrscheinlich im Idle Mode befinden. Wie kann ich sowas generieren. Eine while-Schleife und eine Abfrage des Pins nach 0 ist wohl einleuchtend. Wenn ich den Taster alle 100 ms oder so abfrage, sollte die Entprellung ja zusätzlich gegeben sein oder? Ist ein Interrupt nötig?? Könnte mir hierbei jemand mit einem Code Beispiel helfen? Die zweite Frage. Wie generiert man Hard- und Softwaremäßig am einfachsten einen "Batteriewächter". Die ganze Schaltung läuft mit einer 3 V Batterie. Bei sagen wir mal 2,5 V soll ein Warnlämpchen blinken. Mit ADC und Spannungsteiler kann man das ja schwer machen, weil die Referenzspg. = VCC mitabsinkt. Wie macht man das am geschicktesten?? Danke im voraus! Gruß Thomas
wenn du nicht grad einen V-Typ hast blinkt bei 2,5V nix mehr. Ansonsten wirst du mit etwas Mühe genug Antworten hier im forum finden wenn du nur danach suchst. bye Frank
1.Ein guter Betreff hilft manchmal weiter... 2.An einer toten Batterie brennt auch keine LED. 3.Wenn man keine Spannung messen will, kann man sie auch vergleichen.
Bastler schrieb: > Ich würde nochmals Hilfe benötigen. Ich würde meine Sensorschaltung > gerne mit einem Taster aus- bzw. ein schalten. Ich verwende den ATtiny > 24. Der Taster geht von PB3 auf Ground. Möchte also den internen Pull Up > Widerstand nutzen. > Wenn das Gerät ausgeschaltet ist, muss ja weiterhin eine Schleife > ablaufen die den Taster abfragt. Dann darf das Gerät nicht komplett ausgeschaltet sein. Mindestens der ATtiny muss noch laufen. > Der Controller wird sich in dieser Zeit > ja wahrscheinlich im Idle Mode befinden. Wie kann ich sowas generieren. Da gibt es mehrere Verfahren. Wenn der µC aus einer Batterie oder einem Akku versorgt wird, ist Stromsparen besonders wichtig. Dann wird üblicherweise ein Sleep Mode eingesetzt. > Eine while-Schleife und eine Abfrage des Pins nach 0 ist wohl > einleuchtend. Wenn ich den Taster alle 100 ms oder so abfrage, sollte > die Entprellung ja zusätzlich gegeben sein oder? Ist ein Interrupt > nötig?? > Könnte mir hierbei jemand mit einem Code Beispiel helfen? Gerade dieses Pollen wird aus Stromspargründen vermieden. Mit einem Interrupt kann der schlafende (d.h. stromsparende) µC aufgeweckt werden. > Die zweite Frage. Wie generiert man Hard- und Softwaremäßig am > einfachsten einen "Batteriewächter". Die ganze Schaltung läuft mit einer > 3 V Batterie. Bei sagen wir mal 2,5 V soll ein Warnlämpchen blinken. Mit > ADC und Spannungsteiler kann man das ja schwer machen, weil die > Referenzspg. = VCC mitabsinkt. Wie macht man das am geschicktesten?? Du könntest eine klassische Blinkschaltung konstruieren, die einen Disable-Eingang oder Reset-Eingang hat, der von dem µC bedient wird. Wenn der µC nicht mehr läuft, weil eine Unterspannung einen Brownout ausgelöst hat, blinkt die externe Schaltung.
Dass der ATtiny 24V laufen muss ist mir völlig klar. Sleep Mode ist auch relativ klar, wobei ich da auf den ersten Blick im Datenblatt wenig dazu sehe. Dass ich die ganze Sache dann mit einem Interrupt wieder zurückhole kann ich mir auch gut vorstellen. Nur geht das mit einem Taster? Kann ich ihn mit diesem Impuls auf 0 in den Sleep Modus versetzen? Reicht der 0-Impuls aus um einen Interrupt auszulösen damit er wieder anläuft? Im Sleep Modus ist ja nur noch mein interner Takt (1MHz) am laufen. Habe keinen externen Quarz. Das Schalterentprellen muss dann wohl auch anders als mit der while Schleife funktionieren, weil die ja ständig Strom verbraucht. Zu der Anregung mit der Batterieüberwachung. Ich möchte nicht gewarnt werden, wenn schon nichts mehr geht. Da ich den Tiny 24V gewählt habe, der normal bis 1,8 V funktioniert, hätte ich hald gerne ab 2,3 V oder so ein Warnlämpchen. Wenn das blinkt, muss mit einem Ausfall oder Fehlermeldungen gerechnet werden. Ich weiss auch die Sache mit dem Komperator. Also mit einem Vergleich. Nur dann bräuchte ich ja wohl wieder eine Z-Diode die mir eine feste Spg. liefert damit ich überhaupt vergleichen kann. Gruß Th.
Bastler schrieb: > Sleep Mode ist auch > relativ klar, wobei ich da auf den ersten Blick im Datenblatt wenig dazu > sehe. Das ganze Kapitel 7 im Datenblatt ist dem Thema gewidmet. > Dass ich die ganze Sache dann mit einem Interrupt wieder > zurückhole kann ich mir auch gut vorstellen. Nur geht das mit einem > Taster? Geht, wenn du den Taster an INT0 betreibst (Tabelle 7-1, Spalte Wake-up Source) > Kann ich ihn mit diesem Impuls auf 0 in den Sleep Modus > versetzen? Könnte man, in der Regel programmiert man das aber anders. Im Leerlauf (Idle) kann man den I/O-Pin an INT0 pollen und bei Bedarf den µC schlafen schicken. Zuvor den "Wecker" fürs Aufwachen stellen, d.h. INT0 scharf machen. Der nächste Tasterdruck weckt den µC und man schaltet den Wecker wieder am. Ich habe sowas mit dem Suppentimer gemacht http://www.mikrocontroller.net/articles/Pollin_Funk-AVR-Evaluationsboard#Suppentimer > Reicht der 0-Impuls aus um einen Interrupt auszulösen damit > er wieder anläuft? Es gibt Bedingungen für die Mindestdauer des Tastendrucks. Steht im Datenblatt im Abschnitt 9.2 zu den Externen Interrupts. > Im Sleep Modus ist ja nur noch mein interner Takt > (1MHz) am laufen. Habe keinen externen Quarz. Das Schalterentprellen > muss dann wohl auch anders als mit der while Schleife funktionieren, > weil die ja ständig Strom verbraucht. Das Entprellen kannst du per Software machen z.B. wenn du ein Schlafenlegen nach dem Aufwecken nur nach einer Mindestzeit zulässt. Für die Entprellung im Wachmodus gibt es verschiedene Methoden. Ansehen würde ich mir die Interruptmethode mit einem Timerinterrupt statt des Wartescheifenverfahrens mit while. > Zu der Anregung mit der Batterieüberwachung. Ich möchte nicht gewarnt > werden, wenn schon nichts mehr geht. Da ich den Tiny 24V gewählt habe, > der normal bis 1,8 V funktioniert, hätte ich hald gerne ab 2,3 V oder so > ein Warnlämpchen. Wenn das blinkt, muss mit einem Ausfall oder > Fehlermeldungen gerechnet werden. Ich weiss auch die Sache mit dem > Komperator. Also mit einem Vergleich. Nur dann bräuchte ich ja wohl > wieder eine Z-Diode die mir eine feste Spg. liefert damit ich überhaupt > vergleichen kann. Genau, entweder diskret selber aufbauen oder einen integrierten Resetcontroller mit der Wunschspannung (=> programmierbare Schaltschwelle) benutzen.
Ok. Das sind alles sehr nützliche Hilfen für mich. Also für mich würde sich dann in meinen Augen der Idle Mode oder Standby Mode anbieten. Also das mit Taster drücken funktioniert dann wohl auch. Aber das Programm Suppentimer hört sich sehr kompliziert und ist ja auch Ewigkeiten groß befürchte ich. Soweit ich das Einschätzen kann müßte es relativ leicht gehen. Nur die Register dementsprechend belegen und wohl eine ISR Routine schreiben. In die kann ich dann gleichzeitig auch das mit dem Entprellen nehmen wenn es eine Timerinterruptroutine ist. Das mit dem integrierten Resetcontroller verstehe ich noch nicht bei der Batterieüberwachung.
Bastler schrieb: > Ok. Das sind alles sehr nützliche Hilfen für mich. Also für mich würde > sich dann in meinen Augen der Idle Mode oder Standby Mode anbieten. > Also das mit Taster drücken funktioniert dann wohl auch. > Aber das > Programm Suppentimer hört sich sehr kompliziert und ist ja auch > Ewigkeiten groß befürchte ich. Bestimmt weil eine vierstellige 7-Segmentanzeige dabei angesteuert wird. Das Grundverfahren, Schlafen vorbereiten, Wecker stellen, Schlafen, Aufwachen Wecker abstellen ist rel. einfach. Der Suppentimer-Code kann auch auf drei Arten übersetzt werden (s. DEFINEs im Source) - ohne Schlafen/Wecken, mit simuliertem Schlafen/Wecken und mit tatsächlichem Schlafen/Wecken. > Soweit ich das Einschätzen kann müßte es relativ leicht gehen. Nur die > Register dementsprechend belegen und wohl eine ISR Routine schreiben. Zwei ISRs: Eine für die Behandlung des externen Interrupts von INT0 beim Aufwecken. Und eine für den Timerinterrupt für alle Zeitaufgaben. > In > die kann ich dann gleichzeitig auch das mit dem Entprellen nehmen wenn > es eine Timerinterruptroutine ist. Korrektemente. > Das mit dem integrierten Resetcontroller verstehe ich noch nicht bei der > Batterieüberwachung. Das ist ein IC, das eingangsseitig eine zu überwachende Spannung bekommt und ausgangsseitig ein Logiksignal aus gibt, ob die Schaltschwelle von der Spannung über- oder unterschritten wird. Wenn man das Logiksignal an einen RESET-Eingang eines µC hängt, kann man den kontrolliert rauf- und runterfahren lassen. Das ist der übliche Einsatzzweck eines solchen ICs, daher der Name Reset Controller. Aber wenn man das Logiksignal an einen beliebigen I/O-Eingang eines µC hängt, kann man auf den Zustand der Versorgungsspannung im Programm reagieren.
Da ich für meine Sensorschaltung eine while(1) Schleife benutze, müßte die ISR-Routine wohl innerhalb dieser Schleife sein vermute ich. Ansonsten ist ein Austreten aus dieser Schleife ja ausgeschlossen. Das kann ich ja wiederum auch mit dem Interrupt für externe Ereignisse handeln. Ich versuch gerade aus dem Suppentopf-Timer den für mich interessanten Code rauszuziehen. Das dürften ja nicht mal 10 -15 Zeilen sein für meine einfache Anwendung. Ein weiteres IC ist für meine Aufgabe nur ganz schwer zu vermitteln. Das zu begründen würde aber jetzt sehr lange dauern. Gibt es irgendeine Möglichkeit das mit wenigen Bauteilen so zu realisieren?
Bastler schrieb: > Da ich für meine Sensorschaltung eine while(1) Schleife benutze, müßte > die ISR-Routine wohl innerhalb dieser Schleife sein vermute ich. > Ansonsten ist ein Austreten aus dieser Schleife ja ausgeschlossen. Gerade nicht. Das ist ja der Clou einer ISR: Es ist eine eigenständige Funktion in einem Programm, die im Falle eines Interrupts das Userprogramm ("die while(1) Schleife") unterbricht, abgearbeitet wird und danach das Userprogramm an der unterbrochenen Stelle weiterführt.
In Ordnung. Dann werde ich jetzt mal versuchen diese ISR zu schreiben und hoffe dass des so klappt wie ichs mir vorstelle. Könnte man das mit der Batterieüberwachung auch irgendwie mit Brown out machen??
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.