Atmel ASF rtc example resetted bei CPU-Reset

Gast #4118843
Lesenswert?
• ▲
▼
Hab hiern Arduino Due auf dem ich das Atmel ASF rtc example teste. Bei 
jedem CPU-Reset wir die Echtzeituhr auf Null gestellt.
Das Datenblatt sagt:
16.4.1 Power Management
The Real-time Clock is continuously clocked at 32768 Hz. The Power 
Management Controller has no effect on RTC behavior.

Ich habe den Code mal aufs Wesentlichste heruntergebrochen. Nirgends 
wird - absichtlich oder unabsichtlich in die Register der RTC 
geschrieben, d.h. der Fehler kommt möglicherweise von dem Startup-Code. 
Leider ist er mit 10kB zum Fehlersuchen ziemlich groß - wobei ohnehin 
nicht sicher ist ob es an den Registereinträgen liegt - vieleicht fehlt 
ja auch ein Eintrag. Was macht man in so nem Fall am besten?
1
/**
2
 * \brief Display the user interface on the terminal.
3
 */
4
static void refresh_display(void)
5
{
6
// Zeigt nach jedem CPU-Reset 01.01.2007 00:00:00 an.
7
 
8
  uint32_t ul_hour, ul_minute, ul_second;
9
  uint32_t ul_year, ul_month, ul_day, ul_week;
10

11
  if (gs_ul_state != STATE_MENU) {
12
    /* Not in menu display mode, in set mode. */
13
  } else {
14
    /* Retrieve date and time */
15
    rtc_get_time(RTC, &ul_hour, &ul_minute, &ul_second);
16
    rtc_get_date(RTC, &ul_year, &ul_month, &ul_day, &ul_week);
17

18
    /* Display */
19
    if (!gs_ul_menu_shown) {
20
      puts("\n\rMenu:\n\r"
21
          "  t - Set time\n\r"
22
          "  d - Set date\n\r"
23
          "  i - Set time alarm\n\r"
24
          "  m - Set date alarm\r");
25
#if ((SAM3S8) || (SAM3SD8) || (SAM4S) || (SAM4C) || (SAM4CP) || (SAM4CM))
26
      puts("  w - Generate Waveform\r");
27
#endif
28
      if (gs_ul_alarm_triggered) {
29
        puts("  c - Clear alarm notification\r");
30
      }
31

32
      printf("\n\r");
33

34
      gs_ul_menu_shown = 1;
35
    }
36

37
    /* Update current date and time */
38
    puts("\r");
39
    printf(" [Time/Date: %02u:%02u:%02u, %02u/%02u/%04u %s ][Alarm status:%s]",
40
      (unsigned int)ul_hour,
41
      (unsigned int)ul_minute,
42
      (unsigned int)ul_second,
43
      (unsigned int)ul_month,
44
      (unsigned int)ul_day,
45
      (unsigned int)ul_year,
46
      gs_uc_day_names[ul_week-1],
47
      gs_ul_alarm_triggered ? "Triggered!" : "");
48
  }
49
}
50

51

52
/**
53
 * \brief Application entry point for RTC example.
54
 *
55
 * \return Unused (ANSI-C compatibility).
56
 */
57
int main(void)
58
{
59
  uint8_t uc_key;
60

61
  /* Initialize the SAM system */
62
  sysclk_init();
63
  board_init();
64

65
  /* Initialize the console uart */
66
  configure_console();
67

68
  /* Output example information */
69
  puts(STRING_HEADER); // "RTC example..."
70

71
  refresh_display();
72
  while (1);           //DEBUG
73
}

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.