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

 
 
 
Reply to this topicStart new topic
> Промогите с PWMC at91sam7s128, Вопрос ламера.
OsAlex
сообщение Aug 9 2006, 20:10
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 21-04-05
Пользователь №: 4 349



help.gif Помогите плз. запустить шим. Кажеться перепробовал всё. Ничего не понимаю, то счетик считает то не считает. Пин то дыгается то не дрыгается, а если и дрыгается то непонятно как.cranky.gif Ничего не понимаю.

Может чего не так делаю.

void InitPWM(void)
{
AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA,(unsigned int) PWM0,0); // PWM0 маcка пина PA0
// или AT91F_PWMC_CH2_CfgPIO(); //и так тоже нехочет

AT91F_PWMC_CfgPMC();
AT91F_PWMC_CfgChannel(AT91C_BASE_PWMC,AT91C_PWMC_CHID0,0x0000000A,3000,1000);
AT91F_PWMC_StartChannel(AT91C_BASE_PWMC,AT91C_PWMC_CHID0);
}

int main(void)
{
InitPWM();
...
zzz:
...
if( ... /*Если надо поменять сважность (примерно раз за 5сек)*/)
{
AT91F_PWMC_UpdateChannel(AT91C_BASE_PWMC,AT91C_PWMC_CHID0,PWM_Duty);
}
...
// a,b,c усылаются в ПК, ради интереса.
a=AT91C_BASE_PWMC->PWMC_CH[AT91C_PWMC_CHID0].PWMC_CPRDR;
b=AT91C_BASE_PWMC->PWMC_CH[AT91C_PWMC_CHID0].PWMC_CDTYR;
c=AT91C_BASE_PWMC->PWMC_CH[AT91C_PWMC_CHID0].PWMC_CCNTR;
...
goto zzz;
}

Что после инициализации не работает, что после.
help.gif Помогите плз.
Go to the top of the page
 
+Quote Post
skn
сообщение Aug 9 2006, 21:23
Сообщение #2


Участник
*

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



Вот мои программки, все работает.


Код
InitPWM(void)
{
    AT91F_PIO_OutputEnable(AT91C_BASE_PIOA, (1<<PWMChan));
    AT91F_PIO_A_RegisterSelection(AT91C_BASE_PIOA, (1<<PWMChan));//переключил управление портои от переферии А
    AT91F_PIO_Disable(AT91C_BASE_PIOA, (1<<PWMChan));

    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, (unsigned int)1<<AT91C_ID_PWMC);
    AT91C_BASE_PWMC->PWMC_MR = 0x10001;
    AT91F_PWMC_CfgChannel(AT91C_BASE_PWMC, PWMChan,   0x20B, Period, StartDuty);                                        //установил параметры
    
    AT91C_BASE_PWMC->PWMC_ENA = (1<<PWMChan);
    AT91F_PWMC_UpdateChannel(AT91C_BASE_PWMC, PWMChan, StartDuty);
    
}

void SetPWM(unsigned int DutyArg)
{
    AT91F_PWMC_UpdateChannel(AT91C_BASE_PWMC, PWMChan, DutyArg);
}
Go to the top of the page
 
+Quote Post
OsAlex
сообщение Aug 10 2006, 01:47
Сообщение #3





Группа: Новичок
Сообщений: 2
Регистрация: 21-04-05
Пользователь №: 4 349



Большой tnx.! Заработало!
Хотя всёравно не понятно чего не работало 8(. Если верить кейлу3 то в PIOA все тоже самое, в моём случае (CMR=0xA) MR вроде нипричем, да и первый Update тоже делал.
Go to the top of the page
 
+Quote Post

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

 


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


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