Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Опять таймеры SAMа
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
SpiritDance
Черт. У атмела самая навороченнная переферия с которой доводилось работать до этого. Пытаюсь застсавит tc0 работать в режиме счетчика внешних тиков. В кейле говорю Run и дергаю ногой TCLK0 при помощи мыши. Не получается - не увеличивается CV. Посмотрите код кому не в лом , он вроде простой может я забыл чего проинициализировать?
Цитата
void main(void)
{
set_timer_channel0_to_counter_mode();

for(;;);
//{
// FreqTemp = 0;
// }
}


void set_timer_channel0_to_counter_mode(void)
{
/* ïîäêëþ÷àåì ê êàíàëó âíåøíþþ ÷àñòîòó è âêëþ÷àåì âûâîä */
AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA, 0, AT91C_PA4_TCLK0);

/* ñ÷åò÷èê âíåøíèõ èìïóëüñîâ */
AT91C_BASE_TC0->TC_CMR = AT91C_TC_CLKS_XC0
|
AT91C_TC_WAVE
|
AT91C_TC_WAVESEL_UP;

/* çàïóñêàåì òàéìåð */
AT91C_BASE_TC0->TC_CCR = AT91C_TC_CLKEN | AT91C_TC_SWTRG;
}
vet
тактовую на таймер подали?
SpiritDance
Цитата(vet @ Jun 23 2006, 13:57) *
тактовую на таймер подали?

wacko.gif
Тактовая должна быть по идее на TCLK0
AT91C_BASE_TC0->TC_CMR = AT91C_TC_CLKS_XC0...

Я ж говорю дергаю галкой в эмуляторе по идее по каждому такому дергу (по Rising Edge в реале) CV должен увеличиватся на 1.
Или я что-то путаю? втаком случае подскажите как заставить таймер работать как счетчик (Не compare!!!) внешних импульсов. Просто нужно частоту в несколько мегагерц померять точно.
vet
Я к тому, что периферия SAM7 для нормальной работы должна тактироваться:
*AT91C_PMC_PCER = 1<<AT91C_ID_TC0;
SpiritDance
Да вы правы. Что-то я ступил с этим тактированием. Добавил

AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_TC0);

Спасибо!!!! smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.