[an error occurred while processing this directive]
|
#define IRQ_ENA_DMA0 BSET(IER1, DMAINT0); /* Enable DMA0 for DAC TX IRQ */
#define IRQ_DIS_DMA0 BCLR(IER1, DMAINT0); /* Disable DMA0 for DAC TX IRQ */
стартую и торможу макросами TX_DAC_START и TX_DAC_STOP
ввел задержку в 16 NOPов между посл.портом и ДМА - не помогло.
пробовал выключать прерывание от ДМА в моменты его неиспользования - глюк успешно держится
.
уж и не знаю куда глядеть :(
#define TX_DAC_START DMA_ENABLE(0); NOP16; BSET(SPCR2_1,1<<0); /* Enable TX */
#define TX_DAC_STOP DMA_DISABLE(0); NOP16; BCLR(SPCR2_1,1<<0); /* Disable TX */
и
#define TX_DAC_START DMA_ENABLE(0); NOP16; IRQ_ENA_DMA0; BSET(SPCR2_1,1<<0); /* Enable TX */
#define TX_DAC_STOP IRQ_DIS_DMA0; DMA_DISABLE(0); NOP16; BCLR(SPCR2_1,1<<0); /* Disable TX */
притом это точно в посл.порте и ДМА глюк: когда работаю с пустыми строчками:
#define TX_DAC_START
#define TX_DAC_STOP
все работает как часы..
E-mail: info@telesys.ru