SAM4E Backup Mode / Low Energie

#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?
#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

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