ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
27 апреля
53707
vlad242 (13.03.2006 12:03, просмотров: 1593)
Не могу заставить работать SSC на at91rm9200, pls, знающие, подскажите! Не могу заставить работать SSC, вот простецкий код инициализации и основного цикла. Что здесь не так? Клок осцилографом вижу, фреймы(когда включены)- вижу, а данных не вижу! //* Configure SSC1 PIOs TF/TK/TD //назначаем выводы *AT91C_PIOB_PDR = AT91C_PB7_TK1 | AT91C_PB8_TD1 | AT91C_PB6_TF1 ; //* Configure PMC by enabling SSC1 clock включаем клок для SSC1 *AT91C_PMC_PCER |= 1 << AT91C_ID_SSC1; /* enable the SSC1 peripheral clock */ //* Reset All the Peripheral ресетим *AT91C_SSC1_CR = AT91C_SSC_SWRST ; //* Define the Clock Mode Register // for MCK ei 60000000 => 21 // клок 1.8 МГц *AT91C_SSC1_CMR = 0x15; *AT91C_SSC1_TCMR = (((BITS_BY_SLOT*SLOT_BY_FRAME/2)-1) <<24) |// период, если нет фрейма, то и период не нужен AT91C_SSC_START_CONTINOUS|//старт по записи в регистр AT91C_SSC1_THR AT91C_SSC_CKO_CONTINOUS | // continuous transmit clock постоянная генерация AT91C_SSC_CKS_DIV; // Divided clock клок внутренний *AT91C_SSC1_TFMR = AT91C_SSC_FSOS_NONE |//фрейма нет //AT91C_SSC_FSDEN |//нет данных синхронизации //AT91C_SSC_DATDEF | (((BITS_BY_SLOT/2-1)<<16) & AT91C_SSC_FSLEN) | // Fslen => 16 Clock (((SLOT_BY_FRAME-1)<<8) & AT91C_SSC_DATNB) | // 2 Data by frame AT91C_SSC_MSBF | // MSB in first (BITS_BY_SLOT-1) ; // 16 bits *AT91C_SSC1_CR = AT91C_SSC_TXEN; /* Enable Tx */ //конец инициализации //теперь в основном цикле просто пишу в регистр и проверяю флаг *AT91C_SSC1_THR = 0xaaa2; ; /* Write the TD data */ while((*AT91C_SSC1_SR & AT91C_SSC_TXRDY)==0){data_out= 0x1112; } /* Wait ready */