[an error occurred while processing this directive]
Constructor+init
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено AND 14 февраля 2006 г. 17:09
В ответ на: Да ради Бога. В теле сообщения процедура инициализации и обработчик. отправлено <font color=gray>Sgrig_</font> 14 февраля 2006 г. 16:52

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++;


//блокируется 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_IDCR = (1< AT91C_BASE_AIC->AIC_SVR[id] = (ulong)US0_irq_handler;// Save the interrupt handler routine pointer
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_IDCR = (1< AT91C_BASE_AIC->AIC_SVR[id] = (ulong)US1_irq_handler;// Save the interrupt handler routine pointer
AT91C_BASE_AIC->AIC_SMR[id] = AT91C_AIC_SRCTYPE_INT_EDGE_TRIGGERED | 5; //приоритет и фронт
}

AT91C_BASE_AIC->AIC_ICCR = (1<AT91C_BASE_AIC->AIC_IECR =(1<pBase->US_IDR =0xFFFFFFFF; //блокирую все прерывания
//сброс и блокировка приемника и передатчика
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

//сброс PDC
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;

//mode - async,normal,MCK,8bit,no parity,1stop
if (bit9==0) pBase->US_MR=0x000008C0;
else pBase->US_MR=0x000208C0;
}

/***********************************************************************************
инициализация приема - в прерывании - 9-битного...
***********************************************************************************/
void TUART::firstInitRx9bitReceiver()
{

baseAdr->US_IDR =0xFFFFFFFF; //блокирую все прерывания DEBUG !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

this->baseAdr->US_IDR = AT91C_US_RXRDY;//запр.прерывание по приему
baseAdr->US_CR=AT91C_US_RSTRX; //
baseAdr->US_CR=AT91C_US_RXEN;

bufPtr=rxBuf0_9bit;
rxIndex=4;
index0_9bit=0;
index1_9bit=0;
ccnetStatus &= ~(1<TwoComm->reloadWatchTimer(this);
if (Device.base_configuration.configuration == MCONFIG_TWO_COMM) maxUsefulData = Device.base_configuration.ap5;

baseAdr->US_IER = 1;//AT91C_US_RXRDY;//разр.прерывание по приему
}

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru