ATmega128RFR2 und MAC Symbol Counter

OP #4166968
Lesenswert?
• ▲
▼
Hallo Forum,
ich arbeite zz.t an einem ATmega128RFR2 und möchte den Symbolcounter 
dazu verwenden den Power-Down-Sleep nach festgelegter Zeit zu beenden.
Ich habe festgestellt, dass der Zähler gerade im Sleep nicht lief.
1
  ASSR |= (1<<AS2);
2
  /*
3
  ... Wartezeit bis Quarz läuft
4
  */
5
  SCCSR = 0;
6

7
  SCCNTHH = 0;
8
  SCCNTHL = 0;
9
  SCCNTLH = 0;
10
  SCCNTLL = 0;  /*zähler auf 0*/
11

12
  SCOCR1HH = 0;
13
  SCOCR1HL = 0x05;
14
  SCOCR1LH = 0;
15
  SCOCR1LL = 0; /*Compareregister*/
16

17
  SCCR1 = (1<<SCBTSM); /*Symbol Counter Beacon Timestamp Mask Register*/
18
                       /*This bit must be set to disable automatic beacon timestamping.*/
19
  SCIRQM = (1<<IRQMCP1); /*Symbol Counter Compare Match 1 IRQ enable*/
20
  SCCR0 = ((1<<SCEN)|(1<<SCCKSEL)); /*Symbol Counter enable + Symbol Counter Clock Source select */
21
  PRR0 = 0xFF;
22
  PRR1 = 0xFF;
23
  SMCR = 0x05;   /*Power Down + Sleep Enable*/
24
  asm volatile(" sleep");
Wenn ich anstelle des 'asm volatile(" sleep")' ein 'while(1)' einbaue 
läuft der Symbolcounter und nach meiner eingestellten Zeit wird die ISR 
augerufen.
Wenn ich sleep verwende geht der 32KHz Quarz aus und der Zähler steht. 
Durch ausprobieren bin ich darauf gekommen, dass SCCKSEL das Problem 
ist. Wenn dieses Bit nicht gesetzt wird, läuft der Quarz und der Zähler.
Das widerspricht aber scheinbar der Doku:

"With this bit the clock source for the symbol counter can be selected. 
If the bit is one, the RTC clock from TOSC1 is selected, otherwise the 
symbol counter operates with the clock from XTAL1. During transceiver 
sleep modes the clock falls back to the RTC clock source, regardless of 
the selected clock. After wakeup, it switches back to the previosly 
selected clock source."

Was soll das?
OP #4168299
Lesenswert?
• ▲
▼
Habe jetzt festgestellt, dass der 32kHz Clock läuft, solange der 
Controller nicht im Sleep ist.
Im Moment wenn der Sleep-Befehl ausgeführt wird, geht der Quarz aus. 
Wenn er aus dem Sleep erweacht, läuft der Quarz wieder an.
Das AS2-Bit ist gesetzt.

Wieso tut der sowas?

Power-down Mode: "Only an External Reset, a Watchdog Reset, a Brown-out 
Reset, 2-wire Serial Interface address match, an external level 
interrupt on INT7:4, an external interrupt on INT3:0, a pin change 
interrupt, or a symbol counter
interrupt can wake up the MCU. This sleep mode basically halts all 
generated clocks, allowing operation of asynchronous modules only."

Lese ich das richtig? Asynchronous Mode ist doch der 32kHz?

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.