سلام دوستان،
من دارم یه برنامه می نویسم که از طریق labview به میکرو فرمان بدیم تا یه سری کارهارو با توجه به رشته ورودی انجام بده. برنامه رو تو پزوتئوس شبیه سازی میکنم و بدون هیچ مشکلی اجرا میشه اما در عمل و روی میکرو درست پیش نمیره.
تابع زیر مربوط به قسمت وقفه دریافت اطلاعات USART است، میکرو وقفه رو میفهمه و روندش رو اجرا میکنه اما نتیجه مثل شبیه سازی نیست. مثلا وقتی میخوام رشته ورودی رو LCD کارکتری نشون بدم، هیچی نشون نمیده !!!
کسی از دوستان تا حالا این مشکلو داشته یا میدونه ناشی از کجاست ؟
ممنون..
من دارم یه برنامه می نویسم که از طریق labview به میکرو فرمان بدیم تا یه سری کارهارو با توجه به رشته ورودی انجام بده. برنامه رو تو پزوتئوس شبیه سازی میکنم و بدون هیچ مشکلی اجرا میشه اما در عمل و روی میکرو درست پیش نمیره.
تابع زیر مربوط به قسمت وقفه دریافت اطلاعات USART است، میکرو وقفه رو میفهمه و روندش رو اجرا میکنه اما نتیجه مثل شبیه سازی نیست. مثلا وقتی میخوام رشته ورودی رو LCD کارکتری نشون بدم، هیچی نشون نمیده !!!
کسی از دوستان تا حالا این مشکلو داشته یا میدونه ناشی از کجاست ؟
ممنون..
کد:
. . . char Input_Data[51]="P25150001000025Q25150001000025D12525251001200240/r"; // Received String from PC wit usart #define RX_BUFFER_SIZE 64 char rx_buffer[RX_BUFFER_SIZE]; interrupt [USART_RXC] void usart_rx_isr(void) { char status,data; status=UCSRA; data=UDR; if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0) { if (data=='P' && rx_wr_index==0) { rx_wr_index=1;rx_buffer[0]=data; } else if (data!='r' && rx_wr_index<=50) { rx_buffer[rx_wr_index]=data;rx_wr_index++ ; } else if (data=='r') { trcpy(Input_Data,rx_buffer); rx_wr_index=0; } } } . . . lcd_clear(); lcd_puts(Input_Data); . . .
دیدگاه