اطلاعیه

Collapse
No announcement yet.

نویز در UART

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

    نویز در UART

    سلام دوستان
    من دارم از میکرو ATmega128 SMD استفاده میکنم، بوردشم زدم. ولی موقع کار کردن با UART، نویز میگیره.
    مثلا 2 رو تبدیل به 5 میکنه
    علامت های $*& یا علائم نامفهوم رو وسط اطلاعات میذاره و چندتا از عددها و حروف رو عوض میکنه :angry:
    اولین ارسال اطلاعات کاملا درست انجام میشه
    ولی برای دفعه 2 یا 3 یا 4 دیگه خراب میشه
    Boud Rate در فرستنده و گیرنده 115200 هست
    کریستال خارجی 11.0592MHz SMD
    اینم یه نمونه از خطا:


    باید چیکار کنم که درست شه؟ :cry2:
    http://www.eca.ir/forum2/index.php?topic=108455.msg777842#msg777842

    #2
    پاسخ : نویز در UART

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

    مورد بوده تو راه اندازی سنسور دفعه اول اطلاعات یوزارت ناقص دریافت میشده ( که همه این مشکلو داشتن ) با پول داون کردنش درست شد !
    اشک هایی که پس از هر شکست ریخته میشوند همان عرق هاییست که برای پیروزی ریخته نشده است

    دیدگاه


      #3
      پاسخ : نویز در UART

      من خیلی زیاد از uart استفاده میکنم و تابحال مشکلی حس نکردم
      اگر شما از max ستفاده می کنید ، شاید max232 شما مشکل داره (که منم برخورد کردم ) در اینصورت از max3232 که Smd هست استفاده کنید خازن هاتونم مولتی لیر بگذارید . pullup کردن خط فرستنده در نزدیکی max و pullup کردن خط گیرنده RX در نزدیکی میکرو هم میتونه کمک کنه .
      کریستال شما هم ممکنه آسیب دیده باشه . در لحیم کاری کریستال حداقل زمان داغ شدن پایه ها رو در نظر داشته باشید .
      اگر از uart نرم افزاری استفاده میکنید (نه uart اصلی میکرو ) این مشکل کاملا طبیعیه و زیاد اتفاق میفته
      Don't hesitate to ask any question ..

      دیدگاه


        #4
        پاسخ : نویز در UART

        ممنون از دوستان
        یافته های جدید: :nerd:
        اطلاعات دریافتی رو ریختم توی یه متغیر، مثلا a
        بعدش روش محاسبات انجام دادم. مثلا b = a+2
        بعدش اینجوری به پورت سریال ارسال کردم:
        [code=c]
        printf("it is a test, data is: %d",b);
        [/code]
        توی خروجی، عبارت :it is a test, data is همیشه درست ارسال میشه، ولی b....
        برای بار اول و بعضی وقت ها بار دوم b درسته، ولی برای دفعه های بعدی خراب میشه
        پس نویزی روی میکرو نمیفته دیگه؟ چون اون متن ثابت رو همیشه درست ارسال میکنه :rolleyes:
        پس تا اینجا مشکل از دریافته :smile:
        RXD میکرو رو وصل کردم به کامپیوتر، دیدم اطلاعات درسته (یعنی چیزی که دریافت میشه)
        حالا تا اینجا مشکل از چیه؟؟؟ oo:
        http://www.eca.ir/forum2/index.php?topic=108455.msg777842#msg777842

        دیدگاه


          #5
          پاسخ : نویز در UART

          سلام دادا.
          کریستالت رو چک کن. تغذیه رو هم همینطور اما عمده اینگونه ایرادها از برنامه نویسیه.
          برا یافتن مشکل اول با بدریت پایین تست کن. در ضمن حتماً از وقفه دریافت استفاده کن و در وقفه دریافت فقط داده ها رو دریافت کن و پردازش داده ها رو توی حلقه معمولی برنامه انجام بده
          تشکر لازم نیست!

          دیدگاه


            #6
            پاسخ : نویز در UART

            الان بورد دم دستم نیست که با Boud Rate پایین تست کنم
            از وقفه دریافت استفاده میکنم. اینجوری:
            [code=c]interrupt [USART1_RXC] void usart1_rxc_isr(void)
            {
            receive1[index1]=UDR1;
            index1++;
            }[/code]
            http://www.eca.ir/forum2/index.php?topic=108455.msg777842#msg777842

            دیدگاه


              #7
              پاسخ : نویز در UART

              نوشته اصلی توسط سامان تقی پور
              ...
              توی خروجی، عبارت :it is a test, data is همیشه درست ارسال میشه، ولی b....
              برای بار اول و بعضی وقت ها بار دوم b درسته، ولی برای دفعه های بعدی خراب میشه
              پس نتیجه اینکه مشکل شما نویز نیست برنامه میک اشکال داره :biggrin:

              دیدگاه


                #8
                پاسخ : نویز در UART

                منم به این نتیجه رسیدم
                ولـــــــــــــــــــــــــــــــــــــــــــــی
                چرا برای بار اول و دوم همه چیز درسته؟ oo:
                http://www.eca.ir/forum2/index.php?topic=108455.msg777842#msg777842

                دیدگاه


                  #9
                  پاسخ : نویز در UART

                  باید صحت رسیدگی رو هم چک کنی. اگه اطلاعات کامل بود اونوقت ذخیره کنی.(اگه با کدویژن کار میکنی از پیشفرض کدویزارد استفاده کن)
                  در ضمن آیا توی برنامت از وقفه دیگه ای هم استفاده میکنی؟ مثل تایمر یا......؟
                  تشکر لازم نیست!

                  دیدگاه


                    #10
                    پاسخ : نویز در UART

                    اطلاعات درست وارد میشه. چون یکی از بایت هاش رو چک میکنم، اگه درست بود وارد برنامه بشه، در غیر اینصورت دوباره اطلاعات بگیره
                    از وقفه USART0 هم استفاده میکنم، ولی موقعی که این وقفه داره کار میکنه، اون یکی بیکاره
                    موقع جداسازی بایت ها هم از این دستور استفاده میکنم تا وقفه ها غیرفعال شن:
                    [code=c]#asm("cli&quot[/code]
                    http://www.eca.ir/forum2/index.php?topic=108455.msg777842#msg777842

                    دیدگاه


                      #11
                      پاسخ : نویز در UART

                      با مقاومت های 4.7K و 10K و 47K هم pull-up و هم pull-down کردم، یکم بهتر شد، ولی درست نشد :angry:
                      از pull-up داخلی هم استفاده کردم، بازم درست نشد.
                      http://www.eca.ir/forum2/index.php?topic=108455.msg777842#msg777842

                      دیدگاه


                        #12
                        پاسخ : نویز در UART

                        دو علت رو موثر میدونم.
                        یک udrرو داخل یه متغیر بایتی نمیریزی و مستقیما ازش استفاده میکنی( این مورد برای من پیش امده)
                        دو متغیر هایی که داری باهاشون کار میکنی از نظر حجم داده با داده ها تفاوت داره که لازمه یکسان باشه و بعد از هر عملیات همه ی اونها رو تخلیه کنی.
                        یوزارت نویزی نداره و مشکل انچنانی نداره.
                        اگه میتونی برنامتو بزار

                        دیدگاه


                          #13
                          پاسخ : نویز در UART

                          توی پاسخ 5 وقفه دریافتم رو گذاشتم. میریزمش توی یه متغیر به اسم receive1
                          تعداد خطوط برنامه زیاده، فرستادم به ایمیلتون
                          http://www.eca.ir/forum2/index.php?topic=108455.msg777842#msg777842

                          دیدگاه


                            #14
                            پاسخ : نویز در UART

                            سلام دادا.
                            نیازی به غیر فعال کردن وقفه ها نیست (البته اگه وقفه ی دیگه ای فعال نیست).
                            جواب منو ندادی. از وقفه ی دیگه ای غیر از وقفه سریال استفده می کنی؟ مثل timer ویا adc و .....؟
                            تشکر لازم نیست!

                            دیدگاه


                              #15
                              پاسخ : نویز در UART

                              نه
                              فقط 2 تا uart و 1 دونه وقفه خارجی که یه کلید داره برای خاموش کردن
                              http://www.eca.ir/forum2/index.php?topic=108455.msg777842#msg777842

                              دیدگاه

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