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

 
 
> Тихоходный SPI на SAM7
prottoss
сообщение Nov 21 2009, 05:47
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Всем привет. Хочу соорудить последовательный канал данных (примерно как SPI) c максимально низкой (50-100 Гц) тактовой частотой. Т.е. две однонаправленные линии данных плюс тактовый от мастера. Возможно ли аппаратно это сделать на SAM7?. Пока думаю в качестве передатчика использовать SSC (у него бОльший коэффициент деления тактовой частоты), а в качестве приемника SPI в режиме Slave. Конечно, SSC, судя по даташиту на 50-100 гц не потянет, а только минимум MCK/8190, но хотя бы пока так. С SSC не приходилось работать. Почитал форум, но в основном SSC используют вместе с квитирующими линиями, и ловят какие то баги.


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
prottoss
сообщение Jan 3 2010, 15:19
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Всех с прошедшим Новым Годом и наступающим Рождеством!
Все у меня получилось с тихоходным SPI. Сделал два счетчика - первый для формирования импульса , второй для счета этих самых импульсов. Счетный вход второго счетчика соответсвенно соединен с выходом TIOA первого. Останавливал оба счетчика в прерывании по "COMPARE А" второго. . Решил избавиться от прерывания. Для этого выход TIOA запрограммировал на соединение со счетным входом первого через мультиплексор по AND (флаг Burst Signal Selection). Но что то не пашет...
Вот код инициализации:
Код
/* Init SCK WAVE maker counter */
    TC_Init(AT91C_BASE_TC2, AT91C_ID_TC2,
            0 | /* Source clock - none */
            AT91C_TC_BURST_XC2 |        /* Clock from XCLK & control signal (HI) from PULSE TIOA */
            AT91C_TC_WAVESEL_UP_AUTO |    /* UP mode with atomatic trigger on RC Compare */
            AT91C_TC_WAVE |                  /* Waveform Mode is enabled */
            AT91C_TC_ACPA_SET |            /* A Compare Effect on TIOA - Set output pin after compare */
            AT91C_TC_ACPC_CLEAR            /* C Compare Effect on TIOA - Clear output pin after compare */
            );
    AT91C_BASE_TC2->TC_CCR = AT91C_TC_CLKEN;    /* Enable clock */
    
    /* Init SCK PULSE counter */
    TC_Init(AT91C_BASE_TC1, AT91C_ID_TC1,
            AT91C_TC_CLKS_XC1 |        /* Clock from WAVE TIOA */
            AT91C_TC_CLKI |     /* Invert clock - for negative edge counting */
            AT91C_TC_WAVESEL_UP_AUTO |    /* UP mode with atomatic trigger on RC Compare */
            AT91C_TC_WAVE |                       /* Waveform Mode is enabled */
            AT91C_TC_ACPA_CLEAR |              /* Clear TIOA after compare - for stopping Wave Counter */
            AT91C_TC_ASWTRG_SET               /* Set TIOA after starting - for start Wave Counter */
            );
     AT91C_BASE_TC1->TC_CCR = AT91C_TC_CLKEN;    /* Enable clock */

     /* Set counters block register */
    AT91C_BASE_TCB->TCB_BMR = AT91C_TCB_TC2XC2S_TIOA1 | AT91C_TCB_TC1XC1S_TIOA2 | AT91C_TCB_TC0XC0S_NONE;


Старт счетчиков:
Код
/* Enable clock and start pulse counter */
    AT91C_BASE_TC1->TC_RA = (UINT32)n_pulses;    /* Setup pulse counter compare */
    (void)AT91C_BASE_TC1->TC_SR;    /* Clear status register */
    AT91C_BASE_TC1->TC_CCR = AT91C_TC_SWTRG; /* !!!!!!!!!!!!!!!!!!!!! Here TIOA must be set to one, for enable clock for Wave Maker !!!!!!!!!!!!!!!!!!!!! */
    
    /* Enable clock and start wave maker */
    (void)AT91C_BASE_TC2->TC_SR;    /* Clear status register */
    AT91C_BASE_TC2->TC_CCR = AT91C_TC_SWTRG;


В окне отладчика вижу, что после команды "AT91C_BASE_TC1->TC_CCR = AT91C_TC_SWTRG" MTIOA в регистре статуса не устанавливается в "1", тем самым не разрешает счет для ТС2. Но не могу понять почему...


--------------------
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- prottoss   Тихоходный SPI на SAM7   Nov 21 2009, 05:47
- - vmp   Раз SPI в режиме slave, то и передавать им можно. ...   Nov 21 2009, 07:05
|- - prottoss   Цитата(vmp @ Nov 21 2009, 14:05) Раз SPI ...   Nov 21 2009, 08:47
- - Dron_Gus   С такой частотой есть смысл задуматься о простом н...   Nov 21 2009, 12:03
|- - Т.Достоевский   Полу А для чего надо так медленно?   Nov 21 2009, 13:23
|- - prottoss   Цитата(Dron_Gus @ Nov 21 2009, 19:03) С т...   Nov 21 2009, 14:29
|- - Petka   Цитата(prottoss @ Nov 21 2009, 17:29) Час...   Nov 21 2009, 15:05
||- - prottoss   Цитата(Petka @ Nov 21 2009, 22:05) Слэйв ...   Nov 24 2009, 06:42
||- - Petka   Цитата(prottoss @ Nov 24 2009, 09:42) Апп...   Nov 24 2009, 07:34
||- - prottoss   Цитата(Petka @ Nov 24 2009, 14:34) Аппара...   Nov 24 2009, 07:45
||- - Petka   Цитата(prottoss @ Nov 24 2009, 10:45) Вто...   Nov 24 2009, 07:50
|- - IJAR   Цитата(prottoss @ Nov 21 2009, 17:29) Час...   Nov 23 2009, 21:03
|- - aaarrr   Цитата(prottoss @ Nov 21 2009, 17:29) Час...   Nov 23 2009, 21:12
- - Dron_Gus   Цитата(Petka @ Nov 24 2009, 10:50) Понятн...   Nov 24 2009, 13:52
|- - Petka   Цитата(Dron_Gus @ Nov 24 2009, 16:52) Пре...   Nov 24 2009, 14:25
- - aaarrr   У TC1 нет клока, как же он сможет "отреагиров...   Jan 3 2010, 15:29
|- - prottoss   Цитата(aaarrr @ Jan 3 2010, 22:29) У TC1 ...   Jan 3 2010, 15:50
- - aaarrr   Цитата: ЦитатаRegardless of the trigger used, it w...   Jan 3 2010, 16:12
- - prottoss   Цитата(aaarrr @ Jan 3 2010, 23:12) И это ...   Jan 3 2010, 17:13
- - aaarrr   Цитата(prottoss @ Jan 3 2010, 20:13) Тогд...   Jan 3 2010, 17:25


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

 


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


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