اطلاعیه

Collapse
No announcement yet.

ارسال 10 bit بوسیله usart در atmega 32

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

    ارسال 10 bit بوسیله usart در atmega 32

    سلام اساتید محترم بنده قصد نمونه برداری از صدایی با فرکانس بین 3 الی 4 کیلوهرتز و رزولیشن 10 bit و ارسال اون بوسیله usart را دارم.ولی در مورد ارسال بوسیله usart به مشکل بر خوردم اگر دوستان نظری یا تجربه ای در این مورد دارند لطفا دریغ نکنند. با تشکر از همگی

    #2
    پاسخ : ارسال 10 bit بوسیله usart در atmega 32

    با سلام
    دوست عزیز اگه میشه بیشتر در مورد مشکلتون توضیح بدید .
    در مورد نحوه ارسال 10 بیت خوب مگه غیر از اینه که میشه این 10بیت رو مثلا با یک انکودر یا مثلا با دو پورت میکرو دریافت کنید و اون رو بریزید داخل یک متغیر و سپس اون رو به پورت سریال ارسال کنید ؟البته اگر خروی 10بیتی تون به صورت موازی هست !

    دیدگاه


      #3
      پاسخ : ارسال 10 bit بوسیله usart در atmega 32

      نوشته اصلی توسط mojtaba_led
      با سلام
      دوست عزیز اگه میشه بیشتر در مورد مشکلتون توضیح بدید .
      در مورد نحوه ارسال 10 بیت خوب مگه غیر از اینه که میشه این 10بیت رو مثلا با یک انکودر یا مثلا با دو پورت میکرو دریافت کنید و اون رو بریزید داخل یک متغیر و سپس اون رو به پورت سریال ارسال کنید ؟البته اگر خروی 10بیتی تون به صورت موازی هست !
      ممنون از توجهتون، ببینید من بوسیله adc خود میکرو از یک سیگنال صوت که فرکانس اون تا حدود 4 کیلو هرتز فیلتر شده نمونه برداری میکنم برای باز سازی صوت نیاز دارم که فرکانس نمونه برداریم حداقل بیش از 2 برابر فرکانس صوتم باشه که میشه دورو بر 10 کیلو هرتز چون طبق دیتا شیت خود adc فرایند نمونه برداری داخل میکرو 13 کلاک پالس طول میکشه من باید فرکانس adc را 125 کیلو هرتز انتخاب کنم تا فرکانس نمونه برداری نزدیک 10 کیلو هرتز بشه.
      مطابق رزولیشنم و فرکانس نمونه برداریم پهنای باند مورد نیازم برای انتقال دیتا از طریق پورت سریال بیش از 100kbps میشه.
      مشکل من اینجاست بوسیله usart میشه 8 الی 9 بیت فرستاد نمیشه 10 بیت ارسال داشت برای 10 بیت ارسال من باید دیتام را در مبدا به دو قسمت 5 بیتی تقسیم کنم و ارسال را انجام بدم و در مقصد اون 2 بسته مربوط به هم را شناسایی کنم و سره هم کنم و بسته 10 بیتی را بسازم.برای این مورد چند نمونه برنامه نوشتم ولی جواب درستی نگرفتم اگر دوستان تجربه ای یا نظری یا اطلاعاتی در این زمینه دارند لطفا کمک کنند.با تشکر :cry:

      دیدگاه


        #4
        پاسخ : ارسال 10 bit بوسیله usart در atmega 32

        دوستان کسی از اساتید افتخار کمک نمیدند؟

        دیدگاه


          #5
          پاسخ : ارسال 10 bit بوسیله usart در atmega 32

          این برنامه رو ببینید از یک موج مثلثی با فرکانس 4khz بوسیله adc نمونه برداری می کند و به روی پورت سریال ارسال می کند (فایل پرتئوس رو ببینید )
          http://www.4shared.com/file/30MeoiH5/usart.html

          دیدگاه


            #6
            پاسخ : ارسال 10 bit بوسیله usart در atmega 32

            سلام دوست عزیز

            فرکانس 4 کیلوهرتز کیفیت صدایی برابر صدای پشت تلفن رو داره، در نتیجه اگر به صورت 8 بیت هم نمونه برداری کنید صدایی با کیفیت خوب خواهید داشت. ابتدا 10 بیتی نمونه بگیرید و سپس با شیفت آن به راست دو بیت کم ارزش را حذف کنید و از طریق USART انتقال دهید.
            تلاش رمز ظفر

            دیدگاه


              #7
              پاسخ : ارسال 10 bit بوسیله usart در atmega 32

              نوشته اصلی توسط mojtaba_led
              این برنامه رو ببینید از یک موج مثلثی با فرکانس 4khz بوسیله adc نمونه برداری می کند و به روی پورت سریال ارسال می کند (فایل پرتئوس رو ببینید )
              http://www.4shared.com/file/30MeoiH5/usart.html
              مجتبی جان نتونستم لینکا باز کنم ولی فکر کنم این لینکا دیده باشم با 8 بیت نمونه برداری انجام میشه .
              مشکل من ارسال 10 بیت نمونه است اونم در حداکثر پهنای باند usart

              دیدگاه


                #8
                پاسخ : ارسال 10 bit بوسیله usart در atmega 32

                نوشته اصلی توسط برنامه نویس
                سلام دوست عزیز

                فرکانس 4 کیلوهرتز کیفیت صدایی برابر صدای پشت تلفن رو داره، در نتیجه اگر به صورت 8 بیت هم نمونه برداری کنید صدایی با کیفیت خوب خواهید داشت. ابتدا 10 بیتی نمونه بگیرید و سپس با شیفت آن به راست دو بیت کم ارزش را حذف کنید و از طریق USART انتقال دهید.
                ممنون از توجهتون ولی عنوان پروژه نمونه برداری و ارسال 10 بیت داده است اصلا کل مشکل پروژه ارسال 10 بیت دیتا است وگرنه پروژه چیزه خاصی نداره

                دیدگاه


                  #9
                  پاسخ : ارسال 10 bit بوسیله usart در atmega 32

                  من یه کار تو این مایه ها کردم ولی بایت بود نه بیت :redface:
                  حالا پیشنهاد من:
                  1-بیا سریال تو ببر تو 5 بیت
                  2-اون مقصد یا همون ریسیو بریزش تو به int
                  3- حالا 5 تا شیفنش بده بره چپ
                  4-5 بیت بعدی رو بفرست
                  5-بریز دوباره تو int
                  الان 10 بیت اول int شما همون 10 بیت اول .امیدوارم منظور رو رسونده باشم
                  تو اين جهان 7 ميلياردي من معني ندارد و اگه تو اين دنيا فقط 1 نفر وجود داشت باز هم من معني نداشت

                  دیدگاه


                    #10
                    پاسخ : ارسال 10 bit بوسیله usart در atmega 32

                    نوشته اصلی توسط sey22
                    من یه کار تو این مایه ها کردم ولی بایت بود نه بیت :redface:
                    حالا پیشنهاد من:
                    1-بیا سریال تو ببر تو 5 بیت
                    2-اون مقصد یا همون ریسیو بریزش تو به int
                    3- حالا 5 تا شیفنش بده بره چپ
                    4-5 بیت بعدی رو بفرست
                    5-بریز دوباره تو int
                    الان 10 بیت اول int شما همون 10 بیت اول .امیدوارم منظور رو رسونده باشم
                    ممنون از توجهتون من این کارا انجام دادم البته نه به شیئه ای که شما فرمودید من دیتا را از دو رجیستر ADCLو ADCH برای مقصد می فرستم و در مقصد ADCH را 8 واحد شیفت میدم و با ADCL مربوط به خودش جمع میکنم.
                    ولی یک مشکل اینجاست که هر 10 بیت یک نمونه را شامل میشه و باید توالی بسته های دریافتی مشخص باشه تا دوبسته غیر هم خوان با هم یک 10 بیت نسازند حالا اگر ممکنه شما یک تست کنید ببینید میتونید دیتا را با این مشخصات در مقصد بازسازی کنید .اگر شد من مشکل دوم این کار را میگم.

                    دیدگاه


                      #11
                      پاسخ : ارسال 10 bit بوسیله usart در atmega 32

                      نوشته اصلی توسط O.M.I.D
                      مجتبی جان نتونستم لینکا باز کنم ولی فکر کنم این لینکا دیده باشم با 8 بیت نمونه برداری انجام میشه .
                      مشکل من ارسال 10 بیت نمونه است اونم در حداکثر پهنای باند usart
                      ببخشید من متوجه نمی شم مگه مقادیر بزرگتر از 511 =111111111 باینری یک مقدار 10 بیتی نیست ؟
                      توی این برنامه که براتون گزاشتم مقادیر بزرگتر از 511 هم نمایش داده میشه ؟
                      ممنون میشم بیشتر توضیح بدید.

                      دیدگاه

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