www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LPC1766 frage zur Frequenz


Important 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.
Autor: Christian (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo zusammen,

ich Arbeite gerade an einem LPC1766-STK Board und habe eine Frage zur 
eingestellten Frequenz.
void InitClock(void)
{
  // 1. Init OSC
  SCS_bit.OSCRANGE = 0;
  SCS_bit.OSCEN = 1;
  // 2.  Wait for OSC ready
  while(!SCS_bit.OSCSTAT);
  // 3. Disconnect PLL
  PLL0CON_bit.PLLC = 0;
  PLL0FEED = 0xAA;
  PLL0FEED = 0x55;
  // 4. Disable PLL
  PLL0CON_bit.PLLE = 0;
  PLL0FEED = 0xAA;
  PLL0FEED = 0x55;
  // 5. Select source clock for PLL
  CLKSRCSEL_bit.CLKSRC = 1;   // Selects the main oscillator as a PLL clock source.
  PCLKSEL0 = PCLKSEL1 = 0x55555555;   // other peripherals kein Teiler = 50MHz
  // 6. Set PLL settings 300 MHz
  PLL0CFG_bit.MSEL = 25-1;
  PLL0CFG_bit.NSEL = 2-1;
  PLL0FEED = 0xAA;
  PLL0FEED = 0x55;
  // 7. Enable PLL
  PLL0CON_bit.PLLE = 1;
  PLL0FEED = 0xAA;
  PLL0FEED = 0x55;
  // 8. Wait for the PLL to achieve lock
  while(!PLL0STAT_bit.PLOCK);
  // 9. Set clk divider settings
  CCLKCFG   = 3-1;            // 1/3 Fpll
  // 10. Connect the PLL
  PLL0CON_bit.PLLC = 1;
  PLL0FEED = 0xAA;
  PLL0FEED = 0x55;
}

Die Frequenz der Peripherie habe ich ohne Teiler auf 50Mhz gestellt.

Aber auf welcher Herzzahl steht die normale Frequenz?
Ich verstehe zwar das ich die Frequenz mit MSEL und NSEL einstellen 
kann, aber ich verstehe bei besten Willen nicht wie...
Auf was ist sie denn im Moment eingestellt?

Ich hoffe Ihr könnt mir helfen.

Gruß

Christian

Autor: Jojo S. (jojos)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Da hilft das berühmte Datenblatt UM10360 weiter:
Fcco = (2* M * Fin) / N
Fcco = (2* 25 * Fin) / 2
Fcco = 25 * Fin
Fcpu = Fcco / 3    wg. CCLKCFG   = 3-1;

Fin ist die Quarzfrequenz, wenn auf dem Board vermutlich ein 12 MHz 
Quarz ist dann rennt die CPU mit 25 * 12 / 3 MHz = 100 MHz.

Autor: Christian (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Ok, erst einmal vielen Dank!

Vllt ist meine Denkweise auch falsch ( oder wahrscheinlich...).
Bei einer Frequenz von 100Mhz ist die Zeit für einen Vorgang dann 10ns ( 
1/100000000) oder?

Ich habe im EINT1 eine Schleife die mir einen Ausgang schalten soll.

            FIO0CLR |= (1UL<<25);             // output turn on
            for(cnt=0;cnt<0x250;cnt++)  {  }
            FIO0SET |= (1UL<<25);             // output turn off

Müsste der Ausgang dann nicht für knappe 6µs (10ns*592) eingeschaltet 
sein?

Laut Oszibild ist er nämlich ca. 100µs lang.

Autor: Jojo S. (jojos)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Eine Zeile C-Code wird ja in mehrere Zeilen Assembler übersetzt, je nach 
gewählter Optimierungsstufe auch in verschiedene. Und ein 
Maschinenbefehl kann auch mehrere Takte für die Ausführung brauchen, so 
einfach kann man also nicht rechnen.
Du kannst versuchen dich jetzt an die gewünschte Zeit anzunähern, also 
wenn die Schleife jetzt 16,7 mal zu lange dauert dann wäre die Konstante 
eher 36 (wenn man die Optimierung nicht ändert).
Aber so einen schönen Prozessoren mit vielen Timern und Interrupts in 
NOP Schleifen warten zu lassen ist eine Schande...

Autor: Jörg S. (joerg-s)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Es gab doch auch die Möglichkeit den Takt über einen Portpin nach aussen 
zu schalten. Damit lässt sich die Frequenz dann ordentlich messen :)

Autor: Lutz (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Der CMSIS ist sogar so nett, die Variable SystecmCoreClock zu liefern 
...

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




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 erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net