реклама на сайте
подробности

 
 
> Снизить частоту до минимума
evgen2
сообщение Nov 27 2009, 08:02
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688



Что я делаю не так ?
Если делать 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);
}


ЗЫ: кажется - догадался... - слишком быстро дрыгал снаружи ногами
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 09:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01357 секунд с 7
ELECTRONIX ©2004-2016