اطلاعیه

Collapse
No announcement yet.

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

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

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

    درود دوستان
    من میخواستم یه رشته 100 تایی رو تقریبا به هر یک ثانیه یک بار به کامپیوتر ارسال کنم . بنده یک دونه تایمر برام مونده (یکی pwm و یکی دیگه کانتر شدن) من برنامه اصلیم روندش با همون یکدونه تایمرم کنترل میشه و اگه توی وقفه تایمرم بخوام از دستور print استفاده کنم و رشته رو ارسال کنم همونطور که میدونید تا زمانی که این رشته ارسال نشه برنامه ادامه پیدا نخواهد کرد که این خودش یه 100 میلی ثانیه ای زمان میبره تغریبا که روند اجرایی و تایم هارو بهم میریزه .
    حالا میخواستم ببینم چطور میتونم ازاین دستور استفاده کنم و همونجور که داره اجرا میشه روند برنامه هم ادامه پیدا کنه و تایم ها بهم نخوره .

    #2
    پاسخ : ارسال و دریافت با پروتکل rs232 و متوقف نشدن برنامه

    کمک لطفا

    دیدگاه


      #3
      پاسخ : ارسال و دریافت با پروتکل rs232 و متوقف نشدن برنامه

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

      اگر منظور شما این هست که در وقفه می خواین داده ارسال نکنین(که همیشه باید همچین کاری کنین) با ست کردن متغییری می تونین در برنامه اصلی داده هاتون رو ب اتعقیب وضعیت متغییر ارسال کنین
      هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

      دیدگاه


        #4
        پاسخ : ارسال و دریافت با پروتکل rs232 و متوقف نشدن برنامه

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

        اگر منظور شما این هست که در وقفه می خواین داده ارسال نکنین(که همیشه باید همچین کاری کنین) با ست کردن متغییری می تونین در برنامه اصلی داده هاتون رو ب اتعقیب وضعیت متغییر ارسال کنین
        خیلی ممنون
        یعنی توی main اصلی برنامه رو بزارم شرط تکرار بشه و هروقت متغیر 1 شد برنهمه اجرا بشه ؟
        اونوقط در حین ارصال این وقتی وقفه ی تایمر رخ داد چی میشه ؟

        دیدگاه


          #5
          پاسخ : ارسال و دریافت با پروتکل rs232 و متوقف نشدن برنامه

          سالم خدمت همه ی دوستای گلم
          خیلی خوشحالم که دباره بعد یک ماه برگشتم به انجمن دوست داشتنی خودم.
          دوست عزیز اگر میشه بفرما که دقیقه پروژه ت چیه و از برنامه چی می خوای تا بتونیم بهتر راهنماییت کنیم.مطمئن باش اگر حوصله کنی این کار انجام شدنی هست
          به اميد ظهور مولامون که صد البته نزديک است

          دیدگاه


            #6
            پاسخ : ارسال و دریافت با پروتکل rs232 و متوقف نشدن برنامه

            والا توی پست اول توضیح دادم کامل چیزه ساده ای هست

            دیدگاه


              #7
              پاسخ : ارسال و دریافت با پروتکل rs232 و متوقف نشدن برنامه

              سلام

              خیلی ممنون
              یعنی توی main اصلی برنامه رو بزارم شرط تکرار بشه و هروقت متغیر 1 شد برنهمه اجرا بشه ؟
              اونوقط در حین ارصال این وقتی وقفه ی تایمر رخ داد چی میشه ؟
              بله ، یعنی هر وقت مقدار متغییر یک شد شما ارسال دادتون رو انجام بدین
              هر وقت interrupts رخ بده ابتدا میکرو کار خودش رو که داره انجام می ده ، به پایان می رسنونه و به وقفه می پره
              در ارتباط سریال فکر کنم اگر طول رشته زیاد باشه همون کارکتری رو که داره می فرسته می فرسته و سپس به وقفه می ره و سپس بقیه کارکترها رو ارسال می کنه

              همیشه سعی کنین برنامه وقفه بسیار کم باشه و از اونجا به تابعی پرش نداشته باشین
              هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

              دیدگاه


                #8
                پاسخ : ارسال و دریافت با پروتکل rs232 و متوقف نشدن برنامه

                ممنون
                یه سوال :
                من از پایه های پیش فرض tx و rx استفاده میکنم و واسه پیکره بندی در بسکام فقط میتونم مقدار baud رو تعیین کنم چطوری میشه parity bit رو تعیین کرد ؟

                دیدگاه


                  #9
                  پاسخ : ارسال و دریافت با پروتکل rs232 و متوقف نشدن برنامه

                  سلام
                  ممنون
                  یه سوال :
                  من از پایه های پیش فرض tx و rx استفاده میکنم و واسه پیکره بندی در بسکام فقط میتونم مقدار baud رو تعیین کنم چطوری میشه parity bit رو تعیین کرد ؟
                  شما باید از دستور open که در مستندات help بسکام هست استفاده کنین و baud rate و دیگر مشخصات رو تنظیم کنین
                  هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

                  دیدگاه


                    #10
                    پاسخ : ارسال و دریافت با پروتکل rs232 و متوقف نشدن برنامه

                    خوب اینجوری نرم افزاری میشه من میخوام سخت افزاری باشه .

                    دیدگاه


                      #11
                      پاسخ : ارسال و دریافت با پروتکل rs232 و متوقف نشدن برنامه

                      نوشته اصلی توسط tofan8
                      درود دوستان
                      من میخواستم یه رشته 100 تایی رو تقریبا به هر یک ثانیه یک بار به کامپیوتر ارسال کنم . بنده یک دونه تایمر برام مونده (یکی pwm و یکی دیگه کانتر شدن) من برنامه اصلیم روندش با همون یکدونه تایمرم کنترل میشه و اگه توی وقفه تایمرم بخوام از دستور print استفاده کنم و رشته رو ارسال کنم همونطور که میدونید تا زمانی که این رشته ارسال نشه برنامه ادامه پیدا نخواهد کرد که این خودش یه 100 میلی ثانیه ای زمان میبره تغریبا که روند اجرایی و تایم هارو بهم میریزه .
                      حالا میخواستم ببینم چطور میتونم ازاین دستور استفاده کنم و همونجور که داره اجرا میشه روند برنامه هم ادامه پیدا کنه و تایم ها بهم نخوره .
                      یه while (1) بنویس. داخل اون از دستور switch استفاده کن. هر دفعه که while اجرا میشه یه کاراکتر بفرست و بذار بقیه برنامه هم اجرا بشه. هر دفعه case رو یکی زیاد کن تا در اجرای بعدی یک کاراکتر دیگه فرشتاده بشه.

                      دیدگاه


                        #12
                        پاسخ : ارسال و دریافت با پروتکل rs232 و متوقف نشدن برنامه

                        سلام
                        خوب اینجوری نرم افزاری میشه من میخوام سخت افزاری باشه .
                        دوست من ، این روش هم باز سخت افزاری روی همون دو پین RX , TX می تونین پیاده سازی کنین
                        منظور از پیکربندی نرم افزاری در برنامه نویسی تراشه ها ، اضافه کردن یا انتقال قابلیت یک پین سخت افزاری به پین های معمولی یا فاقد آن پیکربندی هستن
                        شما اگر open رو روی پین های RX , TX اعمال کنین پیکربندیتون همون سخت افزاری اما با امکانات بیشتر و تغییر ریحستر های USART کنترلی به دلخواه
                        هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

                        دیدگاه


                          #13
                          پاسخ : ارسال و دریافت با پروتکل rs232 و متوقف نشدن برنامه

                          نوشته اصلی توسط baby_1
                          سلامدوست من ، این روش هم باز سخت افزاری روی همون دو پین RX , TX می تونین پیاده سازی کنین
                          منظور از پیکربندی نرم افزاری در برنامه نویسی تراشه ها ، اضافه کردن یا انتقال قابلیت یک پین سخت افزاری به پین های معمولی یا فاقد آن پیکربندی هستن
                          شما اگر open رو روی پین های RX , TX اعمال کنین پیکربندیتون همون سخت افزاری اما با امکانات بیشتر و تغییر ریحستر های USART کنترلی به دلخواه
                          بنده خودم تست کردم و در حالتی که پیشفرض پین ها rs , tx باشند baud میتونه تا 120000 هم باشه اما نرم افزاری رو تست کردم فکر کنم 20000 بیشتر نمیشد . یعنی چرت و پرت تحویل میداد .

                          دیدگاه


                            #14
                            پاسخ : ارسال و دریافت با پروتکل rs232 و متوقف نشدن برنامه

                            حالا همون 9600 هم واسه بنده کافی هست میمونه یه مشکل اونم اینه که چطور همیشه میکرو گوش به زنگ باشه ؟ تا اگه اطلاعات از PC ارسال شد بتونه دریافت کنه تابع input تا رشته رو دریافت نکنه نمزاره برنامه ادامه پیدا کنه به درد من نمیخوره من میخوام همینجور که برنامه اداکه پیدا میکنه رشته دریافت بشه .

                            دیدگاه


                              #15
                              پاسخ : ارسال و دریافت با پروتکل rs232 و متوقف نشدن برنامه

                              سلام
                              بنده خودم تست کردم و در حالتی که پیشفرض پین ها rs , tx باشند baud میتونه تا 120000 هم باشه اما نرم افزاری رو تست کردم فکر کنم 20000 بیشتر نمیشد . یعنی چرت و پرت تحویل میداد .
                              دوست من اگر منظورتون باید ریت هست باید بگم اعداد بادریت با کریستال و خطا با این دو رابطه مستقیم داره یعنی شما باید با فرمولی که در دیتاشیت تراشه تون ذکر شده خطا رو بدست بیارین اگر نرخ خطا با توجه به فرمول و کریستال و وضعیت ریجسترها از مقدار x.1 بیشتر شد باید نسبت به تغییر بادریت اقدام کنین
                              در ضمن بادریت با این اعداد جز استاندارد rs232 نیست(من به شخصه تا به حال مشکلی نداشتم)

                              حالا همون 9600 هم واسه بنده کافی هست میمونه یه مشکل اونم اینه که چطور همیشه میکرو گوش به زنگ باشه ؟ تا اگه اطلاعات از PC ارسال شد بتونه دریافت کنه تابع input تا رشته رو دریافت نکنه نمزاره برنامه ادامه پیدا کنه به درد من نمیخوره من میخوام همینجور که برنامه اداکه پیدا میکنه رشته دریافت بشه .
                              شما باید از اینتراپت USART میکروتون برای این منظور استفاده کنین
                              هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

                              دیدگاه

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