SAM4E Backup Mode / Low Energie

OP #5743322
Lesenswert?
• ▲
▼
Hallo,

ich bin gerade am herausfinden wie ich den SAM4E richtig in den Backup 
Mode bringe bzw der Stromverbrauch minimal wird. Der RTC soll mit dem 
externen 32kHz Oszillator weiterlaufen, damit die Uhrzeit erhalten 
bleibt.

Prinzipiell funktioniert der Backup Mode mit folgenden Code:
1
  /* Enable the PIO for wake-up */
2
  supc_set_wakeup_inputs(SUPC, SUPC_WUIR_WKUPEN7_ENABLE, SUPC_WUIR_WKUPT7_LOW);
3

4
  supc_set_wakeup_mode(SUPC, SUPC_WUMR_FWUPDBC_512_SCLK);
5

6
  /* Switch MCK to slow clock  */
7
  pmc_switch_mck_to_sclk(PMC_MCKR_PRES_CLK_1);
8

9
  /* Disable unused clock to save power */
10
  pmc_osc_disable_xtal(0);
11
  pmc_disable_pllack();
12

13
  /* Enter into backup mode */
14
  pmc_enable_backupmode();

VDDIN und alle VDDIO werden weiterhin mit 3V3 versorgt wie es im 
Datenblatt bei der Schaltung für die Strommessung ausgeführt ist.

http://ww1.microchip.com/downloads/en/devicedoc/atmel-11157-32-bit-cortex-m4-microcontroller-sam4e16-sam4e8_datasheet.pdf#G36.1531751

Folgend ist noch ein Link zu einer Application Note für Low Power.
http://ww1.microchip.com/downloads/en/AppNotes/Atmel-42142-SAM-AT03258-Using-Low-Power-Mode-in-SAM4E-Microcontroller_Application-Note.pdf

Leider konnte ich aber nirgends herausfinden wie die Pins geschalten 
werden sollen.
Ich habe zwei Arten, für andere µC) gefunden:
1) Pullup-Widerstand deaktivieren, Ausgang aktivieren und auf low 
schalten.
2) Pullup-Widerstand aktivieren, Eingang aktivieren.

Wie macht Ihr dies?
Für alle Pins oder nur für die verwendeten?

Was kann ich noch beachten?
#5743349
Lesenswert?
• ▲
▼
Schau dir mal das Beispiel-Projekt für Low-Power an, z.B. für das 
SAM4E-XPRO Board:
Device Family "SAM4E" auswählen und im Suchfeld nur "power" eingeben.

Da findest du in der main() den Aufruf von init_chip() und darin den 
Aufruf von init_specific_board().

Darin ist wohl das was du suchst, wenn ich dich richtig verstanden habe.
OP #5744812
Lesenswert?
• ▲
▼
Adam P. schrieb:
> Da findest du in der main() den Aufruf von init_chip() und darin den
> Aufruf von init_specific_board().

Danke für den Hinweis!

Was ich aber da gar nicht verstehe ist, warum die Einstellungen für low 
power in init_chip() passieren, also bevor das Hauptporgramm ausgeführt 
wird. Im Hauptprogramm wird dann wieder der Clock und die 
dementsprechenden Pins verändert.
Warum wird hier nicht in der Funktion test_backup_mode() pins, clock, 
... so eingestellt dass eine Low-Power consumption erfolgt?
#5744829
Lesenswert?
• ▲
▼
Godi S. schrieb:
> Was ich aber da gar nicht verstehe ist, warum die Einstellungen für low
> power in init_chip() passieren, also bevor das Hauptporgramm ausgeführt
> wird.

Die setzen wohl am Anfang erstmal alles auf Low-Power (default).

In der Funktion init_specific_board(void) siehst du ja dann ganz unten
1
  /* Enable the PMC clocks of push button for wakeup */
2
  pmc_enable_periph_clk(ID_PIOE);
3
  pio_handler_set_priority(PIOE, PIOE_IRQn, IRQ_PRIOR_PIO);

Dort wird der eine Pin wieder aktiviert, sonst würdest dich ja so 
gesehen aussperren.

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.