پاسخ : USART
مشکل من از کد نویسیم بود
ربطی به میکرو نداشت
مشکل من از کد نویسیم بود
ربطی به میکرو نداشت
void US0_irq_handler(void) __irq
{
AT91F_US_DisableIt(AT91C_BASE_US0,0x0000FFFF);
getstr(buf); //Reading data from USART
// Do any thing else
AT91F_US_ResetRx(AT91C_BASE_US0);
AT91F_US_EnableIt(AT91C_BASE_US0,0x00000001);
AT91F_AIC_AcknowledgeIt(AT91C_BASE_AIC);
//* get Usart status register
}
int main(void)
{
//init_serial();
USART(18432000,9600,9600);
usart0_init();
// USART Interrupt
AT91F_US_ResetRx(AT91C_BASE_US0);
AT91F_AIC_ConfigureIt(AT91C_BASE_AIC,AT91C_ID_US0,5,AT91C_AIC_SRCTYPE_EXT_NEGATIVE_EDGE,US0_irq_handler);
AT91F_AIC_EnableIt(AT91C_BASE_AIC,AT91C_ID_US0);
AT91F_US_EnableIt(AT91C_BASE_US0,0x00000001);
while(1)
{
}
}
AT91F_US_DisableIt(AT91C_BASE_US0,0x0000FFFF);
AT91F_US_ResetRx(AT91C_BASE_US0); AT91F_US_EnableIt(AT91C_BASE_US0,0x00000001);
unsigned char buffer[16] ;
int front=0,rear=0;
void buffer_in(unsigned char x)
{
if(front == (rear+1)%16)
{
rear = front;
}
else
{
buffer[rear] = x;
rear = (rear+1)%16;
}
}
دیدگاه