mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Arduino (ATMEGA4809) wacht nicht mehr auf aus Power Down Sleep Mode


Autor: intInt (Gast)
Datum:
Angehängte Dateien:

Bewertung
-1 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe ein Problem mit dem ATMEGA4809 bei dem ich einfach nicht mehr 
weiterkomme. Nachdem ich den Arduino nämlich in den 
Power-Down-Sleep-Mode versetze bekomme ich ihn nicht mehr wach. Ich habe 
es mit einem Periodic Interrupt Timer versucht (laut Datasheet), jedoch 
scheint es ihn beim "Clock-Switch" aufzuhängen.

Weiß hier jemand weiter bzw. eine Idee wie ich den Atmega4809 wach 
bekomme. Anbei habe ich noch einen Auszug vom Datasheet angehängt.
CPU_CCP = 0xD8; //unlock...
  CLKCTRL_OSC20MCTRLA = 00000010; //Aktiv bleiben in Standby
  CPU_CCP = 0xD8; //unlock...
  CLKCTRL_OSC32KCTRLA = 00000010; //Aktiv bleiben in Standby
  CPU_CCP = 0xD8; // unlock
  CLKCTRL_MCLKCTRLA = 00000001; //Source Clock wechseln -> Hier blinkt die LED und es scheint zu einem Deadlock zu kommen...
  
  RTC.CLKSEL = RTC.CLKSEL & 11111100;
  RTC.PITINTCTRL = RTC.PITINTCTRL | 00000001;
  while (!(RTC.STATUS == 0) && !(RTC.PITSTATUS == 0)){
      Serial.println("...");
  }
  RTC.PITCTRLA = 01110001;
  delay(500);
  Serial.println("PIT active...and going to sleep");
  
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  sleep_enable();
  sleep_mode();
  sleep_disable();



Danke schon einmal und LG
Markus

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach MCLKCTRLA change auf stable CLKCTRL.MCLKSTATUS warten?
Dann sei()?

: Bearbeitet durch User
Autor: intInt (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Timmo,

danke für deine Antwort!

Er steckt nur leider dennoch bei
CLKCTRL_MCLKCTRLA = 00000001;

fest. Es scheint fast so als würde eine Konfiguration fehlen. Ein 
Clock-Wechsel sollte jedoch laut Datasheet auch im normalen Betrieb 
möglich sein:

"All internal oscillators can be used as the main clock source for 
CLK_MAIN. The main clock source is selectable from software, and can be 
safely changed during normal operation."

Nur so wie ich das verstanden habe muss ich einen Main Clock Switch 
machen, da im "Power Down"-Modus nur der "32 KHz ULP Int. Oscillator" 
funktioniert (Anbei das Schaltbild dazu).

Ich bin wirklich für jeden weiteren Hinweis dankbar!

LG

Autor: P. M. (mikro23)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
intInt schrieb:
> CLKCTRL_OSC32KCTRLA = 00000010;

> RTC.PITCTRLA = 01110001;

Zahlen, die mit 0 beginnen, werden in C üblicherweise als Oktalzahlen 
interpretiert...

Autor: Thomas E. (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
intInt schrieb:
> Er steckt nur leider dennoch bei
> CLKCTRL_MCLKCTRLA = 00000001;

Nur weil die Zahl nur aus Nullen und Einsen besteht, wird der Compiler 
sie nicht als Dualzahl ansehen. Oder was soll er davon
CLKCTRL_MCLKCTRLA = 10000000;
halten?

Abgesehen davon, daß, wie schon gesagt wurde, eine führende Null eine 
Oktalzahl kennzeichnet, muß eine Dualzahl auch als solche gekennzeichnet 
sein:
CLKCTRL_MCLKCTRLA = 0b00000001;

Sonst wird das als Oktalzahl gelesen, mit einer Eins vorn als 
Dezimalzahl.

Autor: intInt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke euch für die Antworten!

das habe ich auch bereits ausgebessert, nur leider ohne Erfolg...

LG

Autor: intInt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...ich habe "0b" anfangs weggelassen, weil im Datasheet folgendes steht:
'0101' Binary numbers are given without prefix if
unambiguous

das habe ich dann etwas falsch interpretiert :-)

Autor: intInt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat noch wer Ideen?

Danke und LG

Autor: intInt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
https://www.avrfreaks.net/forum/tinyavr-1-series-071ua-rtc-running-how

...hier hat offensichtlich wer das gleiche Problem -_-
Nie mehr Atmega 4809...

Autor: void (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
intInt schrieb:
> ...hier hat offensichtlich wer das gleiche Problem -_-

Hätte gedacht dort hat jemand die Lösung.
Zitat:
"UPDATE: Test code with periodic wake every 10 sec using RTC:"

Autor: intInt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schon versucht, nur leider wacht er immer noch nicht auf...

Danke euch für die Hilfe und Unterstützung. Ich werde den Arduino 
einfach per DC-Anschluss über Strom versorgen.

LG

Autor: c-hater (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
intInt schrieb:

> Schon versucht, nur leider wacht er immer noch nicht auf...
>
> Danke euch für die Hilfe und Unterstützung. Ich werde den Arduino
> einfach per DC-Anschluss über Strom versorgen.

Kein weiterer Kommentar erforderlich, die Arduino-Userschaft hat wieder 
mal ihre eigenen, absolut weltbewegenden Standards zum kompetenten 
Umgang mit digitaler Technik der doch (heutzutage) ziemlich untersten 
Komplexitätskategorie gesetzt...

LOL

Autor: Juser (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Leider gibt es hier zu viele Bummler, die wenig Ahnung und viel Zeit für 
unkonstruktive Posts haben...

Autor: M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
intInt schrieb:
> Nur so wie ich das verstanden habe muss ich einen Main Clock Switch
> machen, da im "Power Down"-Modus nur der "32 KHz ULP Int. Oscillator"
> funktioniert (Anbei das Schaltbild dazu).

Das schon, aber nur für BOD und WDT.
Eine Taktumschaltung ist aber ansonsten nicht erforderlich!

Autor: Peter D. (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
intInt schrieb:
> Es scheint fast so als würde eine Konfiguration fehlen.

Ich kenne das von den alten ATmega so, daß der T2 mit externem 
Uhrenquarz synchronisiert werden muß. Er hat dazu zusätzliche temporäre 
Register. Der CPU-Takt schreibt ins temporäre Register und die 32kHz 
übernehmen dann in den Timer. D.h. nach Änderungen muß das entsprechende 
Busy-Bit abgefragt werden, bis die Änderung auch wirklich übernommen 
wurde.

: Bearbeitet durch User
Autor: M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es bedarf hier weder einer neuen Taktquelle noch eines Quarzes.

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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.