После записи поля TXDIS регистра SSC_CR не удается заново запустить передатчик.
CODE
__ramfunc void SscHandler()
{
if(jj==0) AT91C_BASE_SSC->SSC_CR = AT91C_SSC_SWRST | AT91C_SSC_TXDIS ;
jj=0;
unsigned int dummy = AT91C_BASE_SSC->SSC_SR;
}
void AT91F_SSC_Conf ()
{
...
//* Open SSC interrupt
AT91C_BASE_AIC->AIC_SVR[AT91C_ID_SSC] = (unsigned int)SscHandler;
AT91C_BASE_AIC->AIC_SMR[AT91C_ID_SSC] = AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL | SSC_INTERRUPT_LEVEL;
AT91C_BASE_AIC->AIC_IECR = (1UL << AT91C_ID_SSC);
AT91C_BASE_SSC->SSC_IER = AT91C_SSC_TXRDY;
//* Write the Transmit Clock Mode Register
AT91C_BASE_SSC->SSC_TCMR = (17 << 24) & AT91C_SSC_PERIOD | (4<<16) & AT91C_SSC_STTDLY | AT91C_SSC_START_FALL_RF |
(0x2 << 6) | AT91C_SSC_CKI | AT91C_SSC_CKO_CONTINOUS | AT91C_SSC_CKS_DIV;
//* Write the Transmit Frame Mode Register
AT91C_BASE_SSC->SSC_TFMR = AT91C_SSC_FSOS_NEGATIVE | (31<<0) & AT91C_SSC_DATLEN |
(3 << 16) & AT91C_SSC_FSLEN | AT91C_SSC_DATDEF;
}
//++++++++++++++++++++++++++--SSC--+++++++++++++++++++++++++++++++++++++++++++++
__ramfunc void Write_TRA()
{
if(jj==0)
{
AT91C_BASE_SSC->SSC_CR = AT91C_SSC_TXEN;
AT91C_BASE_SSC->SSC_THR = dat_buf;
jj = 1; //dat_buf заполнен
}
Почему передатчик заново не запускается после останова?