rokhan, Да, стандартный dsp/bios проект для dsk6416. В генерируемом cmd-файле есть такая строка: GBL_USERINITFXN = _FXN_F_nop; Извините, но пока не хватает опыта, чтоб делать какие-то выводы из этого.
Вот листинг конфигурации и передачи с замером времени. Если что-то не очевидно, я поясню.
#define FRAGM_EDMA_TCC 11
EDMA_Config cfgEdmaFragm = { EDMA_OPT_RMK( EDMA_OPT_PRI_LOW, EDMA_OPT_ESIZE_8BIT, EDMA_OPT_2DS_YES, EDMA_OPT_SUM_INC, EDMA_OPT_2DD_NO, EDMA_OPT_DUM_INC, EDMA_OPT_TCINT_YES, EDMA_OPT_TCC_OF(FRAGM_EDMA_TCC), EDMA_OPT_TCCM_OF(0), EDMA_OPT_ATCINT_NO, EDMA_OPT_ATCC_OF(0), EDMA_OPT_PDTS_DISABLE, EDMA_OPT_PDTD_DISABLE, EDMA_OPT_LINK_YES, EDMA_OPT_FS_YES ), EDMA_SRC_OF(NULL), EDMA_CNT_RMK(NULL,NULL), EDMA_DST_OF(NULL), EDMA_IDX_RMK(NULL,NULL), EDMA_RLD_RMK(0x0000,0x07E0) };
Frame =(Uint8 *)(0x80500000); hEdma_fragm = EDMA_open(EDMA_CHA_ANY,EDMA_OPEN_RESET); //пробовал так же ставить конкретный канал cfgEdmaFragm.cnt=(Uint32)((strbsize+2*delta-1)<<16) + (strbsize+2*delta); cfgEdmaFragm.idx=(Uint32)((FRAME_WIDTH-strbsize-2*delta)<<16); cfgEdmaFragm.src=(Uint32)(Frame+(32-delta)*FRAME_WIDTH +(32-delta)); cfgEdmaFragm.dst=(Uint32)(Fragm); EDMA_config(hEdma_fragm,&cfgEdmaFragm); TIMER_start(hTimer1); EDMA_setChannel(hEdma_fragm); while (1) { if (EDMA_intTest(FRAGM_EDMA_TCC)) { EDMA_intClear(FRAGM_EDMA_TCC); break; } } *tickcount1 = TIMER_getCount(hTimer1);
Кстати, я изначально в теме не правильно оценил скорость передачи... 54000 тиков - это 52 МБайт/сек. Что тоже медленно.
bav,
Спасибо за ссылку на пдф. Да, действительно, конфигурационный пин BEA[17:16] отвечает за настройку частоты. Если я правильно понял, BEA - это имя, а номера этих пинов B18 и A18. Можете подсказать, как теперь через CCStudio узнать, какой сигнал на них подается и как подать свой? Физически - это ножки процессора, да?
Осцильник я, конечно, рано или поздно возьму... ) Но я оценивал реалистичность измеряемых тиков обычным секундомером, запустив программу на 15 секунд реального времени. Соответствует.
|