Forum: Mikrocontroller und Digitale Elektronik AVR asynch Timer, Sleep


von Gerhard T. (Firma: H&T) (gerard)


Lesenswert?

Hallo,

habe einen ATmega 644 bei dem ich den Timer2 asychnron mit einem 32kHz 
Quarz betreibe. Alles so konfiguriert, dass nach 500 ms der overflow 
interrupt ausgelöst wird.

In der Zwischenzeit wird der power safe modus aktiviert.

Nur hab ich das Problem, dass scheinbar der overflow im Falle von power 
safe 2 mal ausgelöst wird.
Im idle läufts richtig.
Auch ein kurzes wait von 5 us for dem sleep statement hilft, aber das 
kann's ja nicht sein.

Vielleicht kann mir jemand helfen.

Danke,
gerard

von Peter D. (peda)


Lesenswert?

Es muß vor dem Sleep mindestens eine Periode des 32kHz Taktes erfolgen, 
um das gelöschte Interruptflag zu übernehmen.
Das kann z.B. so geschehen:
1
  TCCR2B = TCCR2B;                      // dummy write
2
  while( ASSR & 1<<TCR2BUB );           // wait until dummy write done


Peter

von Gerhard T. (Firma: H&T) (gerard)


Lesenswert?

Ok, danke vielmals.

von Falk B. (falk)


Lesenswert?

Siehe Sleep Mode

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.