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

 
 
> PWM в AT91SAM7S меняется полярность, errata читал, не помогло =(((
overloaded
сообщение Nov 19 2009, 16:14
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 17-10-07
Из: Киев
Пользователь №: 31 422



Рэндомным образом меняется полярность ШИМа при смене частоты(смена при заходе в условие "if( ((pwm[chn_num] & 0xFFFF0000)>>16)!= PWM_period[chn_num] )//смена периода ШИМ"). Причем если становится отладчиком на брейкпоинт "<- ТУТ БРЕЙКПОИНТ " (см. код) то вроде и не меняется.. Или просто так попадало.. Кстати после первого ENABLE полярность всегда правильная. Проверяю на одном канале. У меня варианты закончились.. Заранее спасибо всем откликнувшимся =)
Код
  unsigned int val;
  unsigned int per_update;  
  
  //ch0
  if( ((pwm[chn_num] & 0xFFFF0000)>>16)!= PWM_period[chn_num] )//смена периода ШИМ
  {    
    PWM_period[chn_num] = ((pwm[chn_num] & 0xFFFF0000)>>16);  
    
    *AT91C_PWMC_DIS = (1<<chn_num);//disable chn
    
    if(PWM_period[chn_num]==0)      
      return;
    
    per_update = PWM_period[chn_num] * 50;// Hz
    
    if(per_update <= 2500)
    {
        per_update = 48000000 / 16 / per_update;
        *AT91C_PWMC_CH0_CMR = 0x04;//MCK/16
    }
    else
    {
        per_update = 48000000 / per_update;
        *AT91C_PWMC_CH0_CMR = 0;//MCK/1
    }
    
    if(per_update > 1)//errata
    {
      *AT91C_PWMC_CH0_CMR|= (1<<9);//CPOL = 1
      *AT91C_PWMC_CH0_CPRDR = per_update;
      *AT91C_PWMC_CH0_CDTYR = 2;          

      *AT91C_PWMC_ENA = (1<<chn_num);//enable chn         <- ТУТ БРЕЙКПОИНТ  !!!!
    }
  }
  else
    if(*AT91C_PWMC_SR & (1<<chn_num))    
    {  
          val = pwm[chn_num] & 0xFFFF;        
                  
          if(val < 2)//errata
            val = 2;

        while(*AT91C_PWMC_CH0_CCNTR < 2);//errata
        *AT91C_PWMC_CH0_CUPDR = val;
    }
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 00:48
Рейтинг@Mail.ru


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