www.mikrocontroller.net

Forum: Compiler & IDEs sleep - Timer2 soll aufwecken


Autor: Jens-Erwin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Folgendes funktioniert nicht richtig, der AVR wacht nicht auf ...

Im Simulator geht alles - die Led schaltet sich nach dem Aufwachen aus, 
sie müsste also kurz aufleuchten. Real - geht es aber nicht -- bitte um 
Hilfe

Auch wenn ich noch eine kleine while-Schleife nach dem Starten des 
Timers anbringe (um das Loslaufen des Timers abzusichern), so dass sleep 
erst bei TCNT2 = 10 z.B. ausgeführt wird, klappt es nicht. Es kommt nie 
zur while-Schleife. Muss ich was entsprechendes in die IR-Routine 
schreiben?

Strom geht nach unten, also sleep funktioniert ...

....

ISR(TIMER2_OVF_vect)
{  
  asm("nop");
}

....

ASSR |= (1<<AS2);  //asynchron, 8MHz Quarz hängt dran

TCCR2 = 7;   //Timer einschalten mit Teiler

MCUCR |= (1<<SE);
MCUCR |= (3<<SM0);    // Power Save

sei();

LedOn;  //Makro

TCNT2 = 0;     // zurück setzen
TIMSK |= (1<<TOIE2);  // Interrupt ein
    
asm ("sleep");

while(1) LedOff;


Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sleep Mode

Der asynchrone Timer muss erst anlaufen.

MFG
Falk

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>ASSR |= (1<<AS2);  //asynchron, 8MHz Quarz hängt dran

Hab ich das jetzt im Datenblatt falsch gelesen, oder
möchte der wirklich nur mit 32kHz Uhrenquarz laufen ?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ holger (Gast)

>Hab ich das jetzt im Datenblatt falsch gelesen, oder
>möchte der wirklich nur mit 32kHz Uhrenquarz laufen ?

Nur 32 kHz Uhrenquarz.

MFG
Falk

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>ASSR |= (1<<AS2);  //asynchron, 8MHz Quarz hängt dran
>Nur 32 kHz Uhrenquarz.

Dann haben wir sein Problem ja gefunden ;)

Autor: Jens-Erwin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann sein, obwohl der im normalen synchronen Modus doch auch mit hohen 
Frequenzen läuft - ist das wirklich der Grund?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daran liegt's bestimmt nicht, sondern eher daran, daß es keinen Timer2 
gibt.


PS: Damit will ich sagen, daß es evtl. auch davon abhängt, um welchen 
AVR es überhaupt geht.

Autor: Jens-Erwin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ihr habt recht - Danke

The CPU main clock frequency must be more than four times the Oscillator
frequency.

Er muss nicht 32kHz haben aber eben 4 mal so langsam sein, wie die 
Hauptfrequenz.

Schade, dann kann man den Weckdienst nur verwenden, wenn der interne 
Takt aktiviert ist, was bei USART-Geschichten zu ungenau wäre.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Jens-Erwin (Gast)

>The CPU main clock frequency must be more than four times the Oscillator
>frequency.

Wo steht das ? In welchem Zusammenhang?

>Schade, dann kann man den Weckdienst nur verwenden, wenn der interne
>Takt aktiviert ist, was bei USART-Geschichten zu ungenau wäre.

Lies den Artikel Sleep Mode!

MfG
Falk

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wo steht das ?

Seite 42.

> In welchem Zusammenhang?

Butterbrot.

PS: Damit will ich sagen, daß es evtl. auch davon abhängt, um welchen
AVR es überhaupt geht.

Autor: Jens-Erwin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
CPU ist ATMega8

Es steht unter

Asynchronous Operation of Timer/Counter2

S.118

ich habe jetzt den halben Tag gebraucht um alles auszuprobieren, 
funktioniert alles sehr gut.


UND NOCH WAS INTERESSANTES -- wen es interessiert,


ich habe mittels Fön und Eiswürfel den ATMega in die Sauna geschickt und 
siehe da, bei internem RC-Osci und einer Baudrate von 38.400 gibt es 
keine Probleme. Mittels interner Osc-Kalibrierung hin und her getestet, 
gibt es sogar noch etwas Spielraum. Also ca. 0° - 60° --- kann man 
riskieren!

Taktfrequenz schwankt zwischen 7.9 und 8.2 MHz bei 8Mhz interner 
Frequenz

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Jens-Erwin (Gast)

>ich habe mittels Fön und Eiswürfel den ATMega in die Sauna geschickt und

Weil man ja mit Eiswürfeln auch sooo gut ICs kühlen kann . . .

>Taktfrequenz schwankt zwischen 7.9 und 8.2 MHz bei 8Mhz interner
>Frequenz

Das sind +/- 1,25%. Würde ich ungern riskieren. Zumal deine Messung 
Schrott ist, zumindes in den Minusgraden.

MFG
Falk

Autor: Jens-Erwin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe die Schaltung in den Kühlschrank gelegt - selbe Ergebnis ---

außerdem ist es laut Datenblättern von -20 (kann ich nicht testen)  bis 
+ 60° ein Bereich von 0,4 MHz

Um z.B. Midi-Daten zu übertragen, im Innenbereich - reicht es aus ..

bis +- 3,6% genau, klappt es mit dem Sampeln

und was ich getestet und gemessen habe sind ca. 2,5%.


OSCCAL ließ sich +- 9 vom signierten ausgelesenen Wert verstellen bei 
20°, ohne Fehler -- wenn es heiß oder kalt wurde verschob sich die 
"Mitte" auf immerhin noch +- 3 vom ursprünglichen Wert.

aber wenn's nichts für Falk ist, war ja nur ein kleines für mich sehr, 
sehr sinnvolles Arbeitsergebnis --- für Geräte in normalen Umgebungen 
sicher ausreichend - werde das in der Praxis testen. Ich arbeite 
schließlich beruflich damit .... die Dinger müssen funktionieren ...


Danke - trotzdem

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Jens-Erwin (Gast)

>schließlich beruflich damit .... die Dinger müssen funktionieren ...

Und da lässt du es auf einen popeligen 20 Cent Qaurz ankommen. Naja, 
viel Erfolg noch mit deinen Entwicklungen . . .

MFG
Falk

Autor: Jens-Erwin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sag mal Falk, was hast Du denn gegen meinen Beitrag? Lies doch mal 
durch, um was es eigentlich geht .... hier noch mal extra für Dich ...

Ich muss anstelle des (wie du meinst) popeligen 20 Cent Quarzes für die 
CPU einen kleineren vielleicht auch 20 Cent-billigen-Quarz anschließen, 
um den Timer2

------ unabhängig -------

von der CPU laufen lassen zu können, damit diese selbst eben von Timer2 
nach Intervallkurzschlaf (wie ich ihn gerade selbst heute Nacht mache, 
es ist 4:32) aufwachen kann. Die CPU selbst hat ja beim Schlafen die Uhr 
ausgeschaltet und der Wecker (Timer2) muss ticken .....

Da ich am ATMega8 keine 2 Quarze anschließen kann (für CPU und Timer2), 
muss also die CPU mit internem RC-Takt laufen, was heißt, nicht mehr 
ganz so genau. Deshalb die Tests mit USART-Frequenz ..... usw.

.... ... ENDE!

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Jens-Erwin (Gast)

>Sag mal Falk, was hast Du denn gegen meinen Beitrag?

Weil er suggeriert, dass eine UART Kommunikation mit internem 
RC-Oszillator ganz easy ist. Das ist nicht der Fall. Es kann laufen. Man 
kann auch mit gewissen Aufwand (Kalibrierung, zyklische Rekalibrierung) 
das hinbekommen. Aber man sollte das hier nicht so rumtönen, weil dann 
wieder Horden von Schlaumeiern genau das machen (aber eben ohne 
Kalibrierung) und dann rumjammern wenn der UART nicht geht. Das Forum 
ist voll mit solchen "wertvollen Beiträgen".

MFG
Falk

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.