پاسخ : 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; } }
دیدگاه