sleep - Timer2 soll aufwecken

Gast #789823
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 ...
1
....
2

3
ISR(TIMER2_OVF_vect)
4
{  
5
  asm("nop");
6
}
7

8
....
9

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

12
TCCR2 = 7;   //Timer einschalten mit Teiler
13

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

17
sei();
18

19
LedOn;  //Makro
20

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

26
while(1) LedOff;
Gast #790079
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.
#790108
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
Gast #790720
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
#790876
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
Gast #790942
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
Gast #791259
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!
#791287
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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.