[an error occurred while processing this directive]
Если интересно, вот сама функция (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено =NIK= 08 ноября 2006 г. 09:45
В ответ на: Это для функции Set_rate_in_Hz() для модуля SSP (LPC2138) (+) отправлено =NIK= 08 ноября 2006 г. 09:43

inline uint16 Set_rate_in_Hz(const uint16 rate)
{
//f=F_PCLK_HZ/(CPSDVSR*(SCR+1))
//CPSDVSR*[SCR+1] = F_PCLK_HZ/f

//Получаем множетели...
uint8 mux1 = Get_greatest_divisor(F_PCLK_HZ/rate);
uint16 mux2 = ((F_PCLK_HZ/rate)/mux1);
if(mux2 > 0xFF)
{return 0;};

// Ищем четный...
if(!(mux1 & 0x01))
{// mux1 - четный
CPSR.CPSDVSR = mux1;
CR0.SCR = mux2-1;
}
else
{
if(!(mux2 & 0x01))
{// mux2 - четный
CPSR.CPSDVSR = mux2;
CR0.SCR = mux1-1;
}
else
{// нет четных
return 0;
}
}

// Проверка...
if(CR1.MS)
{// Master...
if(CPSR.CPSDVSR < 12)
{return 0;} // Недопустимое значение CPSDVSR
}
else
{// Slave...
if(CPSR.CPSDVSR < 2)
{return 0;} // Недопустимое значение CPSDVSR
}

uint16 temp1 = (CR0.SCR+1);
temp1 *= CPSR.CPSDVSR;
return F_PCLK_HZ/temp1;
}

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 
URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание