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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren