Forum: Mikrocontroller und Digitale Elektronik Sleep Modus und Timer


von Beni (Gast)


Lesenswert?

will meinen Atmega8 mit dem Timer2 aus dem ADC noise reduction mode 
herausholen. Nun ist es ja aber so dass das immer bei einem Timer 
overflow passiert und diese overflows geschehen einfach zu schnell. den 
prescaler habe ich bereits auf 1024 gesetzt, wie kann ich diesen sleep 
zusatnd verlängern?

von Falk B. (falk)


Lesenswert?

@ Beni (Gast)

>will meinen Atmega8 mit dem Timer2 aus dem ADC noise reduction mode
>herausholen.

OK, aber erwarte vom Noise Reduction Mode keine Wunder. Sooooviel bringt 
der auch nicht.

> Nun ist es ja aber so dass das immer bei einem Timer
>overflow passiert und diese overflows geschehen einfach zu schnell. den
>prescaler habe ich bereits auf 1024 gesetzt, wie kann ich diesen sleep
>zusatnd verlängern?

Nimm Timer 1, der ist 16 Bit. Ausserdem muss die CPU nur während der 
Messung ruhig sein, um das Rauschen minimal zu verbessern. Also nach 
jeder Messung neu in den Sleep Mode wechseln. Dann reicht auch 
Timer2.

ADC starten
Sleep Mode
ADC fertig, Interrupt beendet Sleep Mode
Alles nochmal

MfG
Falk

von Beni (Gast)


Lesenswert?

ich kann dioch nicht einfach timer 1 nehmen, denn der weckt nicht aus 
dem sleep modus? das kann nur timer 2?
ich habe noch ein weiters problem: da ich timer2 verwenden muss und dort 
am gleichen pin auch noch MOSI ist und ich über diese schnittstelle 
kommuniziere funktioniert dann gar nichts mehr wenn ich den timer2 
laufen lasse.
hier mein programm:

sensor daten über SPI empfangen
sleep mode bis timer overflow
beginne von vorne

der timer2 blockiert irgendwie die SPI schnittstelle?


void SPI_Init(void)
{
/* Set MOSI and SCK output, all others input */
DDRB|= ((1<<PB3)|(1<<PB5));
/* Enable SPI, Master, set clock rate fck/128*/
SPCR|= ((1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPR1));
}


TCCR2|=(1<<CS22)|(1<<CS21)|(1<<CS20); //prescaler 1024
TIMSK|=(1<<TOIE2);


muss ich da irgendwelche ports noch umschreiben, damit ich die beiden 
Funktionen dieses Pins nutzen kann?

von Falk B. (falk)


Lesenswert?

@ Beni (Gast)

>ich kann dioch nicht einfach timer 1 nehmen, denn der weckt nicht aus
>dem sleep modus? das kann nur timer 2?

Doch. Lies den Artikel.

>ich habe noch ein weiters problem: da ich timer2 verwenden muss und dort
>am gleichen pin auch noch MOSI ist und ich über diese schnittstelle
>kommuniziere funktioniert dann gar nichts mehr wenn ich den timer2
>laufen lasse.

???
Dein Timer wird doch intern getaktet. Was hat MOSI damit zu tun?

>der timer2 blockiert irgendwie die SPI schnittstelle?

Kaum. Aber du hast vergessen, SS als Ausgang zu setzen. Das MUSS sein. 
Siehe AVR-Tutorial: Schieberegister

MfG
Falk

von Peter D. (peda)


Lesenswert?

Beni wrote:

>will meinen Atmega8 mit dem Timer2 aus dem ADC noise reduction mode
>herausholen.


> ich kann dioch nicht einfach timer 1 nehmen, denn der weckt nicht aus
> dem sleep modus? das kann nur timer 2?

Was denn nun?

Aus dem ADC noise reduction mode kommst Du mit dem ADC-Interrupt raus, 
sagt ja schon der Name.
Alle Timer und die UART laufen natürlich weiter.


Peter

von Falk B. (falk)


Lesenswert?

@  Peter Dannegger (peda)

>Aus dem ADC noise reduction mode kommst Du mit dem ADC-Interrupt raus,
>sagt ja schon der Name.

Ja.

>Alle Timer und die UART laufen natürlich weiter.

NEIN! Nur Timer2 ist verfügbar, UART und Timer0/1 nicht. Siehe [[Sleep 
Mode]], wär ja sonst sinnlos. Du meinst den Idle Mode.

MfG
Falk

von Peter D. (peda)


Lesenswert?

Falk Brunner wrote:

> NEIN! Nur Timer2 ist verfügbar, UART und Timer0/1 nicht. Siehe [[Sleep
> Mode]], wär ja sonst sinnlos. Du meinst den Idle Mode.

Du hast recht, habs bisher nicht gründlich gelesen.

Dann werde ich ihn nicht mehr verwenden, sonst geht ja meine RTC (T0) 
nach.
Und jede PWM müßte dann auch ins Stottern kommen.
Is ja richtig gefährlich dieser Sleep-Mode.


Peter

von Falk B. (falk)


Lesenswert?

@ Peter Dannegger (peda)

>Is ja richtig gefährlich dieser Sleep-Mode.

;-)
Naja, mich würde mal interessieren, wieviel Noise Reduction der WIRKLICH 
bringt. Atmel liefert da auch keine konkreten Zahlen, nur allgemeine 
Aussagen.

MfG
Falk

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
Noch kein Account? Hier anmelden.