Forum: Mikrocontroller und Digitale Elektronik Atxmega128A4: PLL geht nur mit dem 2 MHz RC


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von M. K. (sylaina)


Bewertung
0 lesenswert
nicht lesenswert
Der Thread-Titel beschreibt ziemlich genau mein Problem grade. Da ich 
mit Atxmegas praktisch keine Erfahrung habe, erhoffe ich mir hier Rat.

Mein Code bisher:
1
int main(void)
2
{
3
    setUpAvr();
4
    
5
    for(;;){
6
        /* insert your main loop code here */
7
        // Pin toggeln um zu sehen ob der Atmega angelaufen ist
8
        // mit Oszi ueberprueft
9
        PORTB.OUTTGL = (1 << PIN1);
10
    }
11
    return 0;   /* never reached */
12
}
13
void setUpAvr(void){
14
    /* insert your hardware initialization here */
15
    OSC.PLLCTRL = OSC_PLLSRC_RC32M_gc | 0x01;
16
    OSC.CTRL |= OSC_PLLEN_bm;
17
    while (!(OSC.STATUS & OSC_PLLRDY_bm));
18
    CCP = CCP_IOREG_gc;
19
    CLK.CTRL = CLK_SCLKSEL_PLL_gc;
20
21
    PORTB.DIR |= (1 << PIN1);
22
}
Und genau der Code läuft nicht.

Ersetze ich
1
OSC.PLLCTRL = OSC_PLLSRC_RC32M_gc | 0x01;
gegen
1
OSC.PLLCTRL = OSC_PLLSRC_RC2M_gc | 0x10;
läuft obiger Code.

Intention ist, dass ich einen externen 14,7456 MHz Quarz am Atxmega habe 
und diesen mittels PLL verdreifachen will. Auch das geht nicht. Dass der 
Quarz aber ansich geht habe ich schon geprüft indem ich nicht die PLL 
als Taktquelle wähle sondern nur den Quarz:
1
void setUpAvr(void){
2
    /* insert your hardware initialization here */
3
    OSC_XOSCCTRL = OSC_XOSCSEL_XTAL_16KCLK_gc | OSC_FRQRANGE_12TO16_gc;
4
    OSC.CTRL |= OSC_XOSCEN_bm;
5
    while (!(OSC.STATUS & OSC_XOSCRDY_bm));
6
    CCP = CCP_IOREG_gc;
7
    CLK.CTRL = CLK_SCLKSEL_XOSC_gc;
8
9
    PORTB.DIR |= (1 << PIN1);
10
}
Mit diesem Code läuft der Atxmega. Auch wenn ich so als Taktquelle den 
32 MHz RC wähle läuft der Atxmega. Aber warum geht das mit der PLL nicht 
bzw. warum geht das mit PLL nur mit dem 2 MHz RC? Ich hab da sicher noch 
was falsch drin, nur was? Ich sehe es grade nicht wirklich, vielleicht 
kann mir hier jemand helfen.

von Bastian W. (jackfrost)


Bewertung
1 lesenswert
nicht lesenswert
Hi,

du hast den 32 MHz Osc. nicht aktiviert. Den musst du erst aktivieren 
wenn dann mit der PLL was machen willst.

Das nutze ich bei einem Atxmega32e5 für dein 32 MHz Osc mit der PLL
1
void Clock_Init(void)
2
{
3
  //Interner 2MHz Oszi
4
  OSC.XOSCCTRL =  OSC_X32KLPM_bm | OSC_XOSCSEL1_bm;  // 32 kHz Quarz settings.
5
  OSC.CTRL = OSC_RC32MEN_bm  | OSC_XOSCEN_bm;
6
  // Warten bis Oszillator stabil ist
7
  while ((OSC.STATUS & OSC_RC32MEN_bm) == 0);
8
  //while ((OSC.STATUS & OSC_XOSCEN_bm) == 0);
9
  
10
  // I/O Protection
11
  CCP = CCP_IOREG_gc;
12
  // Prescaler
13
  CLK.PSCTRL = CLK_Prescaler;
14
  // PLL Sorce und PLL Faktor
15
  OSC.PLLCTRL = OSC_PLLSRC_RC32M_gc | (PLL_Faktor << OSC_PLLFAC_gp);
16
  // PLL enable
17
  OSC.CTRL = OSC_PLLEN_bm ;
18
  while ((OSC.STATUS & OSC_PLLRDY_bm) == 0);
19
  // I/O Protection
20
  CCP = CCP_IOREG_gc;
21
  //System Clock selection
22
  CLK.CTRL = CLK_SCLKSEL_PLL_gc;
23
  // DFLL ein (Auto Kalibrierung)
24
  //DFLLRC32M.CTRL = DFLL_ENABLE_bm;
25
  
26
}

Gruß JackFrost

: Bearbeitet durch User
von M. K. (sylaina)


Bewertung
0 lesenswert
nicht lesenswert
Ja...also jetzt wo du es sagt...oh man, ich mach Feierabend...danke fürs 
Brett-vorm-Kopf-Einschlagen...klar, ich hatte ja den Oszilator gar nicht 
eingeschaltet...

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]
  • [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.