CODE
#include <def21364.h>
.section/dm seg_dmda;
.var FTW0_b[]= 0x04,0xFF,0xAA,0xAA,0xAB;
.var irx= 0x84; // инициализация приема
.var rx_buf[4];
.var rx_tcb1[4] = 0,4,1,rx_buf;
.global _main;
.segment/pm seg_pmco;
_main:
/* Init SPI MASTER TX DMA */
r0=0;
dm(SPICTL)=r0;
dm(SPIFLG)=r0;
dm(SPIDMAC)=r0;
r0=500; dm(SPIBAUD) = r0;
r0=DS0EN; dm(SPIFLG) = r0;
bit set flags FLG1O;
bit clr flags FLG1;
up:
ustat3 = DS0EN;//| /*enable SPI slave device select zero */
//SPIFLG3|SPIFLG2|SPIFLG1|SPIFLG0; /* Set SPIFLG0 low to */
dm(SPIFLG) = ustat3; /*select SPI slave on FLAG0 pin */
/*===FTW0 Transmit===*/
ustat3=0xFF;
dm(SPISTAT)=ustat3;
ustat3=FTW0_b; dm(IISPI)=ustat3;
ustat3=@FTW0_b; dm(CSPI)=ustat3;
ustat3=1; dm(IMSPI)=ustat3;
ustat3 = DMISO|WL8|SPIMS|SPIEN|TIMOD2|MSBF; dm(SPICTL)=ustat3;
ustat3=SPIDEN;
dm(SPIDMAC)=ustat3;
r0=dm(CSPI);
r0=pass r0;
if gt jump (pc,-2);
ustat3=dm(SPISTAT);
bit tst ustat3 SPIF;
if tf jump (pc,-2);
lcntr=12000, do (pc,6) until LCE;
nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;
bit set flags FLG1;
lcntr=240, do (pc,10) until LCE;
nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;
bit clr flags FLG1;
lcntr=8000, do (pc,10) until LCE;
nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;
nop;nop;
//jump up;
//SPI reset
r0=0;
dm(SPICTL)=r0;
dm(SPIFLG)=r0;
dm(SPIDMAC)=r0;
r0=500; dm(SPIBAUD) = r0;
r0=DS0EN; dm(SPIFLG) = r0;
/*===irx Transmit===*/
ustat3=0xFF;
dm(SPISTAT)=ustat3;
ustat3=irx; dm(IISPI)=ustat3;
ustat3=@irx; dm(CSPI)=ustat3;
ustat3=1; dm(IMSPI)=ustat3;
ustat3 = DMISO|WL8|SPIMS|SPIEN|TIMOD2|MSBF; dm(SPICTL)=ustat3;
ustat3=SPIDEN;
dm(SPIDMAC)=ustat3;
r0=0;
dm(SPICTL)=r0;
dm(SPIFLG)=r0;
dm(SPIDMAC)=r0;
r0=500; dm(SPIBAUD) = r0;
r0=DS0EN; dm(SPIFLG) = r0;
ustat3=0xFF;
dm(SPISTAT)=ustat3;
ustat3=rx_buf; dm(IISPI)=ustat3;
ustat3=@rx_buf; dm(CSPI)=ustat3;
ustat3=1; dm(IMSPI)=ustat3;
ustat3 = DMISO|WL8|SPIMS|SPIEN|TIMOD2|MSBF; dm(SPICTL)=ustat3;
ustat3=SPIRCV;
dm(SPIDMAC)=ustat3;
_main.end: jump (pc,0);
деуствую вот так.
дергаю iosync руками после переключения.
ответа все равно никакого нет, впрочем как и генерации