اطلاعیه

Collapse
No announcement yet.

نویز یا خطای برنامه نویسی ؟

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    نویز یا خطای برنامه نویسی ؟

    سلام.وقت بخیر دوباره دوستان

    ی مشکل عجیب برای خواندن از روی پورت سریال میکرویی که متصل شده به یک SIM900 برام پیش اومده :

    پیش توضیحات : 1. برنامه نویسی بیسک
    2. میکرو meg128
    3. تغذیه lm317
    4.وقفه ی سریال
    حالا مشکل از اینجا شروع میشه که وقتی پیام میاد برای ماژول ، گاهی اوقات مثلا به جای اینکه متن CMTI کامل بیاد ، یا ناقص میاد و یا اینکه بین حروفش سیمبل هایی مثه قلب و ...


    اینطور چیزا میاد و باتوجه به اینکه من با توجه به متن دقیق +CMTI چک می کنم و شرط دارم گاهی اوقات پیام ها رو از دست می دم


    این بخاطر نویزه ؟ برنامه نویسیه ؟


    اینم بگم وقتی پیغام CMTI کامل و دقیق میاد ومن متنو میخونم مشکلی اصلا به وجود نمیاد


    اینم برنامه


    کد:
     If Risim900 = 0 Then
    
           Stop Timer0
    
           If L = 1 Then
    
             Wait 1
    
             If Risim900 = 0 Then
    
                 Print #1 , "ATH"
                 Cls
                 Home
                 Lcd "ATH"
                 Initval = ""
    
             Else
    
                 If Instr(initval , "+CDS") = 0 Then
    
                   Home
                   Cls
                   Lcd "Omad SMS"
                   Locate 2 , 1
                   Lcd Initval
                   Wait 1
                   Counterv(3) = 0 : Initval = ""
                   Hexinitval = 1
                   Gosub Smsreading
                   Counterv(3) = 0 : Initval = ""
                   Hexinitval = 1
                   M = 1
    
                 Else
    
                 Initval = ""
    
                 End If
             End If
    
             L = 0
    
           End If
    
      Else
    
         Start Timer0
         Initval = ""
    
         If M = 1 Then
    
           Lcd "Deletting Message Now "
           M = 0
           For C = 1 To 50 Step 1
    
            Print #1 , "at+cmgd=" ; C
            Waitms 100
    
           Next
           Lcd "Delete Message Ok"
           Cls
           Home : Lcd "**Ready To Use**"
    
         End If
    
      End If
    اینم وقفه ی سریال
    کد:
     Serrecieve:
    
        L = 1
        Raw = Waitkey(#1)
        Initval = Initval + Chr(raw)
    
        If Raw = 10 Then Incr I
    
        If J = 1 Then
        Initval1 = Initval1 + Chr(raw)
        End If
    
        If I = 2 And K = 1 Then J = 1
    
      Return
    ((( تا زماني که به قدرت نرسيده اي فرمانبردار باش و چون به آن رسيدي، فروتن. )))

    ((( سکه ها هميشه سر و صدا مي کنند ، اما پول هاي کاغذي همواره ساکت اند. پس وقتي ارزش شما زياد مي شود، ساکت و فروتن باقي بمانيد.)))

    #2
    پاسخ : نویز یا خطای برنامه نویسی ؟

    با سلام
    من با بیسیک کارنکردم اما یه حالتو چک کن سرعت سریال بین sim900و میکرو باید یه سرعت یکسان باشه اگه خواستی بگو با زبان cبرات بزارم

    دیدگاه


      #3
      پاسخ : نویز یا خطای برنامه نویسی ؟

      نوشته اصلی توسط 1morteza
      با سلام
      من با بیسیک کارنکردم اما یه حالتو چک کن سرعت سریال بین sim900و میکرو باید یه سرعت یکسان باشه اگه خواستی بگو با زبان cبرات بزارم
      باد ریت تنظیم شدس با 1200 تست گرفتم 4800 -9600 -19200

      اما بازم اطلاعات انگار نویزی شدن
      ((( تا زماني که به قدرت نرسيده اي فرمانبردار باش و چون به آن رسيدي، فروتن. )))

      ((( سکه ها هميشه سر و صدا مي کنند ، اما پول هاي کاغذي همواره ساکت اند. پس وقتي ارزش شما زياد مي شود، ساکت و فروتن باقي بمانيد.)))

      دیدگاه


        #4
        پاسخ : نویز یا خطای برنامه نویسی ؟

        خوب دلایل مختلفی می تونه داشته باشه. مثلا فیوزبیت کلاک ،کریستال میکرو و خازن هاش درست تنظیم و جایگذاری نشده باشند.

        ولی اگر همه این ها هم درست باشه از مد Parity هم استفاده کن ببین چی میشه.
        به دنبال علم رفتم تا عالم شوم،
        گاوها حمله کردند...گاوباز شدم

        دیدگاه


          #5
          پاسخ : نویز یا خطای برنامه نویسی ؟

          سلام
          NKstar درست می فرمایند
          این جور مشکل ها اکثرا از فیوز بیت و کریستال و کلاک و بادریت هست.

          دیدگاه


            #6
            پاسخ : نویز یا خطای برنامه نویسی ؟

            نوشته اصلی توسط NKstar
            خوب دلایل مختلفی می تونه داشته باشه. مثلا فیوزبیت کلاک ،کریستال میکرو و خازن هاش درست تنظیم و جایگذاری نشده باشند.

            ولی اگر همه این ها هم درست باشه از مد Parity هم استفاده کن ببین چی میشه.
            کریستال خارجی 8 مگا هرتز با خازن های 22 پیکو

            مدارم فراوون 100 نانو داره
            چون ی عالمه کار داره انجام میده

            ارتباط با pc, keypad,Lcd,sim900

            برای تنظیم پریتی در بسکام چطور باید عمل کنم و اینکه برای ماژول هم این امکان وجود داره؟
            ((( تا زماني که به قدرت نرسيده اي فرمانبردار باش و چون به آن رسيدي، فروتن. )))

            ((( سکه ها هميشه سر و صدا مي کنند ، اما پول هاي کاغذي همواره ساکت اند. پس وقتي ارزش شما زياد مي شود، ساکت و فروتن باقي بمانيد.)))

            دیدگاه


              #7
              پاسخ : نویز یا خطای برنامه نویسی ؟

              میتونه مشکل از نویز انتن ماژول sim900 باشه

              چون کمی ماژولو از مدارم دور گذاشتم بهتر شد اما رفع نشددددد

              و یا اینکه تغذیه مثلا با

              lm317

              خوب ج نمیده؟

              ویا اینکه میشه بگید برای اینکه پایه های RX,TX از نویز مغناطیسی محافظت بشن باید چیکار کنم؟ مثلا مداری با هرچیزی که اطلاعات پورتو خراب نکنه و

              همزمان رفع نویز کنه
              ((( تا زماني که به قدرت نرسيده اي فرمانبردار باش و چون به آن رسيدي، فروتن. )))

              ((( سکه ها هميشه سر و صدا مي کنند ، اما پول هاي کاغذي همواره ساکت اند. پس وقتي ارزش شما زياد مي شود، ساکت و فروتن باقي بمانيد.)))

              دیدگاه


                #8
                پاسخ : نویز یا خطای برنامه نویسی ؟

                نوشته اصلی توسط mamaly2008
                کریستال خارجی 8 مگا هرتز با خازن های 22 پیکو
                من به شخصه نتونستم از کریستال خارجی تو ارتباط های سری نتیجه بگیرم.
                قبلا مشکل مشابه مشکل شمارو داشتم ولی وقتی از کلاک داخلی استفاده کردم مشکل حل شد.
                البته شنیدم کلاک داخلی به دما خیلی حساسه.

                دیدگاه


                  #9
                  پاسخ : نویز یا خطای برنامه نویسی ؟

                  متاسفانه من با کلاک داخلی نمی تونم حتی با ماژول اترتباط برقرار کنم

                  کاری که شما انجام دادید ظاهرا شبیه معجزه بوده :applause:
                  ((( تا زماني که به قدرت نرسيده اي فرمانبردار باش و چون به آن رسيدي، فروتن. )))

                  ((( سکه ها هميشه سر و صدا مي کنند ، اما پول هاي کاغذي همواره ساکت اند. پس وقتي ارزش شما زياد مي شود، ساکت و فروتن باقي بمانيد.)))

                  دیدگاه


                    #10
                    پاسخ : نویز یا خطای برنامه نویسی ؟

                    مهندس جان
                    شدیدا از وقفه بسکام پرهیز کن
                    کلا از روتین وقفه که عملکردی شبیه gotoداره پرهیز کن
                    چه در زبان سی و چه در زبان بیسیک
                    دلیل؟
                    یه ال سی دی گرافیکی بزار و تو دو تا روتین وقفه نوشته هاشو عوض کن
                    بعد چند بار عملکرد صحیح به هم میریزه
                    ....
                    اما راه حل
                    چون بیسیک کار میکنی ...
                    برو تو هلپ بسکام بزن config serialin
                    بعد با If Ischarwaiting() = 1 Then از سر ریز رجیستر وقفه اطلاع پیدا کن
                    موفق باشید

                    دیدگاه


                      #11
                      پاسخ : نویز یا خطای برنامه نویسی ؟

                      سلام و نهایت تشکر بابت پاسختون
                      متاسفانه از دستور سریال این واستفاده از بافر سخت افزاری پورت سریال میکرو استفاده کردم ، قبل از استفاده از وقفه

                      اما اونجا بایستی از دستورات همچون input و یا inkey استفاده کنم ک مشکل پیش میومد

                      اینطوری نوشته بودم
                      کد:
                      do 
                      
                      if ischarwaitting()<>0 then exit do
                      
                      loop
                      
                      input Initval
                      البته این کد کامل نیس

                      اما مساله ی اساسی اینجا بود که وقتی اس ام اس میاد چندین کاراکتر 13 و 10 میاد و از اونجایی که هروقت کاراکتر 10 یا 13 بیاد از input خارج میشه

                      عملا درست کار نمیکرد ( اینو هم بگم که کاری در برنامه انجام دادم که اونم درست بشه ولی بازم قابل پیش بینی نبود که چی قراره روی پورت قرار بگیره)

                      بیایم از موضوع پرت نشیم

                      سوال اساسی من اینه ک چرا من هرچندبار یکبار باید اطلاعاتم نویزی بشه و داده های نامفهوم را روی پورت داشته باشم؟در صورتی که بیشتر اوقات برنامه

                      اطلاعات را بی نقص دریافت می نماید
                      ((( تا زماني که به قدرت نرسيده اي فرمانبردار باش و چون به آن رسيدي، فروتن. )))

                      ((( سکه ها هميشه سر و صدا مي کنند ، اما پول هاي کاغذي همواره ساکت اند. پس وقتي ارزش شما زياد مي شود، ساکت و فروتن باقي بمانيد.)))

                      دیدگاه


                        #12
                        پاسخ : نویز یا خطای برنامه نویسی ؟

                        نوشته اصلی توسط mamaly2008
                        سلام و نهایت تشکر بابت پاسختون
                        متاسفانه از دستور سریال این واستفاده از بافر سخت افزاری پورت سریال میکرو استفاده کردم ، قبل از استفاده از وقفه

                        اما اونجا بایستی از دستورات همچون input و یا inkey استفاده کنم ک مشکل پیش میومد

                        اینطوری نوشته بودم
                        کد:
                        do 
                        
                        if ischarwaitting()<>0 then exit do
                        
                        loop
                        
                        input Initval
                        البته این کد کامل نیس

                        اما مساله ی اساسی اینجا بود که وقتی اس ام اس میاد چندین کاراکتر 13 و 10 میاد و از اونجایی که هروقت کاراکتر 10 یا 13 بیاد از input خارج میشه

                        عملا درست کار نمیکرد ( اینو هم بگم که کاری در برنامه انجام دادم که اونم درست بشه ولی بازم قابل پیش بینی نبود که چی قراره روی پورت قرار بگیره)

                        بیایم از موضوع پرت نشیم

                        سوال اساسی من اینه ک چرا من هرچندبار یکبار باید اطلاعاتم نویزی بشه و داده های نامفهوم را روی پورت داشته باشم؟در صورتی که بیشتر اوقات برنامه

                        اطلاعات را بی نقص دریافت می نماید
                        عین دستوری که نوشتم رو تست کن
                        و به جای inkey همون waitkey رو بزار
                        تست کن مشکل نرم افزاریت با این کد درست میشه
                        اونوقت اگه باز مشکلی بود برو سراغ سخت افزار
                        اوضاع سخت افزارت چطوره؟

                        دیدگاه


                          #13
                          پاسخ : نویز یا خطای برنامه نویسی ؟

                          نوشته اصلی توسط Rezash86
                          عین دستوری که نوشتم رو تست کن
                          و به جای inkey همون waitkey رو بزار
                          تست کن مشکل نرم افزاریت با این کد درست میشه
                          اونوقت اگه باز مشکلی بود برو سراغ سخت افزار
                          اوضاع سخت افزارت چطوره؟
                          سلام ببینید من چطور نوشته بودم : اما بازم مشکلاتی داشت ، قک نمی کنم مشکل از برنامه باشه شاید از نویزه که روی سیم های rx , tx میفته
                          چون هر وقت اس ام اس میاد نویزی میشه اطلاعاتم ، وقتی میخام پیامو بخونم مشکلی نداره ( شاید چون دیگه امواج موبایلی دورو برش نیستن که نویز بیفته )

                          کد:
                          Callosms:
                          
                          
                          
                            Counterv(2) = 0 : Initval1 = "" : Initval2 = "" : Initval3 = ""
                          
                            Initval = Mid(initval , 1 , 15)
                          
                            Initval = Mid(initval , 14 , 2 )
                          
                            Hexinitval = Val(initval)
                            Print #3 , Hexinitval
                            Clear Serialin1
                            Print #1 , "AT+CMGR=" ; Hexinitval
                            Waitms 30
                            Dim B As Byte
                          
                            Do
                          
                              If Ischarwaiting(#1) > 0 Then Exit Do
                          
                            Loop
                          
                            Rep = 0
                          
                            Do
                          
                             B = Inkey(#1)
                          
                             Select Case B
                          
                               Case 0:
                          
                          
                               Case 10:
                          
                          
                               Case 13:
                          
                                If Rep = 5 Then
                                  If Initval1 <> "" And Initval2 <> "" Then Exit Do
                                End If
                                Incr Rep
                                'Print #3 , Rep
                               Case Else:
                          
                                If Rep = 2 Then
                                  Initval1 = Initval1 + Chr(b)
                                Elseif Rep = 3 Then
                                  Initval2 = Initval2 + Chr(b)
                                End If
                          
                             End Select
                          
                             If Initval1 = "OK" Or Initval2 = "OK" Then Exit Do
                          
                             Incr Counterv(2)
                          
                             Loop Until Counterv(2) = 20000
                          ((( تا زماني که به قدرت نرسيده اي فرمانبردار باش و چون به آن رسيدي، فروتن. )))

                          ((( سکه ها هميشه سر و صدا مي کنند ، اما پول هاي کاغذي همواره ساکت اند. پس وقتي ارزش شما زياد مي شود، ساکت و فروتن باقي بمانيد.)))

                          دیدگاه


                            #14
                            پاسخ : نویز یا خطای برنامه نویسی ؟

                            موضوع هنوز به نتیجه نرسیده >>>> :cry: :cry: :cry:
                            ((( تا زماني که به قدرت نرسيده اي فرمانبردار باش و چون به آن رسيدي، فروتن. )))

                            ((( سکه ها هميشه سر و صدا مي کنند ، اما پول هاي کاغذي همواره ساکت اند. پس وقتي ارزش شما زياد مي شود، ساکت و فروتن باقي بمانيد.)))

                            دیدگاه


                              #15
                              پاسخ : نویز یا خطای برنامه نویسی ؟

                              نوشته اصلی توسط mamaly2008
                              موضوع هنوز به نتیجه نرسیده >>>> :cry: :cry: :cry:
                              یه کاری بکن
                              خروجی یوارت gsm رو بده به برد بورد و یه الل سی دی اونجا تعبیه کن
                              نتیجه رو بگو

                              دیدگاه

                              لطفا صبر کنید...
                              X