Report
4 years, 9 months ago.

pll configuration pls any one suggest me a solution

#include "mbed.h"
//#define SYSCLK 96000000
#define EXTCLK 12000000
#define PLLCLK 288000000
#define PLLMULT (PLLCLK/2/EXTCLK)-1
Serial pc(USBTX,USBRX);
void initclock()
{
      pc.printf("in main\n");
      //LPC_SC->CLKSRCSEL =(1<<0); // initize main oscillator
                               
      pc.printf("BREAK 1\n");
      LPC_SC->PLL0CON&=~(1<<1);// /////////////DISCONNECT///////////////
      
      //FED SEQ
      LPC_SC->PLL0FEED =0xAA;
      LPC_SC->PLL0FEED =0x55;
     // while ((LPC_SC->PLL0STAT & (1<<25)) != 0x00);
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////    
      pc.printf("BREAK 2\n");                  /////////////disable previous pll///////////////
      LPC_SC->PLL0CON&=~(1<<0);              /////////DISABLE PLL0///////////////
      //FED SEQ
      LPC_SC->PLL0FEED =0xAA;
      LPC_SC->PLL0FEED =0x55;
      //while((LPC_SC->PLL0STAT &(1<<24))!=0x00);
      ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       LPC_SC->CCLKCFG|=0;
       ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       LPC_SC->CLKSRCSEL|=(1<<0); // initize main oscillator
       ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        
      pc.printf("BREAK 3\n");             
      LPC_SC->PLL0CFG = PLLMULT;        //CCLKCFG VALUE ARE SUBSTITUTED//
      //FED SEQ
      LPC_SC->PLL0FEED =0xAA;
      LPC_SC->PLL0FEED =0x55;
                                 //////////////set enable/////////////
    pc.printf("BREAK4\n");
    LPC_SC->PLL0CON|=(1<<0);
    LPC_SC->PLL0FEED =0xAA;
    LPC_SC->PLL0FEED =0x55;
    //while((LPC_SC->PLL0STAT &(1<<24))==0x00);
  
     pc.printf("BREAK 5\n");
     LPC_SC->CCLKCFG |= (2<<0); /// 96Mhz setting divided by 3 (288/3);
      LPC_SC->PLL0FEED =0xAA;
      LPC_SC->PLL0FEED =0x55; ///setting dsiv value and checking if its locked to desired frequency;
     while(LPC_SC->PLL0STAT &(1<<26)==0x00);
   
                              /////////////////////////CONNECT PLL0/////////////////////////
         pc.printf("BREAK6\n");
         LPC_SC->PLL0CON|=(1<<1);
         LPC_SC->PLL0FEED =0xAA;
         LPC_SC->PLL0FEED =0x55;
        while(LPC_SC->PLL0STAT &(1<<25)==0x00);
      ///  SystemCoreClockUpdate();
                 
               }
               
                 ///////////PRINTING D VALUE////////////////////////
         int main()
         {
             initclock();
            // wait(1);
         pc.printf("HI\n");
         pc.printf("PLL0CON =0x%08X\n",LPC_SC->PLL0CON);
         pc.printf("PLL0STAT=0x%08X\n",LPC_SC->PLL0STAT);
         pc.printf("PLLCLK =0x%08X\n",LPC_SC->CCLKCFG);
         int value=LPC_SC->PLL0STAT&0x7FFF;
         pc.printf("value %d\n",value);
         ////SystemCoreClockUpdate();
         pc.printf("%d",SystemCoreClock);
  }

i have two challenges here hi i am trying to print the message in the initclock(); but the messages areNOT gettin printed but in the mainloop i get the values printed, and systemcoreclock at 96000000Mhz but if i change CCLKDIV (ie CCLKCFG to 3 and other values ill get junk values ,) can any one suggest me what could be done...

Comment on this question
Be the first to answer this question.

Assigned to Ashok K 4 years, 9 months ago.

This means that the question has been accepted and is being worked on.

To post an answer, please log in.