اطلاعیه

Collapse
No announcement yet.

طرح مجدد مشکل ایجاد پالسهای دقیق در AVR

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

    طرح مجدد مشکل ایجاد پالسهای دقیق در AVR

    دوستان سلام
    من قبلا سوالی را در اینجا مطرح کرده بودم که مربوط به یک بخش از پروژه دانشجویی من هست ولی علیرغم کمک و محبت دوستان به ویژه آقای نحوی عزیز، به علت کم سوادی بنده و عدم تسلط بر تایمرها و عدم آسنایی با کدویژن و اسمبلی به نتیجه ای نرسیدم. با این حال طرح مجدد و اصرار را که از نقص خودم ناشی شده بود را درست ندانستم و قضیه را مسکوت نگه داشتم( به زبون خودمون بی خیالش شدم!!) تا این که چند روز پیش آقای حکمت عزیز پیغامی فرستادند و خواستند که اگر پروژه تکمیل شده برای استفاده دوستان در سایت قرار بدهم. به ایشان عرض کردم که به استثنای بخش ذکر شده در قبل بقیه موارد رو به اتمام است و انشاء الله حتما این کار را خواهم کرد. علی ایحال به توصیه ایشان و قوت قلبی که ایشان دادند! مجددا سوالم را مطرح میکنم و درخواستم این است که با توجه به کمبود وقتی که تا دفاعیه دارم(حداکثر چند روز دیگر) چنانچه دوستان در این خصوص کمک شسته رفته ای از دستشان بر می آید دریغ نفرمایند.
    اما سوال:
    پروژه من طراحی و ساخت یک میکسر ویدئو است که انشاءالله بعد از تکمیل جزئیات طراحی آنرا خدمتتان ارایه خوام داد. اما یکی از کارهایی که این میکسر میکند ایجاد وایپهای wipe تصویری بین دو خط ویدئو است. برای ایجاد این وایپها من بایستی یکسری پالس تولید کنم که جزئیات مشخصات آنها به شرح زیر است:
    برای ایجاد وایپ عمودی بایستی تعدادی از خطوط یک میدان تصویر را برش داده و با تصویر دیگر جایگزین کنم. برای این کار احتیاج به قطار پالسی دارم که پریود زمانی آن حدودا 20 میلی ثانیه است. برای این کار بایستی یک پتانسیومتر را به یکی از کانالهای مگا8 بدهم و مقدار خوانده شده را به دیوتی سایکل مناسب پالس فوق ترجمه کنم. یعنی به ازای 1023 برای مقدار ADC یک پالس با 19 میلی ثانیه سطح بالا و 1 میلی ثانیه سطح پایین و به ازای مقدار صفر برای ADC پالسی با 1 میلی ثانیه سطح بالا و 19 میلی ثانیه سطح پایین. مقدار بین صفر تا 1023 به صورت خطی متناسب با دیوتی سایکل پالس است. با این کار پالس لازم را برای برش افقی تصویر که وایپ عمودی را سبب می شود ایجاد کرده ام. نکته مهم این است که این پالس باید با شروع هر میدان همزمان باشد. برای این کار از یک قطار پالس به نام پالس سینک عمودی ویدئو که آنرا از روی ویدئوی خود می سازم به عنوان ورودی وقفه و تریگر ایجاد پالس خوجی استفاده می کنم. این پالس 1 میلی ثانیه لبه پایین و 19 میلی ثانیه لبه بالا دارد. قطار پالس خروجی من با لبه بالا رونده پالس تریگر شروع می شود. تعویض سطح بالا و پایین پالس نهایی ایجاد شده موجب تعویض جهت وایپ(بالا به پایین و پایین به بالا) می شود. ولی مسئله دقیقا به همان شکل است.
    برای ایجاد وایپ افقی بایستی مقداری از هر خط ویدئو را برش دهم . صورت مسئله دقیقا مثل مسئله بالا است با این تفاوت که اولا پالس مرجع سینک افقی ویدئو با 10 میکرو سطح پایین و 54 میکرو سطح بالا است. بر همین اساس پالس ایجاد شده پرود 64 میکرو ثانیهای دارد که با لبه بالا رونده پالس همزمانی خط بایستی با توجه به مقدار خوانده شده از ADC پالسی با فرکانس فوق و لبه بالای بین صفر تا 54 میکرو ثانیه بسازد.
    برای ایجاد برش از چهار طرف تصویر یک پتانسومتر را که همان دسته فیدر میکسر است بهADC چهار میکروی ATMEGA8 داده ام(به صورت موازی) و دو به دو با اعمال پالس زمانی افقی و عمودی به چهار میکرو بایستی چهار پالس ایجاد کنم. پالسها دو به دو شبیه هم هتند فقط جای سطوح صفر و یک منطقی در آنها عوض می شود.یعنی مسئله اصلی برای همان دو میکروی اولی است.
    ممنون می شوم اگر کسی بتواند سریعا کمک کند.

    هم اکنون نیازمند یاری سبزتان هستم!

    خواجه جعفری
    اللهم صل علی فاطمه و ابیها، و بعلها و بنیها، و سر المستودع فیها،
    بعدد ما احاط به علمک...

    #2
    پاسخ : طرح مجدد مشکل ایجاد پالسهای دقیق در AVR

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

    امیدوام که پروژه شما هر زودتر به نتیجه دلخواهتان برسد.
    فکر کنم اگر شما یک اسیلاتور ثابت برای که از ای سی های که در تلویزیون ها استفاده میشود که میتواند فرکانس H و v را به راحتی میسازند و با سیگنال ورودی نیز سنکرون میشود استفاده کنید راحتر هستید و یا با استفاده از گیت های منطقی این اسیلاتور را بسازید باضافه یک مدار تاخیر برای یک فرم و از AVR برای مدیریت آنها استفاده کنید .
    موفق باشید
    کمتر سخن گویم
    بیشتر عمل کنیم

    دیدگاه


      #3
      پاسخ : طرح مجدد مشکل ایجاد پالسهای دقیق در AVR

      سلام از کمکتان ممنونم
      من با استفاده از یک جا کننده سینک پالسهای سینک عمودی و افقی را از روی ویدئو استخراج کرده ام همانطور که قبلا عرض کردم، مشکل اینجاست که می خواهم با توجه به محل قرار گیری یک پتانسیومتر پالسهایی بسازم که اولا فرکانس آنها مشخص است، ثانیا زمان آغاز پالس همزمان به پالسهای همزمانی مرجع که در بخش قبل به دست آوردم است، ثالثا دیوتی سایکل آنها متناسب با محل پتانسیومتر است.
      آقای نحوی در یکی از پاسخهایشان گفتند که راه حل استفاده از تایمر ها در مود PWM است ولی عرض کردم که با مقادیر ثابت پارامترهایی که برای PWM ها مطرح می شود نتوانستم فرکانس دقیق را برای پالسهایم درست کنم. این فرکانسها 50 هرتز برای پالسهای سینک عمودی(20ms) و 15625هرتز برای پالسهای سینک افقی(64us) است. در استفاده از تایمرها هم مشکل دارم.
      به هر حال ممنونم
      خواجه جعفری
      اللهم صل علی فاطمه و ابیها، و بعلها و بنیها، و سر المستودع فیها،
      بعدد ما احاط به علمک...

      دیدگاه


        #4
        پاسخ : طرح مجدد مشکل ایجاد پالسهای دقیق در AVR

        سلام
        اولا احساس میکنم اگر از میکرو سوییچ استفاده کنید خیلی بهتر از پتانسیومتر هست،اینجوری دقیق تر هست
        اما شما اگر میتونید یه نمونه شکل از موجی رو که می خواید بذارید،هم موج سنکرون کننده و هم موج خروجی،من سعی میکنم تا شب بهتون خبر بدم که چه جوری میشه،یا اصلا میشه!! :mrgreen:
        در دیر مغان آمد یارم قدحی در دست
        مست از می می خواران از نرگس مستش مست

        دیدگاه


          #5
          پاسخ : طرح مجدد مشکل ایجاد پالسهای دقیق در AVR

          سلام و ممنون از این همه محبت.
          من منظور شما را از استفاده از میکرو سوئیچ نفهمیدم.!! به هر حال:
          آرایش این بخش از سیستم به شکل زیر است:

          البته در اصل به جای دو میکرو چهار میکرو دارم که چون آن دوتا دقیقا شبیه همین دو تا هستند و فقط جای سطوح بالا و پایین خروجی عوض میشوند آنها را نگذاشتم. شما فرض کنید مسئله فقط برای همین دو میکرو است.

          شکل سیگنالهای ورودی و خروجی به شکل زیر است:



          منظور از پالس ورودی به میکروی اول و دوم همان پالسی است که من به INT0 میکرو ها داده ام و میخواهم با لبه بالا رونده پالس خروجی متناسب با مقدار پتانسیومتر تولید شود.
          برای میکروی اول که این پالس horisental sync نامیده شده مقادیر 1 و 2 به ترتیب عبارتند از 5 میکرو ثانیه و 59 میکرو ثانیه_ در مجموع 64 میکرو ثانیه.
          برای میکروی دوم که پالس تریگر vertical sync است مقادیر 1 و 2 عبارتند از 500 میکرو ثانیه و 19.5 میلی ثانیه - در مجموع 20 میلی ثانیه

          دو میکرو با عوض شدن موقعیت پتانسیومتر بین صفر و VCC پالس دیوتی سایکل پالس خروجی را عوض میکنند.(همان PWM)
          برای میکروی اول مقادیر مینیمم و ماکزیمم عرض پالس خروجی با توجه به موقعیت پتانسیومتر بین تقریبا صفر تا 54 میکرو ثانیه است(3 و 4)
          برای میکروی دوم مقادیر مینیمم و ماکزیمم عرض پالس خروجی با توجه به موقعیت پتانسیومتر بین تقریبا صفر تا 18.5 میلی ثانیه است(3 و 4)
          اولا در صورتی که پالس خروجی برای میکرو اول چند میکرو ثانیه و برای میکروی دوم حداکثر نیم میلی ثانیه بعد از لبه بالا رونده هم شروع شود مشکلی ندارد.
          ثانیا این که عرض میکنم تقریبا صفر یعنی چند میکروثانیه هم قابل اغماض است. هر چند صفر ایده آل است.
          ثالثا برای خروجی اصراری به پین و پورت در نظر گرفته شده در تصاویر نیست.

          باز هم ممنون
          خواجه جعفری
          اللهم صل علی فاطمه و ابیها، و بعلها و بنیها، و سر المستودع فیها،
          بعدد ما احاط به علمک...

          دیدگاه


            #6
            پاسخ : طرح مجدد مشکل ایجاد پالسهای دقیق در AVR

            سلام
            منظورم اینه که تنظیم دیوتی با دوتا میکرو سوئیچ باشه!! حالا اینو بعدا توضیح میدم
            بفرمایید که بعد از لبه بالا رونده پالس سنکرون سازی ،مثلا برای میکرو اول شکل موج خروجی باید از کجا شروع بشه؟؟
            منظورم اینه که بعد از لبه بالا رونده سنکرون سازی باید لبه بالا رونده پالس خروجی به وجود بیاد؟؟
            در دیر مغان آمد یارم قدحی در دست
            مست از می می خواران از نرگس مستش مست

            دیدگاه


              #7
              پاسخ : طرح مجدد مشکل ایجاد پالسهای دقیق در AVR

              سلام
              دقیقا!! ولی همونطور که قبلا گفتم:

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

              باز هم از لطفتون ممنونم.

              خواجه جعفری
              اللهم صل علی فاطمه و ابیها، و بعلها و بنیها، و سر المستودع فیها،
              بعدد ما احاط به علمک...

              دیدگاه


                #8
                پاسخ : طرح مجدد مشکل ایجاد پالسهای دقیق در AVR

                سلام
                آقا یه سوال دیگه هم برام پیش اومد،و اون اینکه همیشه این پالسها باید با این پالس سنکرون بشن؟؟
                آخه برای میکرو که پریود پالسش 64 میکرو ثانیه هست،نمیشه چون ضریب صحیحی از پالس سنکرون سازی نیست
                اگر اشتباه نکنم پالس سنکرون سازی 20 میلی ثانیه هست،برای میکرو دیگه این مقدار ضریب صحیح هست،یعنی یک!
                چون پریود دوتا برابر هست
                در دیر مغان آمد یارم قدحی در دست
                مست از می می خواران از نرگس مستش مست

                دیدگاه


                  #9
                  پاسخ : طرح مجدد مشکل ایجاد پالسهای دقیق در AVR

                  سلام
                  من برای یکی از میکرو ها برنامه رو نوشتم،یه نگاه بندازید ببینید همونیه که میخواید(با میکرو سوئیچ ها دیوتی کم و زیاد میشه):
                  http://files-upload.com/files/484381/Khajeh%20jafari%20Project.rar
                  در دیر مغان آمد یارم قدحی در دست
                  مست از می می خواران از نرگس مستش مست

                  دیدگاه


                    #10
                    پاسخ : طرح مجدد مشکل ایجاد پالسهای دقیق در AVR

                    آقا محمد عزیز سلام
                    از توجه فوق العادتون ممنونم
                    نتیجه زحمتتون رو دیدم. عالی بود.
                    ولی من چند تا مشکل دارم باهاش!
                    مهمترینش همون تعویض پتانسیومتر و میکرو سوئیچ بود. نمی دونم قبلا تجربه کار با میکسر تصویر رو داشتید یا نه. میکسر تصویر یک دسته فیدر یا T bar داره که کارهای زیادی رو انجام میده(همونیه که کارگردان تلویزیونه دستش رو می ذاره روش و مثل فرمون هواپیما بالا پایینش میکنه!!!)
                    میکس و فید این و فید آوت و هزار جور کار دیگه. یکی از این کارها ترانزیشن تصویر به صورت وایپ هست. این دسته فیدر همون پتانسیومتر سیستم منه که نمی تونم حذفش کنم چون کارهای دیگری رو هم میکنه. علاوه بر اون نمیشه به کارگردان گفت که برای وایپ بین دو تا تصویر 20 دفعه این سوئیچ رو بزن و اگه اون یکی تصویر بود این یکی سوئیچ رو 20 بار بزن.
                    دومین مشکلم ندونستن زبون سی AVR هست! که البته این یکی خیلی مهم نیست همونقدر که شما استادانه بلدید و در نهایت الگوریتم کلی رو به من بگید کفایت میکنه!
                    در مورد قضیه سینک بودن هم باید عرض کنم که بله! متاسفانه باید همیشه سینک باشه!! ولی به نظرم بهتره اصلا قطار پالس رو فراموش کنیم !!
                    الگوریتمی که در ذهن من بوده اینه که البته به علت مشکل در تایمرها عملی نشده:
                    خروجی راصفر کن و منتظر اینتراپت باش.
                    هر موقع اینتراپت آمد:
                    خروجی را یک کن.
                    مقدار ADC را بخوان.
                    1023 یعنی 19 میلی ثانیه و صفر یعنی صفر ثانیه. بسته به مقدار ADC خروجی را یک نگهدار.
                    بعد از طی زمان مناسب دوباره خروجی را صفر کن و منتظر اینتراپت بعدی باش.

                    برای میکرو دوم:
                    خروجی راصفر کن و منتظر اینتراپت باش.
                    هر موقع اینتراپت آمد:
                    خروجی را یک کن.
                    مقدار ADC را بخوان.
                    1023 یعنی 59 میکرو ثانیه و صفر یعنی صفر ثانیه. بسته به مقدار ADC خروجی را یک نگهدار.
                    بعد از طی زمان مناسب دوباره خروجی را صفر کن و منتظر اینتراپت بعدی باش.

                    من برای زمانهای میکرو اول که نسبتا زمانهای بزرگی هستند تونستم با همین بسکام یه روتین بنویسم!! البته با دستور waitms که خیلی دقیق نیست و خودش توصیه کرده از تایمر استفاده بشه!! ولی معلوم بود که روتین کار میکنه. ولی برای میکرو دوم چون دستور waitus در بسکام متغیر نمی پذیره و باید حتما مقدار ثابت بهش داد همین نتیجه رو هم نگرفتم.
                    اگر مثل شما توی "سی" یا اسمبلی استاد بودم فکر می کنم با همین روتین میشد انجامش داد.
                    ببخشید که پر حرفی کردم.
                    امیدوارم منظور رو رسونده باشم
                    باز هم ممنون

                    خواجه جعفری
                    اللهم صل علی فاطمه و ابیها، و بعلها و بنیها، و سر المستودع فیها،
                    بعدد ما احاط به علمک...

                    دیدگاه


                      #11
                      پاسخ : طرح مجدد مشکل ایجاد پالسهای دقیق در AVR

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

                      خواجه جعفری
                      اللهم صل علی فاطمه و ابیها، و بعلها و بنیها، و سر المستودع فیها،
                      بعدد ما احاط به علمک...

                      دیدگاه


                        #12
                        پاسخ : طرح مجدد مشکل ایجاد پالسهای دقیق در AVR

                        سلام
                        خواهش می کنم
                        مشکلی نیست،خیلی راحت میشه به جای سوئیچ ها از پتانسیومتر استفاده کرد اما انجوری خیلی دقیق تر است،لازم نیست که کلید ها رو به دفعات فشار بدید،همین که نگهش دارید کافیه!!
                        و اما سوال منو جواب ندادید:
                        نوشته اصلی توسط محمد یارمحمدی
                        سلام
                        آقا یه سوال دیگه هم برام پیش اومد،و اون اینکه همیشه این پالسها باید با این پالس سنکرون بشن؟؟
                        آخه برای میکرو که پریود پالسش 64 میکرو ثانیه هست،نمیشه چون ضریب صحیحی از پالس سنکرون سازی نیست
                        اگر اشتباه نکنم پالس سنکرون سازی 20 میلی ثانیه هست،برای میکرو دیگه این مقدار ضریب صحیح هست،یعنی یک!
                        چون پریود دوتا برابر هست
                        برای میکرو دوم نمیشه این برنامه رو نوشت چون پریودش ضریب صحیح از پریود پالس سنکرون سازی نیست

                        شما ببینید این برنامه که من براتون گذاشتم همونی هست که شما میخواید،اگر هست من براتون با پتانسومترشو می نویسم و الگوریتمش رو هم که خیلی ساده است شرح میدم
                        در دیر مغان آمد یارم قدحی در دست
                        مست از می می خواران از نرگس مستش مست

                        دیدگاه


                          #13
                          پاسخ : طرح مجدد مشکل ایجاد پالسهای دقیق در AVR

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

                          ****
                          در مورد قضیه سینک بودن هم باید عرض کنم که بله! متاسفانه باید همیشه سینک باشه!!
                          ****

                          قبلا هم عرض کرده بودم که این دو تا میکرو قراره پالس برش ویدئو رو در دو جهت افقی و عمودی بسازند. چون در برش افقی باید بخشی از یک میدان(یا به عبارتی نوعی از قاب و فریم) رو ببره باید با شروع قاب تصویر همزمان باشه. چون در ثانیه 25 فریم و هر فریم 2 میدان تصویر هستند عملا میشه 50 میدان تصویر در هر ثانیه یعنی به عبارتی فرکانس میدانها 50 هرتز و پریودشون 20 میلی ثانیه است.
                          در مورد برش ویدئو به صورت عمودی باید از هر خط تصویر در یک میدان یک بخشی بریده بشه. این برش در تمام 625 خط یک فریم باید انجام بشه(برای وایپ دقیقا عمودی!) یعنی باید با پالس خط سنکرون بشه. 25 فریم هر فریم 625 خط(در سیستم پال) مجموعا پریود خط تصویر 64 میکرو ثانیه میشه.

                          اما اون الگوریتمی که من گفتم جای کار نداشت؟! فکر کنم با اون بشه برای 64 میکرو ثانیه ایه هم کاری کرد!!

                          ****
                          خروجی راصفر کن و منتظر اینتراپت باش.
                          هر موقع اینتراپت آمد:
                          خروجی را یک کن.
                          مقدار ADC را بخوان.
                          1023 یعنی 59 میکرو ثانیه و صفر یعنی صفر ثانیه. بسته به مقدار ADC خروجی را یک نگهدار.
                          بعد از طی زمان مناسب دوباره خروجی را صفر کن و منتظر اینتراپت بعدی باش.
                          ****

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

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

                          راستی ! یه مورد دیگه هم به ذهنم اومد!! در مورد میکروی اول اگر تایمر در مود PWM با prescaler=1 و مود 8 بیتی کاربشه همون زمان رو نمی سازه؟!


                          نکته آخر اینکه اگر برنامه بخواد با کلاک 8MHz نوشته بشه خیلی متفاوت می شه؟ برنامه شما فکر کنم با کلاک 16 مگ بود.

                          به هر حال از لطف و توجه و کمکت به نهایت سپاسگذارم.
                          انشا ءالله خیر ببینی جوون!!

                          خواجه جعفری


                          اللهم صل علی فاطمه و ابیها، و بعلها و بنیها، و سر المستودع فیها،
                          بعدد ما احاط به علمک...

                          دیدگاه


                            #14
                            پاسخ : طرح مجدد مشکل ایجاد پالسهای دقیق در AVR

                            سلام.
                            نمیدونم درست فهمیدم یا نه.
                            اما اینی که فهمیدم رو شب برات مینویسم , ببین درسته یا نه.
                            موفق باشید.
                            الهم عجل لولیک الفرج

                            دیدگاه


                              #15
                              پاسخ : طرح مجدد مشکل ایجاد پالسهای دقیق در AVR

                              سلام.
                              این رو نوشتم.
                              نمیدونم منظورتون همین بود یا نه.
                              خیلی دقیق نیست اما خوب با اون چیزی که من فهمیدم , همخوانی داره.
                              پروتئوس من قدیمیه و با adc مشکل داره.
                              برای همین خودتون شبیه سازیش کنید.
                              من برنامه محمد رو هم که شبیه سازی کرده بود نتونستم اجرا کنم (ورژن پروتئوس).
                              ADC0
                              INT0
                              PORTD.7
                              برای شبیه سازی.
                              http://www.4shared.com/file/23769193/847395c3/ff_online.html?dirPwdVerified=58615fc8
                              الهم عجل لولیک الفرج

                              دیدگاه

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