Что я делаю не так ?
Если делать PLL0CFG = 0x0; то несколько раз (2-3, иногда раз 10) проходит, а потом - такое впечатление что FIO0PIN не реагирует на внешний сигнал...

Код
  if(FIO0PIN & 0x0400)
       LPC_Sleep(1);
   else  
       LPC_Sleep(0);
/*...........*/
void LPC_Sleep(int OnOff)
{    if(OnOff)
    {     VPBDIV=0x00; //    PCLK = CCLK/4
          PLL0CFG = 0x0; // M = 0, P = 0 12MHz
/*                      ^^^^^^^ вот если не ноль ставить, то всё работает */
/************************************************************/
          PLL0CON = 1; //PLL eable
          PLL0FEED = 0xAA; // Feed Sequence 1
          PLL0FEED = 0x55; // Feed Sequence 2
          while (!(PLL0STAT & 0x400)); // Wait for PLL Lock
          PLL0CON = 3; // PLL Enable & Connect
          PLL0FEED = 0xAA; // Feed Sequence 1
          PLL0FEED = 0x55; // Feed Sequence 2
    } else {
         VPBDIV=0x01; // PCLK = CCLK
          PLL0CFG = 0x25; // M = 6, P = 2
          PLL0CON = 1; //PLL eable
      PLL0FEED = 0xAA; // Feed Sequence 1
          PLL0FEED = 0x55; // Feed Sequence 2
          while (!(PLL0STAT & 0x400)); // Wait for PLL Lock
          PLL0CON = 3; // PLL Enable & Connect
          PLL0FEED = 0xAA; // Feed Sequence 1
          PLL0FEED = 0x55; // Feed Sequence 2
    }
}


В тупом цикле всё работает
Код
for(;;)
{   t0 = T1TC; while(T1TC-t0<12000);
     LPC_Sleep(1);
   t0 = T1TC; while(T1TC-t0<12000);
     LPC_Sleep(0);
}


ЗЫ: кажется - догадался... - слишком быстро дрыгал снаружи ногами