mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Automatische Takt Kalibrierung ATXmega256A3B


Autor: ---- (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

ich versuche die automatische Takt Kalibrierung eines ATXmega256A3(B) zu 
aktivieren, ohne Erfolg. Im Errata steht, dass man beide Oszillatoren 
und beide DFLL Aktivieren muss. Der Wert in CALA bleibt nach dem 
aktivieren aber unverändert, es wird nicht geregelt.

Habe die Aktivierung folgendermassen implementiert:
  CLKSYS_Enable(OSC_RC32MEN_bm);
  while (CLKSYS_IsReady(OSC_RC32MRDY_bm) == 0);
  CLKSYS_Enable(OSC_RC2MEN_bm);
  while (CLKSYS_IsReady(OSC_RC2MRDY_bm) == 0);
  CLKSYS_AutoCalibration_Enable(OSC_RC32MCREF_bm, 0);
  CLKSYS_AutoCalibration_Enable(OSC_RC2MCREF_bm, 0);

Hat jemand eine Idee, wieso sich die kalibrierung nicht aktivieren 
lässt?

Gruss

Autor: Hagen Re (hagen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Im Errata steht, dass man beide Oszillatoren
>und beide DFLL Aktivieren muss. Der Wert in CALA bleibt nach dem
>aktivieren aber unverändert, es wird nicht geregelt.

Und worauf sollen die DFLLs regeln ? Also auf welche Taktreferenz regeln 
sie ein ?

Gruß Hagen

    // - 32MHz CLK_CPU, 64MHz CLK_PERx2, 128MHz CLK_PERx4
    // - 32MHz RC-Osc füttert PLL 
    // - 2MHz+32MHz Osc eingeschaltet
    // - 32KHz RTC Quartz eingeschaltet im Low Power Mode
    // - beide DFLLs eingeschaltet
    // externen 32KHz Quarz einschalten
    OSC.XOSCCTRL = OSC_XOSCSEL_32KHz_gc;// | OSC_X32KLPM_bm;
    // PLL Source = 32MHz interner RC-Osc / 4 * 16 = 128 MHz  
    OSC.PLLCTRL = OSC_PLLSRC_RC32M_gc | (16 << OSC_PLLFAC_gp);
    // CLK-Prescaler A/1 B/2 C/2 -> 128MHz -> 64MHz -> 32MHz
    CCP_Write(&CLK.PSCTRL, CLK_PSADIV_1_gc | CLK_PSBCDIV_2_2_gc);
    // 32MHz, 2MHz, ext. 32KHz RTC und PLL aktivieren
    OSC.CTRL = OSC_RC32MEN_bm | OSC_RC2MEN_bm | OSC_XOSCEN_bm | OSC_PLLEN_bm;
    while ((OSC.STATUS & (OSC_RC32MRDY_bm | OSC_RC2MRDY_bm | OSC_XOSCRDY_bm | OSC_PLLRDY_bm)) != (OSC_RC32MRDY_bm | OSC_RC2MRDY_bm | OSC_XOSCRDY_bm | OSC_PLLRDY_bm)) ;
    // PLL nun als Systemclock auswählen
    CCP_Write(&CLK.CTRL, CLK_SCLKSEL_PLL_gc);
    // DFLL Kalibration vom 2MHz und 32MHz RC-Osc mit externem 32KHz Uhrenquarz   
    OSC.DFLLCTRL = OSC_RC32MCREF_bm | OSC_RC2MCREF_bm;
    DFLLRC2M.CTRL = DFLL_ENABLE_bm;
    DFLLRC32M.CTRL = DFLL_ENABLE_bm;
    // nun CLK Einstellungen schützen
    CCP_Write(&CLK.LOCK, CLK_LOCK_bm); 

Autor: Hagen Re (hagen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Übrigens, ein zB. externer 16MHz Quarz als Taktbasis ist weitaus 
stabiler als die DFLLs und ein externer 32kHz Uhrenquarz. Soweit meine 
Ergebnisse bei meinen Experimenten. Aus meiner Sicht lohnt es sich 
meistens also nicht gezielt mit den DFLLs zu arbeiten, es sei denn man 
hat nun schon einen externen 32KHz Quarz für andere Aufgaben und nutzt 
nebenbei noch die DFLLs.

Gruß Hagen

Autor: ---- (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Hagen,

die DFFLs sollen auf den externen 32 kHz Quarz regeln. Dieser wird an 
einer anderen Stelle, beim aktivieren der RTC, eingeschaltet. Die 
Anforderung an den 32 MHz Takt sind nicht besonders gross ~0.5%. Ich 
werden deinen Code am Montag testen.

Gruss

Autor: ---- (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habe es mit deinem Beispiel zum laufen gekriegt. Es reicht anscheinend 
nicht, wenn der externe 32k Oszillator über die RTC eingeschaltet wird, 
sondern muss für die Verwendung mit den DFFLs explizit eingeschaltet 
werden.

Gruss

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.
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.

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