اطلاعیه

Collapse
No announcement yet.

برنامه نویسی برای میکرو armega32

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

    برنامه نویسی برای میکرو armega32

    سلام دوستان، من میخوام یه برنامه برای میکرو کنترلر ATmega32 بنویسم که ورودی که قرار هست به یکی از پایه های میکرو اعمال بشه خروجی یک xor دوتا سیگنال هست که باتوجه به سیگنال های ورودی مرتب 0 و 1 میشه و چهار حالت مختلف رو بوجود میاره {..و0و1} ، {..و1و0}، {0و0} و {...و1و1} ، و با توجه به این چهارحالت باید یک سری دستور رو برام اجرا کنن من برای خواندن ورودی از رجیستر PIN استفاده کردم و برای صفر ویک شدنش یک متغیر تعریف کردم، سوالم این هست که چطور این متغیرهارو تعریف کنم که با هم همپوشانی نداشته باشن، یااینکه چه راه حل دیگه ای وجود داره که تفاوت بین این چهار حالت رو بشه تشخیص داد؟ممنون میشم راهنماییم کنید

    #2
    پاسخ : برنامه نویسی برای میکرو armega32

    میتونی گیت xor را حذف کنی و بجاش دوتا ورودی را به دوتا از پینهای میکرو بدی و نرم افزاری ورودیهات را xor کنی.
    اگه هم از نظر تعداد پین ورودی میکرو محدودیت داری،دوتا سیگنال ورودیت را با سه تا مقاومت بصورت D/A , وصل کنی و به یکی از پینهای ورودی آنالوگ A/D بدی و با خوندن مقدار آنالوگ ،وضعیت سیگنالهات را پیدا کنی و بصورت نرم افزاری xor کنی.
    جدیدترین ویرایش توسط madasazegan; ۱۳:۵۶ ۱۴۰۱/۱۰/۰۳.

    دیدگاه


      #3
      پاسخ : برنامه نویسی برای میکرو armega32

      نوشته اصلی توسط madasazegan نمایش پست ها
      میتونی گیت xor را حذف کنی و بجاش دوتا ورودی را به دوتا از پینهای میکرو بدی و نرم افزاری ورودیهات را xor کنی.
      اگه هم از نظر تعداد پین ورودی میکرو محدودیت داری،دوتا سیگنال ورودیت را با سه تا مقاومت R و2Rبصورت D/A , وصل کنی و به یکی از پینهای ورودی آنالوگ A/D بدی و با خوندن مقدار آنالوگ ،وضعیت سیگنالهات را پیدا کنی و بصورت نرم افزاری xor کنی.
      منظورتون از xor کردن ورودی به صورت نرم افزاری چی هست؟سیگنال های ورودیم آنالوگ هستند که اومدم به IC4046 اعمالش کردم وفرکانس سیگنالهای ورودیم در حد مگاهرتز هست

      دیدگاه


        #4
        پاسخ : برنامه نویسی برای میکرو armega32

        اوکی.ظاهرا درست متوجه سئوالتون نشدم یا برداشت من با شما نسبت به ماهیت سیگنال آنالوگ متفاوته.پیشنهاد منو نادیده بگیرید.

        دیدگاه


          #5
          پاسخ : برنامه نویسی برای میکرو armega32

          نوشته اصلی توسط arash13691 نمایش پست ها
          منظورتون از xor کردن ورودی به صورت نرم افزاری چی هست؟سیگنال های ورودیم آنالوگ هستند که اومدم به IC4046 اعمالش کردم وفرکانس سیگنالهای ورودیم در حد مگاهرتز هست
          با درود
          شما در اصل دو تا فرکانس دارید اونم در حد مگا هرتز
          خب بعد اومدید دوباره این دو خروجی به گیت ایکس اور دادید و خروجی نهایی به یک پین میکرو وصلا کردید
          جالا این ورودی هی صفر و یک میشه و شما میخواید بدونید این صفر یک ها دریافتی مربوط به کدام حالت
          خب اول از همه ایا میگرو شما قادر به خواندن فرکانس در حد مگا هرتز هست ؟ خیر
          دو ما اگر فرکانس خیلی پاین تر بود نیازی به گیت اور خارجی نبود و دو فرکانس به کمک دو پایه میکرو و همچنین وقفه میخونید و از همه حالت با خبر بودید

          دیدگاه


            #6
            پاسخ : برنامه نویسی برای میکرو armega32

            نوشته اصلی توسط کاکو نمایش پست ها
            با درود
            شما در اصل دو تا فرکانس دارید اونم در حد مگا هرتز
            خب بعد اومدید دوباره این دو خروجی به گیت ایکس اور دادید و خروجی نهایی به یک پین میکرو وصلا کردید
            جالا این ورودی هی صفر و یک میشه و شما میخواید بدونید این صفر یک ها دریافتی مربوط به کدام حالت
            خب اول از همه ایا میگرو شما قادر به خواندن فرکانس در حد مگا هرتز هست ؟ خیر
            دو ما اگر فرکانس خیلی پاین تر بود نیازی به گیت اور خارجی نبود و دو فرکانس به کمک دو پایه میکرو و همچنین وقفه میخونید و از همه حالت با خبر بودید
            با سلام
            ممنون از توضیحاتتون
            در اینجا فرکانس سیگنال های ورودی مطرح نیست، چون من فقط صفر ویک شدن متناوب خروجی IC4046 رو به میکرو اعمال میکنم، واگر فرکانس کاری میکرو رو که تا 16 مگاهرتز میتونه باشه رو در نظر بگیریم این صفر ویک شدن متناوب رو میتونه با رجیستر PIN بخونه ودر این مورد مشکلی وجود نداره

            دیدگاه


              #7
              پاسخ : برنامه نویسی برای میکرو armega32

              نوشته اصلی توسط arash13691 نمایش پست ها
              با سلام
              ممنون از توضیحاتتون
              در اینجا فرکانس سیگنال های ورودی مطرح نیست، چون من فقط صفر ویک شدن متناوب خروجی IC4046 رو به میکرو اعمال میکنم، واگر فرکانس کاری میکرو رو که تا 16 مگاهرتز میتونه باشه رو در نظر بگیریم این صفر ویک شدن متناوب رو میتونه با رجیستر PIN بخونه ودر این مورد مشکلی وجود نداره
              متوجه هستم
              منم خروجی اسی مذکوره رو گفتم و اون ورودی به گیت ایکس اور وصل شده و در نهایت خروجی گیت به پین و.رودی میکرو
              اصلا بیا فقط خروجی گیت ایکس اور در نظر بگیریم
              فرکانس ها که فقط انالوگ نیستن .. فرکانس دیجیتالی هم داریم که میشه گفت تمام دنیا داره با این مدل فرکانس ها میچرخه
              همون صفر و یک های نازنین یک فرکانس رو تشکیل میدن .
              پس ورودی پین میکرو داره یک فرکانس دیجیتالی رو دریافت میکنه
              و کلاک میکرو هم اینجوری که برای اجرای یک دستور شاید 100 کلاک مصرف میشه
              و سیکل روشنایی و خاموشی این ورودی شما هم به خاطر عملیالت های گیت ثابت نیست و تناوب متفاوتی داره و فرکانس هم در حال تغییره
              و برای خوانش از کلاک یک طبقه پایین تر باید به عنوان کلاک پالس استفاده کنی یعنی خروجی اسی مذکوره
              در کل تا جایی که میدونم میکرو نمیتونه این فرکانس بخونه
              و خوانش فرکانس های تقریبا بالا ذهن میکرو مشغول میکنه و دیگه نمیتونه کار دیگه ای انجام بده

              دیدگاه


                #8
                پاسخ : برنامه نویسی برای میکرو armega32

                نوشته اصلی توسط کاکو نمایش پست ها
                و خوانش فرکانس های تقریبا بالا ذهن میکرو مشغول میکنه و دیگه نمیتونه کار دیگه ای انجام بده
                با سلام و احترام
                برای اندازه گیری فرکانس میتوان از وقفه های تایمر/کانتر استفاده کرد.
                موفق باشید.

                دیدگاه


                  #9
                  پاسخ : برنامه نویسی برای میکرو armega32

                  نوشته اصلی توسط evergreen نمایش پست ها
                  با سلام و احترام
                  برای اندازه گیری فرکانس میتوان از وقفه های تایمر/کانتر استفاده کرد.
                  موفق باشید.
                  با درود

                  سپاس از راهنمایی تون
                  ولی بازم این میکرو نمیتونه این فرکانس بخونه درسته ؟
                  منظور شما اینه در بازه یک ثانیه این کار بکنه تا فرکانس مشخص بشه
                  این پالس های ورودی سیکل خاموش روشناییشون برابر نیست بخاطر گیت ایکس اور
                  البته ایشون نمیخوان فرکانس بسنجن
                  میخوان خروجی گیتا ایکس اور که فرکانسی در حد مگا هرتز داره پردازش کنن اونم دانه دانه سیکل ها
                  جدیدترین ویرایش توسط کاکو; ۲۰:۲۹ ۱۴۰۱/۱۰/۰۴.

                  دیدگاه


                    #10
                    پاسخ : برنامه نویسی برای میکرو armega32

                    dim a as byte
                    a.0=pinc.0
                    a.1=pinc.1
                    حالا با تغیرر ورودی هر دو پایه میکرو متغییرت 00=0 01=1 10=2 11=3
                    پس متغییرت الان با تغییر دو پایه میکرو 0 1 2 3 میشود
                    میکرو با توجه به کریستال می تونه در حالت مستقیم 4 مگاهرتز را بخونه و اگه به خواندن فرکانس های بالاتر نیازه از مدارات تقسیم فرکانس استفاده نمایید بطور مثال مدار زیر با میکروی اتمگا 8 40 مگاهرتز را نشان میده

                    جدیدترین ویرایش توسط saeidssm; ۲۰:۳۷ ۱۴۰۱/۱۰/۰۴.

                    دیدگاه


                      #11
                      پاسخ : برنامه نویسی برای میکرو armega32

                      نوشته اصلی توسط saeidssm نمایش پست ها
                      dim a as byte
                      a.0=pinc.0
                      a.1=pinc.1
                      حالا با تغیرر ورودی هر دو پایه میکرو متغییرت 00=0 01=1 10=2 11=3
                      پس متغییرت الان با تغییر دو پایه میکرو 0 1 2 3 میشود
                      میکرو با توجه به کریستال می تونه در حالت مستقیم 4 مگاهرتز را بخونه و اگه به خواندن فرکانس های بالاتر نیازه از مدارات تقسیم فرکانس استفاده نمایید بطور مثال مدار زیر با میکروی اتمگا 8 40 مگاهرتز را نشان میده

                      http://www.avr-asm-tutorial.net/avr_...fcount_m8.html
                      با درود
                      ایشون نمیخو.ان فرکانس رو بسنجن حالا کاری با شدن یا نشدنش نداریم
                      توجه کنید ایشون میخوان حداقل هر یک میکرو ثانیه یکی از پایه های میکرو رو بخونه ؟ بنظرتون میشه ؟

                      دیدگاه


                        #12
                        پاسخ : برنامه نویسی برای میکرو armega32

                        نوشته اصلی توسط کاکو نمایش پست ها
                        با درود
                        ایشون نمیخو.ان فرکانس رو بسنجن حالا کاری با شدن یا نشدنش نداریم
                        توجه کنید ایشون میخوان حداقل هر یک میکرو ثانیه یکی از پایه های میکرو رو بخونه ؟ بنظرتون میشه ؟
                        خوب ببینیم خطوط بر کریستال جواب گو هست یا نه سریع ترین روش اینه که یه حلقه درست کنه و تو اون حلقه فقط اون دوتا پینو بخونه هر خواندن تک خطی تا فرکانس 1 مگاهرتز امکانپذیره و دو خط به نیم مگاهرتز و دستور خارج شدن از ان حلقه به یک چهارم مگاهرتز و سرکشی تایمر نصفش میکنه در نهایت نمیشه 125 کیلو هرتز پیشی گرفت میشود دو پینو در دو قسمت تا 4 مگاهرتز با دو ورودی کانتر خواند فرکانس اما اگه دنبال مقدار دهی به متغییری باشیم عملیات مقدار دهی به متغییر نیاز به کلاک پالس داره همین 125 کیلوهرتز با کریستال و با میکروی سازگار با ان کریستال 32 مگاهرتز میشه 250 کیلو هرتز پس هر بار که متغییری را مقدار دهی می کنیم از نوع بایت 8 کلاک پالس درگیر و تقسیم کلاک پالس کلی رخ میده و ان 4 مگاهرتز به 250 کیلو هرتز تقلیل پیدا میکنه با ضافه شدن خطوط برنامه کمتر و کمتر میشود

                        دیدگاه


                          #13
                          پاسخ : برنامه نویسی برای میکرو armega32

                          نوشته اصلی توسط saeidssm نمایش پست ها
                          dim a as byte
                          a.0=pinc.0
                          a.1=pinc.1
                          حالا با تغیرر ورودی هر دو پایه میکرو متغییرت 00=0 01=1 10=2 11=3
                          پس متغییرت الان با تغییر دو پایه میکرو 0 1 2 3 میشود
                          میکرو با توجه به کریستال می تونه در حالت مستقیم 4 مگاهرتز را بخونه و اگه به خواندن فرکانس های بالاتر نیازه از مدارات تقسیم فرکانس استفاده نمایید بطور مثال مدار زیر با میکروی اتمگا 8 40 مگاهرتز را نشان میده

                          http://www.avr-asm-tutorial.net/avr_...fcount_m8.html
                          سلام
                          ممنون از توضیحاتتون
                          حداکثر فرکانس سیگنال ورودی من 2 مگاهرتز هست،اگر کریستال غیر استاندارد 11.0592MHz استفاده کنم درست عمل میکنه یا از فرکانس کاری بالاتر استفاده کنم؟
                          من دوتاسیگنال برای اعمال به میکرو ندارم من فقط یک ورودی دارم که میتونه 0 یا 1 بشه، من اومدم دوتامتغیر تعریف کردم که در صورت تغییر وضعیت پایه اون متغیر تغییر کنه، و با بزرگتر موازی وکوچکتر درنظر گرفتن این دوتا متغیر سه حالت بدست میاد وقتی که دوتا صفر پشت سر هم هست وقتی دوتا یک پشت سر هم هست که جواب درسته ولی با این کار وقتی 01 و10 هست رو یکی درنظر میگیره، چه راهی وجود داره که بشه برای حالت سوم تفاوتی به وجود آورد؟



                          (0==0.PINA)if
                          1=x
                          (1==0.PINA)if
                          y=1


                          دیدگاه


                            #14
                            پاسخ : برنامه نویسی برای میکرو armega32

                            سلام دوستان کسی میدونه چطور میشه صفر ویک شدن پایه میکرو رو طبق برنامه c نگه داشت و براساس حداقل دو بار تغییر پایه ورودی یک متغیر رو مقدار دهی کرد؟

                            دیدگاه


                              #15
                              پاسخ : برنامه نویسی برای میکرو armega32

                              برای این مدل کارها از واحد input capture میکرو استفاده میشه .

                              AVR Atmega16/ATmega32 has a feature of Input Capture Mode through which it can capture signal rising or falling edge events on its pin.



                              موفق باشید
                              جدیدترین ویرایش توسط Amie.s.m; ۱۵:۴۶ ۱۴۰۱/۱۰/۰۶.

                              دیدگاه

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