[an error occurred while processing this directive]
|
TUART::TUART(AT91PS_USART pBase,ulong baud,ulong bit9)
{
__irq __arm void US0_irq_handler(void);
__irq __arm void US1_irq_handler(void);
ldiv_t temp;
temp = ldiv(2995200,baud); if (temp.rem >= (baud>>1)) temp.quot++;
AT91C_BASE_AIC->AIC_ICCR = (1< //сброс PDC //разрешаю приемник и передатчик //mode - async,normal,MCK,8bit,no parity,1stop /*********************************************************************************** baseAdr->US_IDR =0xFFFFFFFF; //блокирую все прерывания DEBUG !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! this->baseAdr->US_IDR = AT91C_US_RXRDY;//запр.прерывание по приему bufPtr=rxBuf0_9bit; baseAdr->US_IER = 1;//AT91C_US_RXRDY;//разр.прерывание по приему
E-mail:
info@telesys.ru
//блокируется PIO,разрешается UART,clock
this->baseAdr=pBase;
if (pBase==AT91C_BASE_US0)
{
this->id=AT91C_ID_US0;
AT91C_BASE_PIOA->PIO_ASR = ((unsigned int)AT91C_PA5_RXD0)|((unsigned int)AT91C_PA6_TXD0);
AT91C_BASE_PIOA->PIO_PDR = ((unsigned int)AT91C_PA5_RXD0)|((unsigned int)AT91C_PA6_TXD0);
AT91C_BASE_PMC->PMC_PCER = 1<
AT91C_BASE_AIC->AIC_SMR[id] = AT91C_AIC_SRCTYPE_INT_EDGE_TRIGGERED | 5; //приоритет и фронт
}
else if (pBase==AT91C_BASE_US1)
{
this->id=AT91C_ID_US1;
AT91C_BASE_PIOA->PIO_ASR = ((unsigned int)AT91C_PA21_RXD1)|((unsigned int)AT91C_PA22_TXD1);
AT91C_BASE_PIOA->PIO_PDR = ((unsigned int)AT91C_PA21_RXD1)|((unsigned int)AT91C_PA22_TXD1);
AT91C_BASE_PMC->PMC_PCER = 1<
AT91C_BASE_AIC->AIC_SMR[id] = AT91C_AIC_SRCTYPE_INT_EDGE_TRIGGERED | 5; //приоритет и фронт
}
//сброс и блокировка приемника и передатчика
pBase->US_CR = AT91C_US_RXDIS | AT91C_US_TXDIS;//AT91C_US_RSTRX | AT91C_US_RSTTX | AT91C_US_RXDIS | AT91C_US_TXDIS ;
pBase->US_BRGR=temp.quot; // baud rate=9600 if mck=47 923 200
//Timeguard по передаче =0
pBase->US_PTCR = AT91C_PDC_RXTDIS | AT91C_PDC_TXTDIS;
pBase->US_RCR=0;
pBase->US_TCR=0;
pBase->US_RNCR=0;
pBase->US_TNCR=0;
if (bit9==0) pBase->US_PTCR = AT91C_PDC_TXTEN;
pBase->US_CR = AT91C_US_RXEN | AT91C_US_TXEN;
if (bit9==0) pBase->US_MR=0x000008C0;
else pBase->US_MR=0x000208C0;
}
инициализация приема - в прерывании - 9-битного...
***********************************************************************************/
void TUART::firstInitRx9bitReceiver()
{
baseAdr->US_CR=AT91C_US_RSTRX; //
baseAdr->US_CR=AT91C_US_RXEN;
rxIndex=4;
index0_9bit=0;
index1_9bit=0;
ccnetStatus &= ~(1<
if (Device.base_configuration.configuration == MCONFIG_TWO_COMM) maxUsefulData = Device.base_configuration.ap5;
}
Ответы
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание