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

 
 
> Не удается вновь запустить SSC после его останова (at91sam7s)
Bulat
сообщение Jan 20 2010, 06:12
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 206
Регистрация: 12-10-06
Из: ufa
Пользователь №: 21 241



После записи поля TXDIS регистра SSC_CR не удается заново запустить передатчик.
CODE

__ramfunc void SscHandler()
{
if(jj==0) AT91C_BASE_SSC->SSC_CR = AT91C_SSC_SWRST | AT91C_SSC_TXDIS ;
jj=0;
unsigned int dummy = AT91C_BASE_SSC->SSC_SR;
}

void AT91F_SSC_Conf ()
{
...
//* Open SSC interrupt

AT91C_BASE_AIC->AIC_SVR[AT91C_ID_SSC] = (unsigned int)SscHandler;
AT91C_BASE_AIC->AIC_SMR[AT91C_ID_SSC] = AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL | SSC_INTERRUPT_LEVEL;
AT91C_BASE_AIC->AIC_IECR = (1UL << AT91C_ID_SSC);
AT91C_BASE_SSC->SSC_IER = AT91C_SSC_TXRDY;

//* Write the Transmit Clock Mode Register
AT91C_BASE_SSC->SSC_TCMR = (17 << 24) & AT91C_SSC_PERIOD | (4<<16) & AT91C_SSC_STTDLY | AT91C_SSC_START_FALL_RF |
(0x2 << 6) | AT91C_SSC_CKI | AT91C_SSC_CKO_CONTINOUS | AT91C_SSC_CKS_DIV;

//* Write the Transmit Frame Mode Register
AT91C_BASE_SSC->SSC_TFMR = AT91C_SSC_FSOS_NEGATIVE | (31<<0) & AT91C_SSC_DATLEN |
(3 << 16) & AT91C_SSC_FSLEN | AT91C_SSC_DATDEF;

}

//++++++++++++++++++++++++++--SSC--+++++++++++++++++++++++++++++++++++++++++++++


__ramfunc void Write_TRA()
{
if(jj==0)
{
AT91C_BASE_SSC->SSC_CR = AT91C_SSC_TXEN;
AT91C_BASE_SSC->SSC_THR = dat_buf;
jj = 1; //dat_buf заполнен
}

Почему передатчик заново не запускается после останова?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 16:48
Рейтинг@Mail.ru


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