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

 
 
> Как подключить ТС на тактирование от PA0, Проблема с BMR
Тема
сообщение Feb 6 2008, 07:49
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 31-01-08
Из: Екатеринбург
Пользователь №: 34 632



Как я понял от PA0 (TIOA0) может тактироваться лишь TC1
Я включил PA0 в режим B,
в TC1 в TC_CMR тактирование от XC0
но как подключить ХС0 к PA0, в даташите сказано что надо именить TC_BMR но как модифицировать не понял,что попробовал не получилось.
Подскажите как модифицировать BMR и что сделать дальше чтоб счетчик просто считал импульсы без прерывания. 05.gif

ATSAM7S256 процессор


--------------------
Наша электроника и программы - http://soft-ee.com
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Тема
сообщение Feb 6 2008, 09:40
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 31-01-08
Из: Екатеринбург
Пользователь №: 34 632



У меня ничего и не получилось...Не знаю про что вы говорите
Код
#define Q24        (1<<0)     /* PA0  */
void AT91F_TC_Open (void)
//* Begin
{
    unsigned int dummy;
    //* First, enable the clock of the TIMER
         AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1<< AT91C_ID_TC1 );          
     //Config A and B mode in PIO
        AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA,0,Q24);        
     //* Disable the clock and the interrupts
     AT91C_BASE_TC1->TC_CCR = AT91C_TC_CLKDIS;
     AT91C_BASE_TC1->TC_IDR = 0xFFFFFFFF;
    //* Clear status bit
        dummy = AT91C_BASE_TC1->TC_SR;
    //* Suppress warning variable "dummy" was set but never used
        dummy = dummy;
    //* Set the Mode of the Timer Counter
     AT91C_BASE_TC1->TC_CMR = AT91C_TC_CLKS_XC1;
    //* Set the TCB_BMR of the TIOA0    
        AT91C_BASE_TCB->TCB_BMR|=AT91C_TCB_TC1XC1S_TIOA0;
    //* Enable the clock
     AT91C_BASE_TC1->TC_CCR = AT91C_TC_CLKEN;
}


Вот код почему он не работает?


--------------------
Наша электроника и программы - http://soft-ee.com
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Feb 6 2008, 10:14
Сообщение #3


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Цитата(Тема @ Feb 6 2008, 12:40) *
Вот код почему он не работает?

Потому что он идиотский. smile.gif
Я не понял что конкретно вам нужно получить в итоге, поэтому отвечу только на один вопрос
Как тактировать канал один1 от канала 0.
Для этого нужно сконфигурировать канал 0 на генерацию импульсов нужной вам тактовой частоты.
Код
    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_TC0);
//  можно отдать внешний вывод таймеру и посмотреть на нашу тактовую частоту
//    AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA, 0, AT91C_PA15_TIOA0);


    AT91C_BASE_TC0->TC_CMR =   prescalerMask            
                             | AT91C_TC_WAVE
                             | AT91C_TC_WAVESEL_UP_AUTO
                             | AT91C_TC_ACPA_CLEAR          /* сброс tioa1 в начале работы      */
                             | AT91C_TC_ACPC_SET            /* установка в конце                */
                             | AT91C_TC_ASWTRG_SET          /* линии TIOA0 в 1                  */

    AT91C_BASE_TC0->TC_RA = 1;
    AT91C_BASE_TC0->TC_RC = interval+1;


В блоке BCR XC1 либо XC2 как TIOA0
Код
AT91C_BASE_TCB->TCB_BMR =  AT91C_TCB_TC0XC0S_NONE
                                                | AT91C_TCB_TC1XC1S_TIOA0
                                                | AT91C_TCB_TC2XC2S_NONE;

сконфигурировать канал 1 на тактирование от XC1 либо XC2
Код
    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_TC1);
    AT91C_BASE_TC1->TC_CMR =   AT91C_TC_CLKS_XC1
                             | AT91C_TC_WAVE
                             | AT91C_TC_WAVESEL_UP_AUTO
                             | AT91C_TC_ACPA_CLEAR          /* сброс tioa1 в начале работы      */
                             | AT91C_TC_ACPC_SET            /* установка в конце                */
                             | AT91C_TC_ASWTRG_SET          /* линии TIOA0 в 1                  */

    AT91C_BASE_TC1->TC_RA = 1;
    AT91C_BASE_TC1->TC_RC = interval+1;


незабудьте только запустить это хозяйство.


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 21:02
Рейтинг@Mail.ru


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