Hallo, kämpfe mich immer noch durch das Tutorial hier und bin nun endlich beim letzten Punkt angekommen (http://www.mikrocontroller.net/articles/AVR-Tutorial:_Power_Management) und probiere mich gerade am Sleep Modus ... allerdings erfolglos ... wärend es im Simulator von AVR Studio wie erwartet funktioniert, funktioniert es auf dem ATmega 8 leider nicht :( Da ich mich nicht so gut mit auskenne, bin ich wieder mal Ratlos ... und weiß nicht, was ich falsch gemacht habe ... Würde mich sehr freuen, könnte sich das mal wer angucken, der davon Ahnung hat ;) Vielen Dank! .include "m8def.inc" .org 0x0000 rjmp init ; Reset Handler .org OVF2addr rjmp timer2_overflow ; Timer Overflow Handler init: ; Stackpointer initialisieren ldi r16, LOW(RAMEND) out SPL, r16 ldi r16, HIGH(RAMEND) out SPH, r16 ; AS2-Bit in ASSR, damit Timer2 im Sleep Mode aktiv ldi r16, (1<<AS2) out ASSR, r16 ; Sleep aktivieren, Power-save ldi r16, (1<<SE) | (1<<SM1) | (1<<SM0) out MCUCR, r16 ; Vorteiler = 1024 (hier startet auch der Counter) ldi r16, (1<<CS22) | (1<<CS21) | (1<<CS20) out TCCR2, r16 ; Interrupt bei Overflow erlauben ldi r16, (1<<TOIE2) | (1<<OCIE2) out TIMSK, r16 sei ; Interrupts generell aktiviern sleep ; Port D Ausgang, LED an ldi r16, 0b01100000 out DDRD, r16 out PORTD, r16 loop: rjmp loop ; Timer 2 Overflow Handler timer2_overflow: reti
Ist überhaupt ein Uhrenquarz an TOSC1/TOSC2 angeschlossen?
error schrieb: > Ist überhaupt ein Uhrenquarz an TOSC1/TOSC2 angeschlossen? Ja, mit einem 16 MHz Quarz
Möööp, eine Ubrenquarz hat eine Frequenz von 2^15 Hz, nicht 16MHz, dass packt der Oszillator garnicht... Ingo
@devil13 den Power Save Mode benutzt man mit einem Uhrenquarz an TOSC1/2 (32.768kHz), dies bedingt jedoch, das der AVR im Normalbetrieb mit dem internen Oszillator (1MHz o. 8MHz) läuft. Sascha
Danke für die Antwort! kann ich außer dem Idle Sleep Mode noch andere aus dieser Liste (http://www.mikrocontroller.net/articles/Sleep_Mode) zusammen mit dem Timer2 verwenden ohne meine Schaltung zu ändern? Also ich verwende einen externen 16MHz Oszi Grüße
Den externen Quarz an XTAL1 & XTAL2, und den 32.768KHz-Uhrenquarz an TOSC1 & TOSC2. Das ist ja nur eine kleine Bestueckungsaenderung.
>kann ich außer dem Idle Sleep Mode noch andere aus dieser Liste >(http://www.mikrocontroller.net/articles/Sleep_Mode) zusammen mit dem >Timer2 verwenden ohne meine Schaltung zu ändern? Ja, den ADC Noise Reduction Mode. Ansonsten kannst du aus dem Power Down/Save Mode auch mit dem Wachdog aufwachen. >Den externen Quarz an XTAL1 & XTAL2, und den 32.768KHz-Uhrenquarz an >TOSC1 & TOSC2. Geht nicht, da der Atmega8 keine separaten Anschlüsse für XTAL und TOSC hat.
>>Den externen Quarz an XTAL1 & XTAL2, und den 32.768KHz-Uhrenquarz an >>TOSC1 & TOSC2. >Geht nicht, da der Atmega8 keine separaten Anschlüsse für XTAL und TOSC >hat. Autsch. Die Ersparnis von 60 cents eines Mega8 gegenueber einem Mega32 lohnt sich hier...
error schrieb: > Ansonsten kannst du aus dem Power Down/Save Mode auch mit dem Wachdog > aufwachen. Dann habe ich gerade ein kleines Verständnis Problem ... soweit ich es bis jetzt verstanden habe, dient der Wachdog dazu, wenn ein Counter einen gewissen Wert überschreitet ein Reset auszulösen. Nun soll ich eben diesen Wachdog nutzen um die Auslösung des Resets zum Aufwachen zu nutzen? Dann müsste ich ja den Reset verhindern ... oder müsste ich diesen (sofern gewollt) manuell ausführen? (dachte, der Reset wird vom Wachdog automatisch ausgelöst) Grüße
NB: Bei Verwendung des asynchronen Timer-Modus wäre es naheliegend, die entsprechenden Hinweise aus dem Datasheet zu lesen und zu befolgen. Allein das Bit zu setzen reicht nicht.
devil13 schrieb: > Dann habe ich gerade ein kleines Verständnis Problem ... soweit ich es > bis jetzt verstanden habe, dient der Wachdog dazu, wenn ein Counter > einen gewissen Wert überschreitet ein Reset auszulösen. Das ist die klassische Funktion. > Nun soll ich > eben diesen Wachdog nutzen um die Auslösung des Resets zum Aufwachen zu > nutzen? Der Watchdog kann auch einen Interrupt auslösen. Was allerdings voraussetzt, dass man nicht tief in die Mottenkiste greift, sondern statt dem ollen Mega8 einen pinkompatiblen Mega88 verwendet. Der Mega8 kann das noch nicht. Je nachdem was man vorhat ist insbesondere in Assembler allerdings auch der WD-Reset als Wakeup produktiv verwendbar. Prozessorregister und RAM-Inhalt bleiben ja erhalten und ob es ein WD-Reset war und kein anderer sagt das MCUCSR.
A. K. schrieb: > NB: Bei Verwendung des asynchronen Timer-Modus wäre es naheliegend, die > entsprechenden Hinweise aus dem Datasheet zu lesen und zu befolgen. > Allein das Bit zu setzen reicht nicht. Sorry, wenn ich dumm frage, aber was bedeutet asynchroner Timer-Modus?
devil13 schrieb: > Sorry, wenn ich dumm frage, aber was bedeutet asynchroner Timer-Modus? Aus der Feder eines Programmierers, der das AS2 Bit im ASSR setzt, ist das schon eine etwas unerwartete Frage. Schon dran gedacht, diese Frage dem Datasheet zu stellen? Steht da nämlich recht ausführlich drin.
A. K. schrieb: > devil13 schrieb: > >> Sorry, wenn ich dumm frage, aber was bedeutet asynchroner Timer-Modus? > > Aus der Feder eines Programmierers, der das AS2 Bit im ASSR setzt, ist > das schon eine etwas unerwartete Frage. > > Schon dran gedacht, diese Frage dem Datasheet zu stellen? Steht da > nämlich recht ausführlich drin. > > Da auch: > http://www.mikrocontroller.net/articles/AVR_-_Die_... Hä? Den Link, den du gepostet hast, habe ich mir durchgelsenen ... schlau werde ich daraus jedoch nicht wirklich ... dort ist lediglich beschrieben, wie ich Genauigkeitsabweichungen einer Uhr ausbügeln kann. Nichts desto trotz ... würde mir das so erklären: asynchron = nicht synchron --> einen externen Takt, der nicht mit dem internen zusammen hängt? Ist das richtig? P.S. das Datenblatt, was ich habe, ist auf Englisch und mein Englisch ist nicht sonderlich gut ... außerdem lerne ich erst mit dem AVR klarzukommen ...
@ devil13 (Gast) >synchron --> einen externen Takt, der nicht mit dem internen zusammen >hängt? >Ist das richtig? Ja.
devil13 schrieb: > P.S. das Datenblatt, was ich habe, ist auf Englisch und mein Englisch > ist nicht sonderlich gut ... außerdem lerne ich erst mit dem AVR > klarzukommen ... Aber Tante Gugel kennst du? Die wirft beispielsweise auf der ersten Seite dies aus: http://www.avr-modelleisenbahn.de/atmega8/13-11-2-asynchroner-betrieb-timer-2-atmega8.htm
>das Datenblatt, was ich habe, ist auf Englisch und mein Englisch >ist nicht sonderlich gut Dann würde ich als erstes an deinen Sprachkenntnissen arbeiten da fast alle Datenblätter in Englisch sind. >außerdem lerne ich erst mit dem AVR klarzukommen ... Ohne das Datenblatt lesen zu können ein fast unmögliches unterfangen. >asynchron = nicht synchron --> einen externen Takt, der nicht mit dem >internen zusammen hängt? Ja, der externe Uhrenquarz der den Timer2 versorgt läuft mit einer anderen Geschwindigkeit wie der interne Oszillator des Avr, sprich sie laufen asynchron.
error schrieb: > Ohne das Datenblatt lesen zu können ein fast unmögliches unterfangen. Beim AVR hat er sogar gewisse Chancen. Der Modelleisenbahn-Link verweist auf eine deutsche Übersetzung des Datasheets vom Mega8. PS: Der Link findet sich auch im AVR Tutorial. An exakt der richtigen Stelle.
error schrieb: > Ohne das Datenblatt lesen zu können ein fast unmögliches unterfangen. Ehrlich gesagt, komme ich bisher eigentlich ganz gut klar. @ A. K. vielen Dank für den Link, den kannte ich noch nicht und der ist wirklich gut :)
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.