اطلاعیه

Collapse
No announcement yet.

برنامه نویسی XMEGA با Bascom-AVR

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

    #46
    پاسخ : برنامه نویسی XMEGA با Bascom-AVR

    خیلی ممنون آقای طراح ، با افزایش فرکانس کاری میکرو و جابجا کردن اون دستورات به do loop نتایج خیلی بهتر شد ولی هنوز کمی خطا هست.
    در مورد این قسمت که فرمودید "برای تولید یک فرکانس هم نیاز به ایجاد وقفه و اشغال کردن وقت CPU نیست و برای تولید فرکانس می توانید از مدهای مربوطه در تایمر استفاده کنید."
    اگه میشه لطف کنید یه کد برای مثال قرار بدید.
    یه سوال دیگه اینکه اگه ورودی سینوسی باشه اگه فقط یکسوش کنیم کافیه یا باید تبدیل به مربعی هم بشه ؟ یه مورد دیگه اینکه امکانش هست سطح بالا رو مثلا از 3 ولت بیاریم روی 0.5 ولت تا برای ورودی های با دامنه پایین مشکلی نباشه ؟
    میتونم از قطعه sp8704 برای ورودی فرکانس استفاده کنم تا فرکانس به 128 تقسیم بشه و بعد در محاسبات در 128 ضرب کنم. اما جایی این آیسی رو پیدا نکردم :sad:
    با تشکر فراوان بابت راهنمایی های شما

    دیدگاه


      #47
      پاسخ : برنامه نویسی XMEGA با Bascom-AVR

      تولید شکل موج متناوب می تواند از طریق خروجی های PWM و استفاده از قابلیت Waveform generation انجام شود. در مورد ورودی سینوسی، امکان اعمال آن بصورت یکسو شده به پورت (در صورتی که در محدوده مجاز ورودی باشد)، وجود دارد. برای دقت بیشتر می توانید در مواردی از عملکرد مقایسه کننده آنالوگ هم استفاده کنید. استفاده از تقسیم کننده هم در صورتی مورد نیاز است که فرکانس ورودی به حدی بالا باشد که بصورت مستقیم تسط میکروکنترلر قابل شمارش و تشخیص نباشد و در غیر اینصورت لازم نیست. نکته دیگر این است که در فرکانس های بالا لازم نیست تعداد شمارش تایمر در یک ثانیه اندازه گیری شود و بسته به فرکانس، این اندازه گیری می تواند در مثلا 0.1 یا 0.01 ثانیه و مانند آن انجام شود و از این طریق تایمر در طول اندازه گیری تعداد پالس ها overflow نمی شود.
      اوژن: به معنای افکننده و شکست دهنده است
      دانایی، توانایی است-Knowledge is POWER
      برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
      وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
      قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
      اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
      ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

      دیدگاه


        #48
        پاسخ : برنامه نویسی XMEGA با Bascom-AVR

        واقعا ممنون
        یه سوال واسم پیش اومده اینکه اگه از 8704 استفاده کنیم و فرکانس ما زیر 128 باشه مثلا 70 باشه ، بعد که تقسیم بر 128 میشه و وارد میکرو میشه قابل شمارش هست ؟ یا حداقل ورودی وقتی از 8704 استفاده میکنیم باید 128 هرتز باشه ؟
        سوال بعدی اینکه میشه با نوشتن دستوراتی توی میکرو حد پایین واسه شمارش پالس رو مثلا بین 0 تا 1.5 ولت تعیین کرد و حد بالا رو بین 2.5 تا 3 ؟
        ببخشید اینقدر سوال میپرسم :redface:

        دیدگاه


          #49
          پاسخ : برنامه نویسی XMEGA با Bascom-AVR

          سلام
          ایا کسی میتونه یه توضیح <<<کامل>>> از دستورات پیکر بندی dac و adc رو در xmega بده از help بسکام چیز زیادی دستگیرم نشد
          با تشکر

          دیدگاه


            #50
            پاسخ : برنامه نویسی XMEGA با Bascom-AVR

            نوشته اصلی توسط xoncegame
            واقعا ممنون
            یه سوال واسم پیش اومده اینکه اگه از 8704 استفاده کنیم و فرکانس ما زیر 128 باشه مثلا 70 باشه ، بعد که تقسیم بر 128 میشه و وارد میکرو میشه قابل شمارش هست ؟ یا حداقل ورودی وقتی از 8704 استفاده میکنیم باید 128 هرتز باشه ؟
            سوال بعدی اینکه میشه با نوشتن دستوراتی توی میکرو حد پایین واسه شمارش پالس رو مثلا بین 0 تا 1.5 ولت تعیین کرد و حد بالا رو بین 2.5 تا 3 ؟
            ببخشید اینقدر سوال میپرسم :redface:
            sp8704 یک تقسیم کننده بر 128/129 یا 64/65 است که تا 950 مگاهرتز امکان پذیرش ورودی را دارد و با توجه به این توضیح سوال شما در مورد حداقل فرکانس مقداری نامفهوم است. در هر صورت محدودیتی برای حداقل فرکانس بصورتی که شما ذکر کردید، وجود ندارد ( احتمالا منظور شما از 128 هرتز، 128 مگاهرتز بوده است).
            همچنین محدوده High و Low ورودی پین های I/O قابل تعریف نیست (مگر در صورت استفاده از ADC) که در این رابطه می توانید به منحنی های مقادیر این ولتاژها بر حسب دما و تغذیه در بخش Typical Characteristics در انتهای Datasheet هر شماره مراجعه کنید.

            نوشته اصلی توسط morteza_j
            ایا کسی میتونه یه توضیح <<<کامل>>> از دستورات پیکر بندی dac و adc رو در xmega بده از help بسکام چیز زیادی دستگیرم نشد
            لازمه متوجه شدن عملکرد دستورات مرتبط با ADC و DAC و بسیاری بخش های دیگر، مطالعه و تسلط کامل بر مطالب موجود در XMEGA A manual است و به هیچ وجه نمی توان با خواندن help بسکام در این موارد تسلط لازم را بدست آورد. توضیح عملکرد این دو بخش هم بسیار مفصل است که چندین صفحه مطلب را به خود اختصاص می دهد.
            اوژن: به معنای افکننده و شکست دهنده است
            دانایی، توانایی است-Knowledge is POWER
            برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
            وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
            قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
            اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
            ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

            دیدگاه


              #51
              پاسخ : برنامه نویسی XMEGA با Bascom-AVR

              نوشته اصلی توسط طراح
              لازمه متوجه شدن عملکرد دستورات مرتبط با ADC و DAC و بسیاری بخش های دیگر، مطالعه و تسلط کامل بر مطالب موجود در XMEGA A manual است و به هیچ وجه نمی توان با خواندن help بسکام در این موارد تسلط لازم را بدست آورد. توضیح عملکرد این دو بخش هم بسیار مفصل است که چندین صفحه مطلب را به خود اختصاص می دهد.
              ممنون
              آیا شما رفرنسی رو سراغ دارید زبان اصلی هم باشه مشکلی نداره ولی کامل باشه من هرچی گشتم چیزی پیدا نکردم

              دیدگاه


                #52
                پاسخ : برنامه نویسی XMEGA با Bascom-AVR

                نوشته اصلی توسط morteza_j
                آیا شما رفرنسی رو سراغ دارید زبان اصلی هم باشه مشکلی نداره ولی کامل باشه من هرچی گشتم چیزی پیدا نکردم
                http://www.atmel.com/Images/doc8077.pdf
                اوژن: به معنای افکننده و شکست دهنده است
                دانایی، توانایی است-Knowledge is POWER
                برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                دیدگاه


                  #53
                  پاسخ : برنامه نویسی XMEGA با Bascom-AVR

                  من میخوام از طریق بسکام و RS232 و میکرو xmega128یه سروو کنترل کنم برای همین داخل برنامم از عبارت Enable Ovf0 استفاده کردم
                  ولی وقتی کامپایل میکنم از Ovf0 ارور میگیرد.داخل دیتاشیت میکرو گشتم اما چیزی پیدا نکردم چه جوری این مشکل حل کنم؟

                  دیدگاه


                    #54
                    پاسخ : برنامه نویسی XMEGA با Bascom-AVR

                    در XMEGA به دلیل وجود 3 سطح از اولویت در وقفه ها، برای فعال سازی وقفه ها باید به دوبیت بجای یک بیت مقدار دهی شود و عبارت ovf0 مربوط به تایمر AVR های معمولی است (در مورد XMEGA باید به جزئیات رجیسترهای تایمر مورد استفاده مراجعه کنید). ضمنا به شما و سایر دوستان توصیه می کنم در مورد XMEGA بیجهت وقت خود را با ابزار بسکام صرف نکنید و در صورت امکان به کد نویسی با کامپایلرهای مبتنی بر برنامه نویسی C روی بیاورید.
                    اوژن: به معنای افکننده و شکست دهنده است
                    دانایی، توانایی است-Knowledge is POWER
                    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                    دیدگاه


                      #55
                      پاسخ : برنامه نویسی XMEGA با Bascom-AVR

                      ممنون از راهنمایی خوبتون جناب طراح .من خودم شخصا از کامپایلرهای c استفاده میکنم اما به مقتضی مورد خواسته شده از من مجبور به استفاده از بسکام شدم .
                      و اما در مورد جوابی که دادید بگم من فقط کلیت گفته شما متوجه شدم اما در مورد راه کار و رفع مشکل چیزی ندارم که بگم برای همین میشه لطف کنید با مثال یا پاسخ مشکل منو متوجه ایرادم کنید :eek:

                      دیدگاه


                        #56
                        پاسخ : برنامه نویسی XMEGA با Bascom-AVR

                        سلام خدمت دوستان گرامی واساتید سایت
                        ما قصد کارکردن با تایمر xmega128a1 داریم ولی تا این لحظه موفق به این کار نشدیم
                        فعلا در کامپایلر Bascom داریم کار می کنیم
                        و نمی دونیم چطوری وقفه سرریز تایمر را فعال کنیم مثلا در avrهای معمولی می نوشتیم Enable ovf0 ولی این دستور رابرای Xmega وError می گیرد :eek: :eek:
                        معجزه این است که هرچه داشته هایت را بیشتر با دیگران سهیم شوی،داراتر می شوی (لئونارد نیموی)
                        اگر مغزانسان،چنان ساده می بود که ما از آن سر در می آوردیم،هنوز چنان احمق بودیم که هیچ از آن سر در نمی آوردیم!
                        آموزش Modelsim

                        دیدگاه


                          #57
                          پاسخ : برنامه نویسی XMEGA با Bascom-AVR

                          من فهمیدم چون که در Xmega اولویت وقفه داریم باید وقفه ها را اولویت بندی کنیم ولی نمی دونم چطوری ؟رجیسترهاش چیه؟ حتما یه روش ساده در بیسکام باید داشته باشه؟
                          در ضمن ما وقفه سریال نیز همراه وقفه سرریز تایمر داریم که از وقفه سریال جواب گرفتیم ولی از تایمر نه لطفا دوستان راهنمایی کنند :angry: :angry: :angry:
                          معجزه این است که هرچه داشته هایت را بیشتر با دیگران سهیم شوی،داراتر می شوی (لئونارد نیموی)
                          اگر مغزانسان،چنان ساده می بود که ما از آن سر در می آوردیم،هنوز چنان احمق بودیم که هیچ از آن سر در نمی آوردیم!
                          آموزش Modelsim

                          دیدگاه


                            #58
                            پاسخ : برنامه نویسی XMEGA با Bascom-AVR

                            با سلام و عرض ادب ، لطفا بفرمایید در xmega چطور می توانم متغییری را که در حافظه eram ذخیره کرده ام را بخوانم.
                            به عنوان مثال من در بیسکام به این صورت عمل می کنم ولی پیغام خطا نمایش داده می شود :
                            کد:
                            dim A as single
                            dim B as eram single
                            dim c as single
                            
                            A=1200000
                            B=A
                            
                            'baraye khate zir peygham khata namayesh dade mishavad
                            
                            C=B
                            
                            peygham:assignment error

                            دیدگاه


                              #59
                              پاسخ : برنامه نویسی XMEGA با Bascom-AVR

                              نوشته اصلی توسط nimrar
                              ممنون از راهنمایی خوبتون جناب طراح .من خودم شخصا از کامپایلرهای c استفاده میکنم اما به مقتضی مورد خواسته شده از من مجبور به استفاده از بسکام شدم .
                              و اما در مورد جوابی که دادید بگم من فقط کلیت گفته شما متوجه شدم اما در مورد راه کار و رفع مشکل چیزی ندارم که بگم برای همین میشه لطف کنید با مثال یا پاسخ مشکل منو متوجه ایرادم کنید :eek:
                              نوشته اصلی توسط skiboy
                              من فهمیدم چون که در Xmega اولویت وقفه داریم باید وقفه ها را اولویت بندی کنیم ولی نمی دونم چطوری ؟رجیسترهاش چیه؟ حتما یه روش ساده در بیسکام باید داشته باشه؟
                              در ضمن ما وقفه سریال نیز همراه وقفه سرریز تایمر داریم که از وقفه سریال جواب گرفتیم ولی از تایمر نه لطفا دوستان راهنمایی کنند :angry: :angry: :angry:
                              برای فعال سازی وقفه های با اولویت های مختلف از دستور config priority استفاده کنید. برای تعیین اولویت وقفه تایمر هم میتوانید از Enable استفاده کنید. مثلا برای اینکه وقفه سریز TCD0 داری اولویت high باشد و این وقفه هم فعال شود:

                              کد:
                              Enable Tcd0_ovf , Hi
                              Config Priority = Static , Hi = Enabled
                              Enable Interrupts


                              نوشته اصلی توسط mehrdadkey2
                              با سلام و عرض ادب ، لطفا بفرمایید در xmega چطور می توانم متغییری را که در حافظه eram ذخیره کرده ام را بخوانم.
                              به عنوان مثال من در بیسکام به این صورت عمل می کنم ولی پیغام خطا نمایش داده می شود :
                              کد:
                              dim A as single
                              dim B as eram single
                              dim c as single
                              
                              A=1200000
                              B=A
                              
                              'baraye khate zir peygham khata namayesh dade mishavad
                              
                              C=B
                              
                              peygham:assignment error
                              من این کد را امتحان کردم و خطایی ایجاد نشد.
                              اوژن: به معنای افکننده و شکست دهنده است
                              دانایی، توانایی است-Knowledge is POWER
                              برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                              وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                              قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                              اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                              ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                              دیدگاه


                                #60
                                پاسخ : برنامه نویسی XMEGA با Bascom-AVR

                                من این کد را اجرا می کینم . متاسفانه خطای assignment error از من گرفته می شود . خیلی گیج کننده است. لطفا اگر امکان دارد راهنمایی کنید . متشکرم

                                دیدگاه

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