ببینید یعنی اگر فلش وصل باشه و بورد را روشن کنیم،برنامه اجرا میشه و فایل باز میشه و نوشته میشه و سپس خوانده و نمایش میده روی پورت سریال و فایلو میبنده و تمام.تا اینجا مشکلی نیست .بعد از این کارها اگر فلش جدا شود قاعدتا و طبق همین کد که برای 1768 هم اجرا کردم باید usbh_engin تشخیص دهد و استاتوس از وضعیت وصل به قطع تغییر کند و پیغام جدا شدن را بدهد،اما انگار نه انگار و خبری از پیغام نیست و در دیباگ هم خروجی تابع وضعیت هنوز 1 است،اما به محض اتصال دوباره ،متوجه قطع ارتباط می شود و دوباره وصل میشود: این هم کد آن که از یک مثال آماده استفاده شده است:
کد:
con = init_msd (""); /* initialize MSD */
con_ex = con | 0x80; /* force initial display */
while (1) {
usbh_engine_all();
con = usbh_msc_status(0, 0);
if (con ^ con_ex) { /* if connection changed */
if ((con ^ con_ex) & ~con & 1){ /* if device 0 not connected */
sprintf ((char*)state,"Disconnected Drive U0:\n\r");
UART_Send(UART_0,state,strlen((const char*)state),BLOCKING);
}
if ((con ^ con_ex) & con & 1){
con |= init_msd ("U0:");
UART_Send(UART_0,state,strlen((const char*)state),BLOCKING);
}
if ((con ^ con_ex) & con & 1){ /* if device 0 connected */
sprintf ((char*)state,"Connected Drive U0:\n\r");
UART_Send(UART_0,state,strlen((const char*)state),BLOCKING);
}
if (con){
sprintf ((char*)state,"OK All!\n\r "); /* display prompt */
UART_Send(UART_0,state,strlen((const char*)state),BLOCKING);
okflag=1;
}
else{
sprintf ((char*)state,"\nDrive not connected, please connect it ... ");
UART_Send(UART_0,state,strlen((const char*)state),BLOCKING);
okflag=0;
}
fflush (stdout);
con_ex = con;
}
if(okflag){
.... انجام عملیات باز کردن و خواندن و نوشتن فایل
}
}