اطلاعیه

Collapse
No announcement yet.

مشکل در ارسال اطلاعات با USART

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

    #16
    پاسخ : مشکل در ارسال اطلاعات با USART

    نوشته اصلی توسط --نیلوفر--
    ممنون بابت توضیحاتتون... و اینکه اینقدر زیاد سوال میپرسم!

    خب اون وقت چطوری باید عددم رو تو دو مرحله بفرستم؟

    یه سوال دیگه هم دارم: مهم نیس که اطلاعات رو چند بیتی بفرستم؟ منظورم مودهای 7بیتی و 8بیتی و 9بیتیه. واینکه آیا لازمه که هر بایت رو چندین بار بفرستم؟ اونطور که بقیه میگن، خطای سریال بالاست و اگه سیم رابطش بلندتر از 10سانت باشه، بیشتر هم میشه...
    خواهش میکنم
    اگر میخواهید به همون شکل که گفتم دریافت کنید. باید به صورت زیر ارسال کنید:
    مثلا ما یک متغییر int data داریم . اول باید بایت پر ارزش را ارسال کنید:
    کد:
    	(UDR=(char)(data>>8;
    بعد تو روتین وقفه ارسال سریال بایت کم ارزش را ارسال کنید:
    کد:
    UDR=(char)data;
    کمتر از 8 بیت که کلا کارو خراب میکنه . بهتره همون 8 بیتی بفرستید. براچی چند بار ؟ میتونید خودتون یک پروتکل به شکل tcp ایجاد کنید و ack دریافت کنید . ولی لازم نیست همون یک بیت توازن کافیه(اگه خیلی وسواس دارید) .
    ببنید با این روش که ارسال میکنید (آسنکرون) خیلی مهمه سرعت دو طرف با هم مچ باشه و در صورتی که اختلاف کمی داشته باشه تو سرعت های بالا این اختلاف محسوس و باعث خطا میشود. بهتره برای جلوگیری از خطا ، برای دادن کلاک به میکرو از کریستال خارجی 11.0592 مگاهرتز استفاده کنید و در صورتی که سرعت ارسال براتون مهم نیست ، از سرعت پایین تر استفاده کنید.
    در رابطه برد هم بهتره از max232 استفاده کنید. (برید این پستم رو بخونید : http://www.eca.ir/forum2/index.php?topic=72433.msg485490#msg485490 )
    راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
    کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
    نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
    http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
    انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

    دیدگاه


      #17
      پاسخ : مشکل در ارسال اطلاعات با USART

      میتونید خودتون یک پروتکل به شکل tcp ایجاد کنید و ack دریافت کنید
      میشه درباره tcp هم توضیح بدین؟ :nerd:

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

      (عبدالرضا کشاورز)

      دیدگاه


        #18
        پاسخ : مشکل در ارسال اطلاعات با USART

        نوشته اصلی توسط --نیلوفر--
        میشه درباره tcp هم توضیح بدین؟ :nerd:
        :eek: می خواید عملی کنید؟؟ یعنی انقدر قابلیت اطمینان مهمه؟ یک بیت parity رو که قبول ندارید. به صورت کد همینگ هم میتونید بفرستیدا. فکر کنم اونم قبول ندارید

        ببینید من یک توضیح کلی در رابطه با پروتکل tcp بهتون میدم ، عملی کردنش با خودتون(البته نظر خوبیه و همچنین شدنیه ولی یک مقدار زمان بره)

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

        منظور من از tcp خود پروتکل اون نیست بلکه خاصیت این پروتکل است که یک ارتباط ( rdt ( reliable data transfer فراهم میکند. این خاصیت در دو لایه شبکه به نام transfer و data link وجود دارد . که tcp یک پروتکل لایه transfer است ولی بحث ما اینجا همون لایه دیتا لینک(و فیزیکال) میباشد. بگذریم نمیخوام زیاد گیجتون کنم، کلا این خاصیت اینجوری بوجود میاد:
        با فرستادن اطلاعات توسط فرستنده و دریافت آن توسط گیرنده ، گیرنده یک تصدیق ( acknowledge (همون ACK که گفتم) ) به فرستنده میفرستد ، که دیتا را درست دریافت کردم یا نه.
        خوب طرح کلی اینجوری بود، یعنی دوطرف باید قابلیت ارتباط دوطرفه را داشته یاشند( tranciever باشند(قابلیت گیرنده و فرستنده بودن همزمان)) که usart میکرو این قابلیت را دارد.

        خوب برای توضیح بیشتر میشه گفت :
        در طرف فرستنده:
        زمانی که فرستنده دیتا را میفرستد باید تایمر میکرو فعال شود و منتظر وقفه دریافت سریال بماند . در صورتی که دریافت ACK با موفقیت همراه بود در همان روتین وقفه دریافت باید تایمر ریست شود. حالا اگه ACK دریافت نشد ، میکرو از سمت تایمر وقفه میخورد و این به معنی این است که باید دیتا دوباره فرستاده شود(retransmit ).

        در طرف گیرنده :
        زمانی که گیرنده دیتا ( تو شبکه بیشتر میگن packet ) را دریافت کرد باید به حالت فرستنده رود و ACK پکت دریافت شده را بفرستد.

        این کار بسیار پیچیده تر از این حرفاست و همیشه امکان مشکل و تداخل بوجود می آید.(همه چیز باید حساب شده باشد (یکیش زمان سرریز تایمر در فرستنده است که بهش میگن زمان time out که اگه درست ست نشه عواقب بدی درپی داره) ) تازه میشه با parity یا همینگ یا CRC تلفیق کرد (که اکثرا اینکار را میکنند) و به همراه دیتا بیتهای مذکور و packet id را در یک packet قرار داد و فرستاد.
        مطالب در این رابطه بسیار زیاد است و در توان من نیست که همه را توضیح بدم. باید تحقیق کنید.
        ولی اگر یک ارتباط ساده میخواهید (حتی برای پروژه های صنعتی) توصیه میکنم به هیچ عنوان دنبال اینچیزا نرید که الکی زمان رو از دست میدید... (من تاحالا ندیدم برای پروژه ای از این کارا کنن - فوق فوقش با استاندارد rs485 چندتا میکرو رو شبکه میکنند و خیلی راحت برای هرکدوم آدرس ست میکنند و به همراه دیتا انتقال میدهند.)



        راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
        کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
        نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
        http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
        انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

        دیدگاه


          #19
          پاسخ : مشکل در ارسال اطلاعات با USART

          ببینید من یک توضیح کلی در رابطه با پروتکل tcp بهتون میدم ، عملی کردنش با خودتون(البته نظر خوبیه و همچنین شدنیه ولی یک مقدار زمان بره)
          ممنون از حوصله تون....
          فکر کنم همون بهتر که به پریتی قانع شم....
          قامت انسان با لباس انسانیت شکل می گیرد،
          والا مترسک جالیز را هم می توان لباسی فاخر پوشاند

          (عبدالرضا کشاورز)

          دیدگاه


            #20
            پاسخ : مشکل در ارسال اطلاعات با USART

            RubeuSگرامی

            کاری که گفتید رو تست کردم؛ البته با یه پریتی که اون رو هم تو مرحله اول چکش نمیکنم.... ولی حتی شبیه سازی پروتئوسش هم جواب نداد!

            میخاستم ببینم اگه کدی که زدم رو بذارم، حوصله میکنید و یه نگاهی بهش میندازین؟
            قامت انسان با لباس انسانیت شکل می گیرد،
            والا مترسک جالیز را هم می توان لباسی فاخر پوشاند

            (عبدالرضا کشاورز)

            دیدگاه


              #21
              پاسخ : مشکل در ارسال اطلاعات با USART

              نوشته اصلی توسط --نیلوفر--
              RubeuSگرامی

              کاری که گفتید رو تست کردم؛ البته با یه پریتی که اون رو هم تو مرحله اول چکش نمیکنم.... ولی حتی شبیه سازی پروتئوسش هم جواب نداد!

              میخاستم ببینم اگه کدی که زدم رو بذارم، حوصله میکنید و یه نگاهی بهش میندازین؟
              کدوم کار؟؟ همون rdt با ردوبدل کردن ack ؟ !!! :eek: یا ارتباط سریال ساده با پریتی؟ آهان ، اون اولی که گفتید: int میخواستید بفرستید؟(شما اونو گفتید؟)

              کدتون رو بزارید خوب . اگه به زبان سی باشه ،تا جایی که بتونم کمک میکنم.
              راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
              کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
              نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
              http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
              انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

              دیدگاه


                #22
                پاسخ : مشکل در ارسال اطلاعات با USART

                اگه به زبان سی باشه ،تا جایی که بتونم کمک میکنم
                از شانس خوب من، زبونش cه... فقط یه مشکلی هس اونم اینه که کامنت گذاری نکردمش!

                فرستنده دائما میفرسته ولی تو گیرنده با اینتراپت میخونم...

                بخشهایی که کامنت شدن، همونایی اند که شما فرموده بودین انجام بدم ولی چون جواب نداد، عوضشون کردم..

                ممنون میشم یه نگاهی بهش بندازین...
                اینم لینکش:http://www.mediafire.com/?25bhf7b778uid89
                قامت انسان با لباس انسانیت شکل می گیرد،
                والا مترسک جالیز را هم می توان لباسی فاخر پوشاند

                (عبدالرضا کشاورز)

                دیدگاه


                  #23
                  پاسخ : مشکل در ارسال اطلاعات با USART

                  نوشته اصلی توسط --نیلوفر--
                  از شانس خوب من، زبونش cه... فقط یه مشکلی هس اونم اینه که کامنت گذاری نکردمش!

                  فرستنده دائما میفرسته ولی تو گیرنده با اینتراپت میخونم...

                  بخشهایی که کامنت شدن، همونایی اند که شما فرموده بودین انجام بدم ولی چون جواب نداد، عوضشون کردم..

                  ممنون میشم یه نگاهی بهش بندازین...
                  اینم لینکش:http://www.mediafire.com/?25bhf7b778uid89
                  فایلتون بلاک شده
                  File Blocked for Violation.



                  راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                  کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                  نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                  http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                  انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                  دیدگاه


                    #24
                    پاسخ : مشکل در ارسال اطلاعات با USART

                    همین یه ساعت پیش پلودش کرده بودم!

                    اینم یه لینک جدید:http://www.mediafire.com/?3pax8juuswxt7yv

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

                    (عبدالرضا کشاورز)

                    دیدگاه


                      #25
                      پاسخ : مشکل در ارسال اطلاعات با USART

                      نوشته اصلی توسط --نیلوفر--
                      همین یه ساعت پیش پلودش کرده بودم!

                      اینم یه لینک جدید:http://www.mediafire.com/?3pax8juuswxt7yv

                      قبلی رو هم تست کردم، سالم بود ها!
                      بازهم همون ارور را میده:
                      File Blocked for Violation.
                      The file you requested has been blocked for a violation of our Terms of Service.

                      کدتون رو تو یک پست و با استفاده از تگ کد(علامت شارپ) قرار بدید.
                      راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                      کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                      نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                      http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                      انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                      دیدگاه


                        #26
                        پاسخ : مشکل در ارسال اطلاعات با USART


                        اگر این لینک هم نشد، کاری که گفتین رو میکنم:
                        http://s4.picofile.com/file/78622447...t_sim.rar.html


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

                        (عبدالرضا کشاورز)

                        دیدگاه


                          #27
                          پاسخ : مشکل در ارسال اطلاعات با USART

                          نوشته اصلی توسط --نیلوفر--

                          اگر این لینک هم نشد، کاری که گفتین رو میکنم:
                          http://s4.picofile.com/file/78622447...t_sim.rar.html
                          بله این لینک درست بود.(فقط من نمیدونم این تمایل به کدویزارد چیه که همه دوست دارن با کدویزارد کار کنن( اصلا منطق کدویزارد یه منطق اشتباه هست (کی گفته باید تمامیه رجیسترها همون اول مقدار دهی بشن؟)
                          لطفا کاری که میخواهید انجام بدید(با پورت سریال) را توضیح دهید(همون عدد 3 4 رقمیه؟).(اخه نوشتنش سریعتر از خوندن از روی کد نوشته شده است(ماشاالله از دیفاینم کم نزاشتیدا))
                          راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                          کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                          نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                          http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                          انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                          دیدگاه


                            #28
                            پاسخ : مشکل در ارسال اطلاعات با USART

                            همون عدد 3 4 رقمیه؟
                            بله، برا همون فرستادن عدد سه چهار رقمیه....
                            ماشاالله از دیفاینم کم نزاشتیدا
                            دیفاین ها هم کار من نیست! خود کدویژن گذاشته!
                            فقط من نمیدونم این تمایل به کدویزارد چیه که همه دوست دارن با کدویزارد کار کنن
                            دلیل استقبال از کدویزارد هم به خاطر اینه که اینترفیس خوبی داره و نیازی نیست که به رجیسترهای همه میکروها تسلط داشته باشی...
                            قامت انسان با لباس انسانیت شکل می گیرد،
                            والا مترسک جالیز را هم می توان لباسی فاخر پوشاند

                            (عبدالرضا کشاورز)

                            دیدگاه


                              #29
                              پاسخ : مشکل در ارسال اطلاعات با USART

                              سلام.
                              برنامه های شما رو یه ادیت کوچولو کردم ، کاری که میخواستین رو الان انجام میده و روی ال سی دی عدد 1022 که به عنوان نمونه در برنامه در نظر گرفته بودین رو نمایش میده. همونطور که جناب Rubeus توضیح دادن اول 8 بیت کم ارزش و سپس 8 بیت پرارزش ارسال می شه و درگیرنده بازسازی می شه.
                              البته برای استفاده نهایی تو یه پروژه به خصوص باید ملاحظات بیشتری را در نظر گرفت ، من سعی کردم برنامه با ساده ترین حالت ممکن نوشته بشه.

                              http://www.4shared.com/rar/HTdIzcsU/..._test_sim.html

                              دیدگاه


                                #30
                                پاسخ : مشکل در ارسال اطلاعات با USART

                                نوشته اصلی توسط --نیلوفر--
                                دلیل استقبال از کدویزارد هم به خاطر اینه که اینترفیس خوبی داره و نیازی نیست که به رجیسترهای همه میکروها تسلط داشته باشی...
                                خوب این اینترفیس خوب و راحت کردن کاربر ، به قیمت دور کردن شما از قدرت و انعطاف c تموم میشه.
                                راستی من یه نگاه به کدهایی که کدویزارد براتون تولید کرده بود انداختم ، به یک مقدار دهی جالب برخودم(شما که مقادیر رو خودتون دستکاری نکردید؟)
                                ;UCSRC=0x06
                                این مقداردهی واقعا گریه داره :cry2: :cry2:

                                حالا شما برنامه زیر رو فقط نگاه و مقایسه کنید.(بعدش میفهمید چرا میگم کدویزارد خوب نیست) (متغییر سراسری int data داخل فرستنده را مقدار دهی کنید و در السیدی طرف گیرنده خواهید دید )
                                http://mortazavi91.persiangig.com/projects/USART.rar
                                راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                                کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                                نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                                http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                                انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                                دیدگاه

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