Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с ТС в режиме генерации импульсов
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
DDK
Ситуация такая.
Нужно сгенерировать две последовательности импульсов со сдвигом переднего фронта второго сигнала, относительно первого.

Код инициализации ТС0

CODE
// Разрешили clock PIO
*AT91C_PMC_PCER = 1UL << AT91C_ID_PIOA;

//========= Инициализация ТС0 ========//

// Переключили PIO на TC0
*AT91C_PIOA_PDR = AT91C_PA0_TIOA0 | AT91C_PA1_TIOB0;
*AT91C_PIOA_BSR = AT91C_PA0_TIOA0 | AT91C_PA1_TIOB0;

// Разрещили clock TC0
*AT91C_PMC_PCER = 1UL << AT91C_ID_TC0;

// Установка моды
*AT91C_TC0_CMR = AT91C_TC_BSWTRG_CLEAR | AT91C_TC_BCPC_CLEAR | AT91C_TC_BCPB_SET |
AT91C_TC_ASWTRG_CLEAR | AT91C_TC_ACPC_CLEAR | AT91C_TC_ACPA_SET |
AT91C_TC_WAVE | AT91C_TC_WAVESEL_UP_AUTO |
AT91C_TC_CLKS_TIMER_DIV2_CLOCK;
// Заносим значение счетчиков
*AT91C_TC0_RA = 100;
*AT91C_TC0_RB = 200;
*AT91C_TC0_RC = 300;


// Запускаем девайс
*AT91C_TC0_CCR = AT91C_TC_CLKEN | AT91C_TC_SWTRG;


По идее на выходе TIOB должен получиться сдвинутый на 100 тактов фронт, относительно TIOА. Но не тут-то было sad.gif

PA0_TIOA0 исправно генерит, а PA1_TIOB0 тупо в единице.

Оговорюсь, что используется DeveloperBoard, и JLINK JTAG, так что вопросов к соплям монтажа быть не может.
Самое любопытное, что в отладчике IAR бит TC0_SR->MTIOB не дергается, и факт перепада на выходе TIOB не фиксируется в регистре PIOA_ISR.

В чем косяк?
Aaron
сам не пользовался, но если почитать доку, то там вроде всё чётко написано: если используется триггер (у вас AT91C_TC_SWTRG), то TIOB работает в режиме входа как внешний триггер сброса TC0 sm.gif
aaarrr
Только SWTRG - это программный триггер. Чтобы использовать TIOB в waveform mode, нужно установить ненулевое значение в поле EEVT регистра TC_CMRx.
DDK
Большое человеческое спасибо !!! sm.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.