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

 
 
> Почему передатчик SSC смещает влево на 1 бит передаваемое 32-битное слово, at91sam7s
Bulat
сообщение Dec 28 2009, 11:00
Сообщение #1


Местный
***

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



Передатчик SSC отправляет 32-битные слова в непрерывном режиме с паузой 40мкс, частота тактирования 100 кГц.
По прерыванию (TXRDY) буфер передатчика обновляется. Непрерывную передачу с заданной паузой получить удалось,
но данные почему-то смещены в сторону старшего бита на 1. Почему так происходит?
CODE

//++++++++++++++++++++++++++--SSC--+++++++++++++++++++++++++++++++++++++++++++++
__ramfunc void SscHandler()
{
AT91C_BASE_SSC->SSC_THR = dat_buf; //обновление буфера передатчика
unsigned int dummy = AT91C_BASE_SSC->SSC_SR;
}

void AT91F_SSC_Conf ()
{
// Setup ssc
AT91F_SSC_CfgPMC(); /* Enable MCK clock */

// pio Special configuration
AT91F_SSC_CfgPIO();

//* Disable interrupts
AT91C_BASE_SSC->SSC_IDR = 0xfff;

//* Reset receiver and transmitter
AT91C_BASE_SSC->SSC_CR = AT91C_SSC_SWRST | AT91C_SSC_TXDIS ;

//* Define the Clock Mode Register
AT91C_BASE_SSC->SSC_CMR = 240; //100 кГц

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

//* Write the Transmit Frame Mode Register
AT91C_BASE_SSC->SSC_TFMR = AT91C_SSC_FSOS_POSITIVE | (31<<0) & AT91C_SSC_DATLEN;
}


void AT91F_SSC_Start(void)
{

//* 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;

AT91C_BASE_SSC->SSC_CR = AT91C_SSC_TXEN;
AT91C_BASE_SSC->SSC_THR = dat_buf;
}
//++++++++++++++++++++++++++--SSC--+++++++++++++++++++++++++++++++++++++++++++++
ramfunc int main(void)
{
AT91F_SSC_Conf();
AT91F_SSC_Start();
while(1) write(dat_buf);
}

Заранее благодарен!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Bulat   Почему передатчик SSC смещает влево на 1 бит передаваемое 32-битное слово   Dec 28 2009, 11:00
- - aaarrr   Цитата(Bulat @ Dec 28 2009, 14:00) данные...   Dec 28 2009, 13:30
|- - Bulat   aaarrr Слово смещено влево на 1 бит (то есть 32 би...   Dec 28 2009, 18:37
|- - aaarrr   Цитата(Bulat @ Dec 28 2009, 21:37) А как ...   Dec 28 2009, 19:36
|- - Bulat   Цитата(aaarrr @ Dec 29 2009, 00:36) Расши...   Dec 29 2009, 06:30
|- - Bulat   Первый тактовый импульс на желтой эпюре (смотри ри...   Dec 29 2009, 10:24
|- - aaarrr   Цитата(Bulat @ Dec 29 2009, 13:24) Получа...   Dec 29 2009, 15:50
|- - Bulat   Цитата(aaarrr @ Dec 29 2009, 20:50) Может...   Dec 29 2009, 19:59
|- - Bulat   Цитата(Bulat @ Dec 30 2009, 00:59) Осцилл...   Jan 4 2010, 07:07
- - aaarrr   Странно, откуда вообще берутся клоки, если в поле ...   Jan 5 2010, 10:04
- - Bulat   Цитата(aaarrr @ Jan 5 2010, 15:04) Странн...   Jan 5 2010, 11:35
- - aaarrr   Цитата(Bulat @ Jan 5 2010, 14:35) ...пауз...   Jan 5 2010, 12:43
- - Bulat   Цитата(aaarrr @ Jan 5 2010, 17:43) 1. При...   Jan 6 2010, 07:46
- - aaarrr   Цитата(Bulat @ Jan 6 2010, 10:46) Попробо...   Jan 6 2010, 11:39
- - Bulat   Цитата(aaarrr @ Jan 6 2010, 16:39) Зато т...   Jan 6 2010, 13:25
- - aaarrr   Цитата(Bulat @ Jan 6 2010, 16:25) Вы имее...   Jan 6 2010, 13:45
- - Bulat   Цитата(aaarrr @ Jan 6 2010, 18:45) Ну да,...   Jan 7 2010, 10:39


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

 


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


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