پاسخ : مشکل با وقفه دریافت ارتباط سریال
دوستان عزیز این برنامه به طور کامل جواب داد و تست شد:
دریافت اطلاعات توسط اینتراپت انجام میشود
ارسال اطلاعات در حین اجرای برنامه انجام میشود
دوستان عزیز این برنامه به طور کامل جواب داد و تست شد:
دریافت اطلاعات توسط اینتراپت انجام میشود
ارسال اطلاعات در حین اجرای برنامه انجام میشود
کد:
#include <meisam_sam7s64io.h> #include <meisam_delay.h> // chon dar lcd.c be tore dasti "meisam_delay.h" ra include karde am inja naabyed benevisim #include <meisam_micro_init.h> #include <lcd.h> #include <lcd.c> #include <stdio.h> int ttt=0; void meisam_usart_receive_interrupt (void) __irq { int jj; char c[16]; ttt=*AT91C_US1_RHR&0x1FF; // received charachter PA2_ON; /////////////// MOHEM: nabayad dar tabee vaghfe az tavabee delay dar estefade kard/ /////////////// neveshtane 3 khate zir eshkal ijad mikonad //////////////////////// //lcd_gotoxy(0,0); // //sprintf(c,"meisam : %4d",jj); // //lcd_putsf(c); // ////////////////////////////////////////////////////////////////////////////////////// *AT91C_AIC_ICCR = 0xFFFFFFFF;(1 << AT91C_ID_US1); /* Interrupt Ack*/ *AT91C_AIC_EOICR = 0; /* End of Interrupt*/ } int main() { char c[16]; disable_watchdog(); enable_external_reset(); oscilators_init(1); //0=32k internal 1=48M crystal(18432M) *AT91C_PMC_PCER=(1<<AT91C_ID_PIOA); //enable I/O clock *AT91C_PMC_PCER=(1<<AT91C_ID_US1); // enable USART1 clock *AT91C_PIOA_PDR=(1<<21|1<<22); // enable peripheral for PA22,PA21 *AT91C_PIOA_MDER=(1<<21|1<<22); // enable multi drive for PA22,PA21 *AT91C_PIOA_ASR=(1<<21|1<<22); // select mode A *AT91C_US1_CR=0xC; //reset receiver & transmitter *AT91C_US1_MR=0x8D0;// 8 bit no_parity 1 stopbit normal mode MCK/8 *AT91C_US1_BRGR=0x9C; //BAUD RATE = 2400 *AT91C_US1_CR=0x50; //enable send and receive AT91C_AIC_SVR[AT91C_ID_US1] = (unsigned long) meisam_usart_receive_interrupt; AT91C_AIC_SMR[AT91C_ID_US1] =0x62; //AT91C_ID_PIOA=2 96=>proirity=0 falling edge sensitive *AT91C_AIC_ICCR =(1<<AT91C_ID_US1); *AT91C_US1_IER=0x1; *AT91C_AIC_IECR=(1<<AT91C_ID_US1); PA2_OUT; lcd_pininit(7,9,10,11,12,26,25,24,13,14); //(PA13->4lcd PA24->6lcd PA25->7lcd PA26->8lcd PA12->9lcd PA11->10lcd PA10->11lcd PA9->12lcd PA8->13lcd PA7->14lcd) lcd_init(); lcd_clear(); while(1) { delay(48000,1000); if(PA2==1) PA2_OFF; else PA2_ON; lcd_gotoxy(0,0); sprintf(c,"char:%4d ",ttt); lcd_putsf(c); if(PIN23==0) { while(*AT91C_US1_CSR&2!=2); // wait till usart gets ready for send *AT91C_US1_THR=73; // send charachtere 73 lcd_gotoxy(0,0); lcd_putsf("73 SENT!!"); delay(48000,2000); } } }
دیدگاه