Seltsames Problem mit Timer2 Atmega1284p

#7040917
Lesenswert?

Hallo Zusammen,
ich bin eben auf ein seltsames Problem mit Timer2 gestoßen. Und zwar 
läuft der Timer aus irgedeinem Grund nicht im Power_Save Mode.
Was ich nicht verstehe ist, dass ich genau den gleichen Code Teil auf 
einem anderen Atmega1284p am laufen habe. Das einzige, was ich auf dem 
anderen Atmega anders gemacht habe, ist ein anderer Prescaler, aber das 
kann ja eigentlich nicht das Problem sein. An TOSC habe ich einen 
Uhrenquarz angeschlossen. Jemand ne Idee, was ich falsch gemacht habe?
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
#include <avr/sleep.h>
4
volatile int count=0;
5

6
int main(void){
7
  
8
    // Timer 2 konfigurieren
9
    GTCCR |= (1 << TSM) | (1 << PSRASY);  //Timer anhalten, Prescaler Reset
10
    ASSR = (1 << AS2);                    //Asynchron Mode einschalten
11
    TCCR2A = (1 << WGM21);                //CTC Modus
12
    TCCR2B = (1 << CS22) | (1 << CS21) | (1<< CS20);   //Prescaler 1024
13
    OCR2A = 128;
14
    while(ASSR & ((1<<TCN2UB) | (1<<OCR2AUB) | (1<<OCR2BUB) |  (1<<TCR2AUB) | (1<<TCR2BUB)));
15
  
16
  TIMSK2 |= (1<<OCIE2A); 
17
  GTCCR &= ~(1 << TSM);  
18
  sei();
19
  
20
  DDRB=0x01;
21

22
    while (1) {
23
//    set_sleep_mode(SLEEP_MODE_PWR_SAVE);
24
//    sleep_mode();  
25
    }
26
}
27

28
ISR (TIMER2_COMPA_vect){ //alle 4 Sekunden  
29
  if(count%2)
30
    PORTB=0x01;
31
  else
32
    PORTB=0;
33
  ++count;
34
}
Gast #7041091
Lesenswert?

Wie gesagt, das Programm, 1:1 übernommen, läuft hier, auf einem 
Steckbrett mit Standard-Fuses. Aber ich möchte auf das Datenblatt 
'Asynchronous Operation of Timer/Counter2', Unterpunkt '- If 
Timer/Counter2 is used to wake the device up from Power-save ...' 
hinweisen ("... the interrupt will not occur, and the device will fail 
to wake up").

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