اطلاعیه

Collapse
No announcement yet.

مشکل در مورد ارتباط usart

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

    مشکل در مورد ارتباط usart

    سلام من یک ارتباط usart برقرار کردم بین دو میکرو که کریستال هر دو میکرو 8 مگا هرتز و همین طور میزان باود 9600/1200 / 1000 / 500 / (این باود ها را تست کردم ) و بافر در فرستنده و گیرنده از نوع رشته و با ظرفیت 20 کاراکتر هست ( dim k as string * 20 ) و سیم ارتباطی نیز شیلد دار می باشد ولی متاسفانه بعد از ارسال اطلاعات دفعه ی اول اطلاعات به درستی ارسال می شود و دریافت به صورت کامل صورت می گیرد ولی دفعات بعدی دریافت اطلاعات ناقص صورت می گیرد بدین صورت که تعدادی از کاراکتر ها از بین می روند دستگاهی که من دارم طراحی می کنم کلا لنگ این ارتباط یوزارت هستش اگه لطف کنید منو راهنمایی کنید چیکار کنم که یوزرات مشکلی نداشته باشه ممنون می شم فقط این رو هم مطح کنم که وقتی بعد از ارسال اطلاعات در فرستنده پایه int1 )d.3) در مگا 8 ) رو مثلا به مدت 500 میلی ثانیه یک و دوباره صفر می کنم اطلاعات 2 بار ارسال می شن ولی دیگه مشکلی از نظر ارسال در دریافت وجود نداره هرچند بار که اطلاعات ارسال کنم گرفته می شن فقط به ازای هر بار ارسال 2 بار یک برنامه اجزا می شه ممنون می شم اگه راهنمایی کنید :icon_razz: :smile: اگه به من کمک کنید که این بخش از دستگام درست بشه واقعا ممنونتون می شم چون کل دستگاه گیر این بخش ارتباط سریال هست اگه درست نشه هیچ بخشی با بقیه بخش ها هماهنگ نمی شه :sad: :sad:
    اشک هایی که پس از هر شکست ریخته میشوند همان عرق هاییست که برای پیروزی ریخته نشده است

    #2
    مکمل

    ِاد رفت بگم که از دستور printbin a va inputbin b برای ارسال و دریافت اطلاعات استفاده کردم (برنامه با رسیدن به خط inputbin b صبر می کنه تا اطلاعات برسه بعدش ادامه برنامه اجرا می شه )
    اشک هایی که پس از هر شکست ریخته میشوند همان عرق هاییست که برای پیروزی ریخته نشده است

    دیدگاه


      #3
      پاسخ : مشکل در مورد ارتباط usart

      احتمالا خطای ارسال زیاده! یه کاری کن: کریستالاتو عوض کن و به جای هر دو کریستال 11.0592مگاهرتز بذار و باد ریت رو هم روی 9600 که خطا رو صفر میکنه، حالا دوباره تست کن. اگه باز مشکلی بود به خاطر قرارهایی هست که واسه دو طرف گذاشتی یا باید میذاشتی و اینکارو نکردی.. حالا اینو تست کن اگه جواب نداد بگو تا در مورد اونا توضیح بدم.

      دیدگاه


        #4
        پاسخ : مشکل در مورد ارتباط usart

        نوشته اصلی توسط mehran901
        سلام من یک ارتباط usart برقرار کردم بین دو میکرو که کریستال هر دو میکرو 8 مگا هرتز و همین طور میزان باود 9600/1200 / 1000 / 500 / (این باود ها را تست کردم ) و بافر در فرستنده و گیرنده از نوع رشته و با ظرفیت 20 کاراکتر هست ( dim k as string * 20 ) و سیم ارتباطی نیز شیلد دار می باشد ولی متاسفانه بعد از ارسال اطلاعات دفعه ی اول اطلاعات به درستی ارسال می شود و دریافت به صورت کامل صورت می گیرد ولی دفعات بعدی دریافت اطلاعات ناقص صورت می گیرد بدین صورت که تعدادی از کاراکتر ها از بین می روند دستگاهی که من دارم طراحی می کنم کلا لنگ این ارتباط یوزارت هستش اگه لطف کنید منو راهنمایی کنید چیکار کنم که یوزرات مشکلی نداشته باشه ممنون می شم فقط این رو هم مطح کنم که وقتی بعد از ارسال اطلاعات در فرستنده پایه int1 )d.3) در مگا 8 ) رو مثلا به مدت 500 میلی ثانیه یک و دوباره صفر می کنم اطلاعات 2 بار ارسال می شن ولی دیگه مشکلی از نظر ارسال در دریافت وجود نداره هرچند بار که اطلاعات ارسال کنم گرفته می شن فقط به ازای هر بار ارسال 2 بار یک برنامه اجزا می شه ممنون می شم اگه راهنمایی کنید :icon_razz: :smile: اگه به من کمک کنید که این بخش از دستگام درست بشه واقعا ممنونتون می شم چون کل دستگاه گیر این بخش ارتباط سریال هست اگه درست نشه هیچ بخشی با بقیه بخش ها هماهنگ نمی شه :sad: :sad:
        فاصله بین 2 میکرو چقدره
        آیا از وقفه سریال استفاده کردی
        آیا تاخیر بین ارسال هات ایجاد کردی
        آیا داده هات همیشه 20 بایت هستن
        اگه برات ممکنه برنامه یا قسمتی از برنامه رو بزار

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






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

        دیدگاه


          #5
          ارسال و دریافت ناموفق در ارتباط usart

          بچه ها سلام متاسفانه مربوط به کریستال نمی شه برنامه اصلی من خیلی پیچده شده بزارم اینجا باید فقط چند صفحه توضیح بدم در موردش یک نمونه تست نوشتم همین مشکل رو داره به این صورت هست
          برنامه فرستنده :

          $regfile = "m8def.dat"
          $crystal = 8000000
          $baud = 500
          Config Pind.3 = Output
          Config Int0 = Falling
          Enable Interrupts
          Enable Int0
          On Int0 Sw
          Dim K As String * 20
          Set Portd.2
          K = "3021"
          Do
          Loop
          End
          Sw:
          Printbin K
          Set Portd.3
          Waitms 500
          Reset Portd.3
          Return
          و برنامه ی گیرنده بدین شکل :
          $regfile = "m8def.dat"
          $crystal = 8000000
          $baud = 500
          Config Pind.6 = Output
          Config Pind.0 = Input
          Set Portd.0
          Dim K As String * 20
          Do
          K = ""
          Inputbin K
          If Left(k , 2) = "30" Then
          Toggle Portd.6
          Waitms 500
          End If
          Loop
          End



          دفعه ی اول اطلاعات درست ارسال می شه و دوکاراکتر اول شامل عدد 30 هست دفعات بعدی 2 کاراکتر اول 30 نیست چون واکنش نشون نمی ده و در مورد فاصله باید بگم حد اکثر فاصله 30 سانت می تونه تو دستگاه باشه ولی سیم شیلد دار استفاده شده و فکر نمی کنم مشکل از فاصله و نویز باشه چون طبق چیزی که قبلا گفته بودم اگه پایه اینتراپت فعال بشه بعد از ارسال داده ها داده ها دوبار ارسال می شن ولی هر چند بار که ارسال کنیم درست ارسال می شن ممنون از پیگیریتون بچه ها :
          منظور از ایجاد وقفه بین ارسال و دریافت که دوستمون گفتن رو خوب متوجه نشدم ولی برنامه گیرنده منتظر دریافت هست تا زمانی که اطلاعات ارسال بشه بالافاصله اطلاعات در یافت می شه
          اشک هایی که پس از هر شکست ریخته میشوند همان عرق هاییست که برای پیروزی ریخته نشده است

          دیدگاه


            #6
            پاسخ : مشکل در مورد ارتباط usart

            هر دو کریستال رو 11.0592 مگ بزار
            مستقیما تو UDR بزار و بفرست
            من از توابع آماده خیلی ضربه خوردم
            کد ویژن خیلی بهتره

            دیدگاه


              #7
              پاسخ : ارسال و دریافت ناموفق در ارتباط usart

              نوشته اصلی توسط mehran901
              [b]بچه ها سلام متاسفانه مربوط به کریستال نمی شه برنامه اصلی من خیلی پیچده شده بزارم اینجا باید فقط چند صفحه توضیح بدم در موردش یک نمونه تست نوشتم همین مشکل رو داره به این صورت هست
              برنامه فرستنده :

              دفعه ی اول اطلاعات درست ارسال می شه و دوکاراکتر اول شامل عدد 30 هست دفعات بعدی 2 کاراکتر اول 30 نیست چون واکنش نشون نمی ده و در مورد فاصله باید بگم حد اکثر فاصله 30 سانت می تونه تو دستگاه باشه ولی سیم شیلد دار استفاده شده و فکر نمی کنم مشکل از فاصله و نویز باشه چون طبق چیزی که قبلا گفته بودم اگه پایه اینتراپت فعال بشه بعد از ارسال داده ها داده ها دوبار ارسال می شن ولی هر چند بار که ارسال کنیم درست ارسال می شن ممنون از پیگیریتون بچه ها :
              منظور از ایجاد وقفه بین ارسال و دریافت که دوستمون گفتن رو خوب متوجه نشدم ولی برنامه گیرنده منتظر دریافت هست تا زمانی که اطلاعات ارسال بشه بالافاصله اطلاعات در یافت می شه
              زمانی که از وقفه استفاده نمیکنی همین دردسر ها رو هم داری
              وقتی برنامه رو طوری مینویسی که تاخیر توش داره مدام باید سرکشی رو ادامه بدی نه اینکه تاخیر 500 میلی بزاری وسطش

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

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

              دیدگاه


                #8
                مشکل در مورد ارتباط usart

                خیلی ممنون که جواب دادین راستش اون waitms 500 میلی ثانیه اصلا مد نظر نیست ( چون برنامه با رسیدن به خط inputbin متوقف می شه تا اطلاعات برسه بعد این خط رد می شه و بعدش هم که رد شد دیگه اطلاعات ارسال نمی شه - پس نیازی کلا به بررسی مدام نیست - تا این که کارش تموم بشه بافر صفر بشه دوباره میاد پشت خط inputbin ) و این وقفه که باعث یک شدن پایه اینتراپت و صفر شدنش می شه باعث می شه اطلاعات 2 بار ارسال بشن و 2 بار هم دریافت بشن بدون کمترین مشکلی !می خواستم بدونم چرا این طور هست و اگه زحمتی نیست می بخشیدا ! سورسی اگه دارین در مورد ارتباط سریال یوزارت که برنامه منتظر و گوش بزنگ بمونه تا اطلاعات برسه و اونا رو بررسی کنه اگه بزارین خیلی خیلی ممنون می شم البته اگه لینکی چیزی هم از سایت معرفی کنید بازم ممنون می شم تو اینجام سرچ زدم چیزی که مد نظرم باشه پیدا نکردم در ضمن بگم با کریستال 8 مگ و باود 9600 فقط 0.16% خطا وجود داره که توی پروتیوس هیچوقت به مشکل بر نمی خوره برنامه فقط نمی دونم چرا توی عمل این همه کارای عجیب غریب می کنه ! البته مسئله نویز هم نمی تونه باشه چون همیشه دفعه اول خوب کارم یکنه و اگر بعد از هر ارسال پایه اینتراپت فعال بشه برا یک لحظه دیگه مشکلی پیش نمی یاد ولی طبق چیزی که قبلا گفتم اطلاعات دوبار ارسال می شه ( یک چیز دیگم بگم دوستان برد ها مونتاژ شدن باکریستال 8 مگ دیگه نمی تونم کریستال رو تغییر بدم ! تو پروتیوس با این کریستال مشکلی نداره !!)

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

                دیدگاه


                  #9
                  پاسخ : مشکل در مورد ارتباط usart

                  شما که از وقفه استفاده نکردید
                  فرض کن اطلاعات در زمان تاخیر 500 میلی اتفاق بیفته اون وقت یک بایت رو از دست دادی

                  دستور inputbin k روو به دستور زیر تغییر بده

                  INPUTBIN K , 4
                  به معنی اینکه 4 بایت دریافت کنه

                  اگه درست نشد بگو تا برنامه رو برات بزارم



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

                  دیدگاه


                    #10
                    مشکل در مورد ارتباط usart

                    lدوست عزیز ممنونم حتما این کارو می کنم ببینم درست می شه یا نه ولی ممکنه یکمی طول بکشه آخه الان یکم سرم شلوغ شده ولی تا چند وقت دیگه حتما شما رو مطلع می کنم که آیا درست شده یانه قربون دستت که جواب دادی :icon_razz: :rolleyes:
                    اشک هایی که پس از هر شکست ریخته میشوند همان عرق هاییست که برای پیروزی ریخته نشده است

                    دیدگاه


                      #11
                      مشکل در مورد ارتباط usart

                      سلام دوست من با اون روشی که گفتین بازم مشکل وجود داره و بهتر نشده :( :sad: به نظرتون کاری می شه کرد که یک میکرو به میکرو دیگه در فاصله 30 سانت 40 سانت بدون هیچ مشکلی یوزارت انجام بشه و در ارسال و دریافت مشکلی پیش نیاد هر پیشنهادی دارین بگیم ممنون می شم :d :x
                      اشک هایی که پس از هر شکست ریخته میشوند همان عرق هاییست که برای پیروزی ریخته نشده است

                      دیدگاه


                        #12
                        پاسخ : مشکل در مورد ارتباط usart

                        یه نگاهی به این بنداز:
                        http://www.special-topics.blogfa.com/post-4.aspx

                        دیدگاه

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