اطلاعیه

Collapse
No announcement yet.

USB TO SERIAL

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

    USB TO SERIAL

    با سلام
    بنده سوالی از خدمت شما دوستان عزیز داشتم
    بنده به وسیله وقفه پرت سریال میکرو(avr-atmega32) با نرم افزاری که به زبان c# نوشته شده با کامپیوتر در ارتباط هستم البته باید به این نکته اشاره کنم که چون با کامپیوتر در ارتباط هستم و نوع کامپیوتر از نوع لپ تاپ است و فاقد پرت سریال، در نتیجه مجبور شدم از کابل rs232 to usb مارک omega استفاده نمایم.(که طبق تحقیقات بنده بهترین در ایران است)
    ولی با توجه به پروتکل ارتباطی که خودم در نظر گرفتم بعضی اوقات recive دارم ولی send از طرف avr ندارم این مشکل در طول 24 ساعت گاها 3 الی 4 بار به صورت پشت سر هم روی می دهد، و گاهی با reset کردن درست و گاهی هم درست نمی شود و وقتی این مشکل حل می شود که چند بار میکرو را reset کنم یا اتصال کابل را جدا کنم و از اول لحیم کاری پرت را انجام دهم (منظور از لحیم کاری باز و بسته کردن سیم های rx و tx از DB9 هست و نه صرفا جدا کردن کابل از کامپیوتر، و منظور از send/recive اینه که گاهی اوقات از سمت کامپیوتر مثلا دستور حرکت موتور را دریافت می کنم (recive) حالا که می خوام به کامپیوتر بگم که من این دستور را گرفتم(Send) یا به عبارتی به کامپیوتر ACK بدم گاهی اوقات میکرو نمی فرسته در نتیجه موتور همین طور حرکت می کنه و چون کامپیوتر ack را نگرفته و مطمئن نشده که من دستور حرکت موتور را گرفتم یا نه همین طور دستور حرکت موتور را می فرسته البته همان طور که گفتم تو 24 ساعت 2 تا 3 مرتبه ابن اتفاق می افته)
    کابل تبدیل(usb to serial) را تعویض ، DB9 را تعویض ، سیم های ارتباطی را تعویض،MAX232 را تعویض کردم ولی همچنان این مشکل بر طرف نشده و چون مدار جنبه صنعتی دارد نمی توانم از این مشکل،که در طول 24 ساعت 3 الی 4 مرتبه اتفاق می افتد صرف نظر کنمShy
    همچنین باید به این نکته هم اشاره کنم که
    با توجه به کامپایلر قوی c# من در این وضعیت بحرانی که قرار می گیرم رجسترهای سریال برنامه c# هیچی دریافت نمی کنند و این رچسترها قابل دیدن هستند و می توانم عینا ببینم که رجسترهاخالی هستند پس مطمئن شدم که نویز یا اعداد اشتباهی از سمت میکرو به کامپیوتر منتقل نمی شه ،حالا نمی دونم عیب از میکرو یا کابل usb to serial یا برنامه؟؟؟آیا برنامه c# ممکنه که گاها پرت را باز نکنه یا نویز بگیره یا ...؟؟؟
    راستی اسم نرم افزار درایور usb to serial هست PL2303_Prolific_DriverInstaller_v1.6.0
    و boadrate=19200,طول کابل 1.5 متر و تغذیه هم سوئیچینگ با lm2576-5v
    از شما دوستان خواهشمندم که بنده را راهنمایی کنید
    با تشکر

    #2
    پاسخ : USB TO SERIAL

    برای ارسال و دریافت در میکرو از تابع های printf , gets,getchar استفاده میکنید؟
    ایا وقفه ای در برنامه میکرو شما فعاله؟
    .The best question deserves a better answer
    =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
    «پناه»می برم «به خدا»
    از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
    محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

    دیدگاه


      #3
      پاسخ : USB TO SERIAL

      من ابتدا به وسیله وقفه بسته های اطلاعاتی را دریافت می کنم مثلا بسته اطلاعاتی اول شامل 20 بایت است که به وسیله یه کانتر 20 تا را دریافت می کنم سپس با توجه به پروتکلی که در نظر گرفتم آن ها را آنالیز می کنم سپس از وقفه خارج می شوم و به وسیله دستور putchar پاسخ کامپیوتر را می دهم و با توجه به آنالیز انجام گرفته عملیات را انجام ما دهم مثلا موتور را حرکت می دهم
      پس از هیچ کدام از دستورات printf , gets,getchar استفاده نمی کنم
      همان طور که اشاره کردم برنامه به درستی کار می کند و در طول 24 ساعت گاها 2 الی 3 مرتبه پیش می آید که پاسخ (SEND) به کامپیوتر ندهد
      بله وقفه تایمر 1 و 2 نیز فعال است
      در هنگام استفاده از وقفه سریال یا به عبارتی در هنگام ورود به وقفه سریال با دستور #asm("cli&quot وقفه ها خاموش و در انتها روشن می کنم #asm("sei&quot
      سعی کردم که تداخلی تو وقفه ها نباشه
      با تشکر

      دیدگاه


        #4
        پاسخ : USB TO SERIAL

        در هنگام رخ دادن وقفه غیر فعال کردن وقفه ها اجباری نیست چون خودش غیر فعال میشه.فرض من بر این هست که در زمان ارسال پیام از سوی میکرو یکی از وقفه ها فعال میشود و اختلالی در ارسال به وجود میاد.
        .The best question deserves a better answer
        =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
        «پناه»می برم «به خدا»
        از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
        محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

        دیدگاه


          #5
          پاسخ : USB TO SERIAL

          سلام
          ممکنه که مشکل از کریستالتون باشه
          کریستال خیلی مهمه
          کریستالهای مناسب برای ارتباط با پورت COM :
          1.8432MHz
          3.6864MHz
          7.3728MHz
          11.0592MHz
          14.7456MHz
          موفق باشی
          [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
          معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
          معرفی نرم افزار Codewizard PWM
          با من بیشتر آشنا شوید

          دیدگاه


            #6
            پاسخ : USB TO SERIAL

            با تشکر از دوستان
            از اینکه وقفه ای غیر فعال یا فعال می شود مطمئن هستم و برنامه را خط به خط چک کردم
            کریستال استفاده شده 11.0592 است
            با تشکر

            دیدگاه


              #7
              پاسخ : USB TO SERIAL

              با تشکر از همه دوستان
              متاسفانه مشکل حل نشد با اینکه تمام راه کارها را چک کردم
              دوستان اگر برند و یا نوعی از کابل
              usb to serial را می شناسند که چینی نباشه و ایده آل باشه ممنون می شم راهنمایی فرمایند
              با تشکر

              دیدگاه


                #8
                پاسخ : USB TO SERIAL

                نوشته اصلی توسط alirezahedaiaty
                با تشکر از همه دوستان
                متاسفانه مشکل حل نشد با اینکه تمام راه کارها را چک کردم
                دوستان اگر برند و یا نوعی از کابل
                usb to serial را می شناسند که چینی نباشه و ایده آل باشه ممنون می شم راهنمایی فرمایند
                با تشکر
                USART میخوای باشه یا UART ؟
                چرا خودت درست نمیکنی؟
                با FT232 کار کن
                خیلی خوبه . . .
                دیگه نیاز به مدار MAX232 نداری
                در ضمن
                من با مدلهای چینی هم کار کردم جواب هم گرفتم (چیپ CH340)
                یه برنامه ای که با ویژوال ++C طراحی کرده بودیم جواب هم داد و عالی کار میکرد .
                موفق باشید
                [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                معرفی نرم افزار Codewizard PWM
                با من بیشتر آشنا شوید

                دیدگاه


                  #9
                  پاسخ : USB TO SERIAL

                  با تشکر
                  من یه برنامه با پروتکل rs232 نوشتم (همون پرت سریال) حالا می خوام به لپ تاپ وصل بشم و نرم افزاری که با c# نوشنه شده فرمان بفرستم و بگیرم
                  مبدل را ساختم ولی کیفیت بدی داشت سپس از بازار تهیه کردم بهتر شد ولی همون طور که اشاره کردم در طول 24 ساعت گاهی اوقات send ندارم با پرس و جو از دوستان مطلع شدم که به خاطر ایسی چینی استفاده شده در این کابل هاست
                  ممنون می شم راهنمایی کنید و مدار و یا مبدل و یا راهکاری را پیشنهاد دهید
                  با تشکر

                  دیدگاه


                    #10
                    پاسخ : USB TO SERIAL

                    نوشته اصلی توسط alirezahedaiaty
                    با تشکر
                    من یه برنامه با پروتکل rs232 نوشتم (همون پرت سریال) حالا می خوام به لپ تاپ وصل بشم و نرم افزاری که با c# نوشنه شده فرمان بفرستم و بگیرم
                    مبدل را ساختم ولی کیفیت بدی داشت سپس از بازار تهیه کردم بهتر شد ولی همون طور که اشاره کردم در طول 24 ساعت گاهی اوقات send ندارم با پرس و جو از دوستان مطلع شدم که به خاطر ایسی چینی استفاده شده در این کابل هاست
                    ممنون می شم راهنمایی کنید و مدار و یا مبدل و یا راهکاری را پیشنهاد دهید
                    با تشکر
                    من یه پیشنهادی دارم
                    برو تو کار واچ داگ
                    تو برنامه #C تعریف کنید که مثلا هر یک ثانیه یک بار داده بفرستید و در میکرو یک برنامه ای بنویسید که اگر داده ها توسط پورت سریال گرفته نشد(از یک ثانیه بیشتر شد)میکرو ریست کند
                    در این روش یک حسنی که دارد این است که هر لحظه از وضعیت میکرو باخبر میشویم . . .
                    این روش شاید به کارت بیاد . . .
                    [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                    معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                    معرفی نرم افزار Codewizard PWM
                    با من بیشتر آشنا شوید

                    دیدگاه


                      #11
                      پاسخ : USB TO SERIAL

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

                      دیدگاه


                        #12
                        پاسخ : USB TO SERIAL

                        نوشته اصلی توسط alirezahedaiaty
                        ممنون از پاسختون
                        ولی من در مواقعی مه برام پیش می آید میکرو دریافت از سمت کامپیوتر را دارد ولی ارسال یا پاسخی از سمت میکرو ندارم
                        با تشکر
                        عزیز من به خاطر همین هست که میگم واچ داگ بگذارین
                        اصلا وظیفه واچ داگ همینه . . .
                        تو میکرو تعریف کن که اگر بعد از یک ثانیه داده ای دریافت نشد یا ارسال نشد ریستش کنه
                        این برنامه رو بنویس اگر جواب نداد بدون شک مشکلت واسه کابله
                        ولی اگر باز هم اینجوری بود بدون مشکلت واسه کابل نیست . . .
                        در ضمن نیازی به تشکر نوشتن نیست . . .
                        روی دکمه تشکر بزنی کافیه :biggrin:
                        موفق باشید
                        [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                        معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                        معرفی نرم افزار Codewizard PWM
                        با من بیشتر آشنا شوید

                        دیدگاه


                          #13
                          پاسخ : USB TO SERIAL

                          من قبلا مشابه این کار را انجام دادم(در اوایل برنامه نویسی که می خواستم پرت سربال میکرو و برنامه نوشته توسط c شارپ را برای send و recive چک کنم مشکلی نداشتم مشکل این جاست که این اتفاق گاهی وقت ها پیش می یاد جای این اتفاق هم مشخص نیست
                          یه مثال می زنم:
                          انتظار من اینه که با کلید استارت موتور 1 دور ،تاکید می کنم فقط 1 دور بزند
                          من اول برنامه منتظر می مانم که مثلا کلید استارت از برنامه ای که با c# روی کامپیوتر نوشتم فشار داده بشه فورا با فشار دادن کلید استارت دیتایی شامل 40 کد اسکی(چرا 40 تا چون برنامه فقط شامل حرکت موتور نیست) برای میکرو ارسال می شه اگر میکرو 40 دیتا را گرفت و عملیلت check sum و غیره درست بود به کامپیوتر می گه که من دیتا را گرفتم و دیگه دیتایی برام نفرست (ack) اگر هم اشتباه بود جوابی نمی دهد پس دو مرتبه کامپیوتر دیتاها را می فرسته اینقدر این عملیات انجام می شه تا پاسخی را از میکرو برای صحت گرفتن دیتا در یافت کنه
                          حالا مشکل من این جاست که میکرو 40 تا کاراکتر را به درستی دریافت می کنه پاسخ کامپیوتر را هم می ده (از کجا مطمئنم که پاسخ می ده؟؟ ار اون جا که حرکت کوتور بعد از پاسخه)موتور هم 1 دور حرکت می کنه ولی کامپیوتر پاسخ را دریافت نکرده( (از کجا مطمئنم که پاسخ را دریافت نکرده چون مثل یه لوپ همین طور کامپیوتر دیتا می ده منم پاسخ می دم کامپیوتر نمی گیره پس همیم طور موتور می چرخه)

                          البته این مشکل در 24 ساعت 1 یا 2 بار اتفاق می افته یا اول برنامه یا وسط برنامه یا موقعی که تازه مدار روشن شده جاش مشخص نیست
                          یه سوال دیگه که ممکنه پیش بیاد اینه که کی درست می شه؟
                          گاهی اوقات با reset شدن و یا خارج کردن کابل درست می شه و گاهی هم با این که مدار reset یا خاموش و روشن شده و یا کابل را خارج کردم و دوباره وصل کردم باز این مشکل هست یعنی دریافت دارم send ندارم.



                          دیدگاه


                            #14
                            پاسخ : USB TO SERIAL

                            نوشته اصلی توسط alirezahedaiaty
                            من قبلا مشابه این کار را انجام دادم(در اوایل برنامه نویسی که می خواستم پرت سربال میکرو و برنامه نوشته توسط c شارپ را برای send و recive چک کنم مشکلی نداشتم مشکل این جاست که این اتفاق گاهی وقت ها پیش می یاد جای این اتفاق هم مشخص نیست
                            یه مثال می زنم:
                            انتظار من اینه که با کلید استارت موتور 1 دور ،تاکید می کنم فقط 1 دور بزند
                            من اول برنامه منتظر می مانم که مثلا کلید استارت از برنامه ای که با c# روی کامپیوتر نوشتم فشار داده بشه فورا با فشار دادن کلید استارت دیتایی شامل 40 کد اسکی(چرا 40 تا چون برنامه فقط شامل حرکت موتور نیست) برای میکرو ارسال می شه اگر میکرو 40 دیتا را گرفت و عملیلت check sum و غیره درست بود به کامپیوتر می گه که من دیتا را گرفتم و دیگه دیتایی برام نفرست (ack) اگر هم اشتباه بود جوابی نمی دهد پس دو مرتبه کامپیوتر دیتاها را می فرسته اینقدر این عملیات انجام می شه تا پاسخی را از میکرو برای صحت گرفتن دیتا در یافت کنه
                            حالا مشکل من این جاست که میکرو 40 تا کاراکتر را به درستی دریافت می کنه پاسخ کامپیوتر را هم می ده (از کجا مطمئنم که پاسخ می ده؟؟ ار اون جا که حرکت کوتور بعد از پاسخه)موتور هم 1 دور حرکت می کنه ولی کامپیوتر پاسخ را دریافت نکرده( (از کجا مطمئنم که پاسخ را دریافت نکرده چون مثل یه لوپ همین طور کامپیوتر دیتا می ده منم پاسخ می دم کامپیوتر نمی گیره پس همیم طور موتور می چرخه)

                            البته این مشکل در 24 ساعت 1 یا 2 بار اتفاق می افته یا اول برنامه یا وسط برنامه یا موقعی که تازه مدار روشن شده جاش مشخص نیست
                            یه سوال دیگه که ممکنه پیش بیاد اینه که کی درست می شه؟
                            گاهی اوقات با reset شدن و یا خارج کردن کابل درست می شه و گاهی هم با این که مدار reset یا خاموش و روشن شده و یا کابل را خارج کردم و دوباره وصل کردم باز این مشکل هست یعنی دریافت دارم send ندارم.
                            خب . . . :redface:
                            پس مشکلتون خیلی بزرگه
                            اولین کاری که باید بکنید این هست که مطمئن بشوید زمانی که این مشکل رخ میدهد دیتایی از سوی میکرو خارج میشود یا خیر
                            که این رو میتونید یه میکروی دیگر در کنار اون میکرو بگذارید(TXD میکروتون رو وصلش کنید به RXD میکروی جدید) و ببینید که دیتایی از سوی میکرو ارسال میشود یا خیر
                            این مساله خیلی مهمه که بدونید که این کار صورت میگیرد یا خیر . . .
                            حالا چرا اینقدر زیاد ؟؟؟ 40 بایت . . . :eek:
                            من خودم با سرو موتور ارتباط برقرار کردم ولی اینقدر زیاد نشده . . .
                            تازه دیتاهاش هم خیلی زیاد هستند ولی با این وجود هر ارسال یا دریافت به 40 بایت نرسید ...
                            در هر صورت . . .
                            این کار رو انجام بده . . .
                            حتما" به یک نتیجه مثبتی خواهی رسید . . .
                            اگر دیدی در همون لحظه که این اتفاق می افتد دیتایی ارسال نمیشه بدون شک در برنامه نویسی یک راهی رو اشتباهی رفتی ...
                            اگر دوست داشتید برنامه رو بگذارید تا چکش کنیم . . . ضرر نداره . . . مطمئن باش :agree: چون نمیدونیم که چیکار میخوای بکنی و دستگاهتون چیه و چیکار میکنه ...
                            موفق باشید دوست خوبم
                            [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                            معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                            معرفی نرم افزار Codewizard PWM
                            با من بیشتر آشنا شوید

                            دیدگاه

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