پاسخ : هنگ میکرو هنگام" PRINT "ATCMGR=1
سلام مشکلم تا حدودی حل شد.چجوری؟ اینجوری
با اومدن پیامک ،می رفتم برای ارسال دستورخوندن پیامک سیم کارت.مشکل ازز اینجا می اومدزمانی که به پورت سریال می گفتم پیامک سیم کارت بده بخونم،انگاری در همون حین وقفه سریال دوباره اتفاق می افتادو می رفت به isr وقفه ودر اینجا معلومه خطا ایجاد میشه. .به ناچار اومدم زمانی که دستور خوندن پیام و میدادم به ماژول وقفه رو با disable urxc غیر فعال می کردم.همزمانی که کار خودندن پیام تموم میشد دوباره فعال می کردم.مشکلم حل شد.ولی باز هم دوستان این برنامه یک برنامه صنعتی است.در یک محیط پرنویز .آیا این روش مشکلی در روند کارنداره؟
اطلاعیه
Collapse
No announcement yet.
هنگ میکرو هنگام" PRINT "ATCMGR=1
Collapse
X
-
پاسخ : هنگ میکرو هنگام" PRINT "ATCMGR=1
اگه از این روش استفاده نکردی، پیشنهاد میکنم از این روش بری جلونوشته اصلی توسط Namvar14 نمایش پست هاطول رشته pms برابر 250 هست .مطمینم از اون نست.
بعد کلی ور رفتن متوجه یک قضیه شدم.
زمانی که وقفه فرمان وجود پیامک رو در بافر میاره در ابتدای کار وقفه سریال یا وقفه کلی رو غیر فعال می کنم میرم و پیام رو می خونم.
پیام خونده میشه و برای یک بار پیام ارسالی رو نشون میده بعد از اون دوباره وقفه کلی رو در داخل برنامه فعالش می کنم دوباره هنگ میکنه این سری ریست نمیشه برنامه در همونجا میمونه.
ولی اگر وقفه کلی غیر فعال نشه هنگام ارسال دستورکلا هنگ می کنه.و ریست میشه.کد:PRINT "AT+CMGR=1"
اساتید علت ؟
یک دیدگاه بنویسید:
-
پاسخ : هنگ میکرو هنگام" PRINT "ATCMGR=1
دوستان لطفا وقت بذارید و تجربیات خودتون رو بگید.چرا باید دردستورمورد نظر مون میکرو به حالت هنگ بره.
چه دلایلی باعث مشه این اتفاق بیفته.
یک دیدگاه بنویسید:
-
پاسخ : هنگ میکرو هنگام" PRINT "ATCMGR=1
طول رشته pms برابر 250 هست .مطمینم از اون نست.
بعد کلی ور رفتن متوجه یک قضیه شدم.
زمانی که وقفه فرمان وجود پیامک رو در بافر میاره در ابتدای کار وقفه سریال یا وقفه کلی رو غیر فعال می کنم میرم و پیام رو می خونم.
پیام خونده میشه و برای یک بار پیام ارسالی رو نشون میده بعد از اون دوباره وقفه کلی رو در داخل برنامه فعالش می کنم دوباره هنگ میکنه این سری ریست نمیشه برنامه در همونجا میمونه.
ولی اگر وقفه کلی غیر فعال نشه هنگام ارسال دستورکلا هنگ می کنه.و ریست میشه.کد:PRINT "AT+CMGR=1"
اساتید علت ؟جدیدترین ویرایش توسط Namvar14; 2018/09/21, 06:44.
یک دیدگاه بنویسید:
-
پاسخ : هنگ میکرو هنگام" PRINT "ATCMGR=1
سلامنوشته اصلی توسط Namvar14 نمایش پست هادوستان الان من به راختی دستور; atd+999158871616 برای برقراری تماس می فرستم.تماس برقرار میشه و برنامه ریست نمیشه این یعنی پایه rxماژول دستورات و می گیره.فقط با at+cmgr=1مشکل داره.
امرزو میکرو رو ه عوض کردم نشد.عجیبه.
شاید دستوری رو برای ماژول فرستادم.اینجوری شده.
اینم بگم دستورat+cmgr=1رو با هایپر ترمینال ویندوز به ماژول میدم مشکلی نداره.چرا اینجوری میشه.؟
طول رشته pms به اندازه ای هست که بتونه کل متن پیام رو درون خودش جا بده؟؟
به نظر من برنامه از طول رشته pms تجاوز میکنه که این اتفاق ممکنه باعث ریست شدن میکرو بشه
- تشکرها 1
یک دیدگاه بنویسید:
-
پاسخ : هنگ میکرو هنگام" PRINT "ATCMGR=1
دوستان الان من به راختی دستور; atd+999158871616 برای برقراری تماس می فرستم.تماس برقرار میشه و برنامه ریست نمیشه این یعنی پایه rxماژول دستورات و می گیره.فقط با at+cmgr=1مشکل داره.
امرزو میکرو رو ه عوض کردم نشد.عجیبه.
شاید دستوری رو برای ماژول فرستادم.اینجوری شده.
اینم بگم دستورat+cmgr=1رو با هایپر ترمینال ویندوز به ماژول میدم مشکلی نداره.چرا اینجوری میشه.؟
یک دیدگاه بنویسید:
-
هنگ میکرو هنگام" PRINT "ATCMGR=1
سلام دوستان
اخیرا یک پروژه با سDم 800 و بیسک راه اندازی کردم.
از اینتراپت وقفه سریال استفاده کردم.هر وفت وقفه سریال فعال میشه .در داخل وقفه بصورت نمونه کد زیر مقدار بافرUDRرادر متغیر رشته ای RINGذخیره می کنم.
تابع وقفه :
عبارت وقفه رو درست دریافت می کنه هر وقت زنگ می زنم بدون کمترین اشتباهی عبارت RING میده یا هر وقت پیام میدم عبارت CMTI= "SM"1+ رو هم میده شاید صد بار تست کردم و هیچ وقت اشتباه نشده .کد:Capture: B = Udr If B <> 10 And B <> 13 And B <> 0 Then Ring = Ring + Chr(b) If B = 10 Then Incr T If T = 2 Then : Zing = Ring : T = 0 : Ring = "" : End If Return
اما مشکل از اونجا پیش میاد که ووقتی از روی اطلاعات سریال متوجه وجود پیام میشم به تابع دریافت پیامک میرم و عبارت "PRINT "AT+CMGR=1رو برای میکرو می فرستم در اخل تابع دریافت پیامک برای ماژول می فرستم .
اما بعد از ارسال این دستور میکرو هنگ می کنه.و برنامه از اول اجرا میشه.
تابع خوندن پیامک:
والا الان چند روزه که درگیر این قضیه هستم.تابع دریافت پیامک درسته چون قبلا با این کار کردم.کد:Resive_pm: Print "AT+CMGR=1" B = 0 : Pms = "" Do B = Inkey() Select Case B Case 0 Case 10 Case 13 If Pms <> "" Then Exit Do Case Else Pms = Pms + Chr(b) End Select Loop Return
حیران موندم.جدیدترین ویرایش توسط Namvar14; 2018/09/19, 00:57.
یک دیدگاه بنویسید: