www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Sleep Modus und Timer


Autor: Beni (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Beni (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

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.