Testing documentation

Dependencies:   mbed

Committer:
sgrove
Date:
Fri Aug 27 20:58:54 2010 +0000
Revision:
0:116ff1f909ba
Child:
1:e835875b325c

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sgrove 0:116ff1f909ba 1 #include "mbed.h"
sgrove 0:116ff1f909ba 2
sgrove 0:116ff1f909ba 3 DigitalOut myled(LED1);
sgrove 0:116ff1f909ba 4
sgrove 0:116ff1f909ba 5 void DisconnectPLL0(){
sgrove 0:116ff1f909ba 6 // good practice to disable before feeding
sgrove 0:116ff1f909ba 7 __disable_irq();
sgrove 0:116ff1f909ba 8 // disconnect
sgrove 0:116ff1f909ba 9 LPC_SC->PLL0CON = 0x1;
sgrove 0:116ff1f909ba 10 LPC_SC->PLL0FEED = 0xAA;
sgrove 0:116ff1f909ba 11 LPC_SC->PLL0FEED = 0x55;
sgrove 0:116ff1f909ba 12 while (LPC_SC->PLL0STAT&(1<<25));
sgrove 0:116ff1f909ba 13 // power down
sgrove 0:116ff1f909ba 14 LPC_SC->PLL0CON = 0x0;
sgrove 0:116ff1f909ba 15 LPC_SC->PLL0FEED = 0xAA;
sgrove 0:116ff1f909ba 16 LPC_SC->PLL0FEED = 0x55;
sgrove 0:116ff1f909ba 17 while (LPC_SC->PLL0STAT&(1<<24));
sgrove 0:116ff1f909ba 18 // This is the default flash read/write setting for IRC
sgrove 0:116ff1f909ba 19 LPC_SC->FLASHCFG &= 0x0fff;
sgrove 0:116ff1f909ba 20 LPC_SC->FLASHCFG |= 0x5000;
sgrove 0:116ff1f909ba 21 LPC_SC->CCLKCFG = 0x0;
sgrove 0:116ff1f909ba 22 // Select the IRC as clk
sgrove 0:116ff1f909ba 23 LPC_SC->CLKSRCSEL = 0x00;
sgrove 0:116ff1f909ba 24 // not using XTAL anymore
sgrove 0:116ff1f909ba 25 LPC_SC->SCS = 0x00;
sgrove 0:116ff1f909ba 26 }
sgrove 0:116ff1f909ba 27
sgrove 0:116ff1f909ba 28 // IAP address
sgrove 0:116ff1f909ba 29 #define IAP_LOCATION 0x1FFF1FF1
sgrove 0:116ff1f909ba 30 // variable for command and result
sgrove 0:116ff1f909ba 31 unsigned int command[5];
sgrove 0:116ff1f909ba 32 unsigned int result[5];
sgrove 0:116ff1f909ba 33 // function pointer with 2 parameters
sgrove 0:116ff1f909ba 34 typedef void (*IAP)(unsigned int[5],unsigned int [5]);
sgrove 0:116ff1f909ba 35 // declaration of the fptr.
sgrove 0:116ff1f909ba 36 IAP iap_entry = (IAP)IAP_LOCATION;
sgrove 0:116ff1f909ba 37
sgrove 0:116ff1f909ba 38 int main(){
sgrove 0:116ff1f909ba 39
sgrove 0:116ff1f909ba 40 // change clk to 4MHz - see below
sgrove 0:116ff1f909ba 41 DisconnectPLL0();
sgrove 0:116ff1f909ba 42 // stop all ISRs
sgrove 0:116ff1f909ba 43 __disable_irq();
sgrove 0:116ff1f909ba 44 //make IAP call
sgrove 0:116ff1f909ba 45 command[0] = 57;
sgrove 0:116ff1f909ba 46 iap_entry(command, result);
sgrove 0:116ff1f909ba 47
sgrove 0:116ff1f909ba 48 // This should never get executed
sgrove 0:116ff1f909ba 49 while(1) {
sgrove 0:116ff1f909ba 50 myled = 1;
sgrove 0:116ff1f909ba 51 wait(0.2);
sgrove 0:116ff1f909ba 52 myled = 0;
sgrove 0:116ff1f909ba 53 wait(0.2);
sgrove 0:116ff1f909ba 54 }
sgrove 0:116ff1f909ba 55 }