[an error occurred while processing this directive]
|
проц версии 1.0 (377756.1-1.0, 0403).
Проверял и в DMA, и банальной пересылкой байтиков с проверкой SP0_STATR (текст процедуры ниже). Результат один - паршивый :(.
Инициализация (cInitTCR) пробовалась разная, но для всех Internal TCLK,SLEN=7,Internal Frame Sync
------------
на If'е отмеченом !!!!! виснем - TCLK идет, а передача застыла на первом бите. Если закомментировать строку с //stop transmit, то все работает.
#define cInitTCR 0x06F3
_SPORT_start_transmit:
IOPG=SP0_Controller_Page;
dmpg1=0x0;
i1=dm(_SPORT_Buf->TranStartAdr);m1=1;
ar=dm(_SPORT_Buf->TranCnt);
cntr=ar;
ax0=cInitTCR; IO(SP0_TCR)=ax0; //set tcr
do SPORT_loop_end until CE;
SPORT_empty_loop:
ar=IO(SP0_STATR);af=ar and 0x04;
if ne jump SPORT_empty_loop; // !!!!!!!!
ax0=dm(i1+=m1);
IO(SPxTX)=ax0;
SPORT_loop_end:
nop;
SPORT_empty_loop1:
ar=IO(SP0_STATR);
af=ar and 0x04;
if ne jump SPORT_empty_loop1;
ar=0;io(SP0_TCR)=ar; //stop transmit
_SPORT_start_transmit.end:
RTS;
E-mail: info@telesys.ru