اطلاعیه

Collapse
No announcement yet.

آموزش winavr و avrlib

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

    #91
    پاسخ : آموزش winavr و avrlib

    بخاطر قابلیت اپتیمایز کامپایلره
    وقتی اکتیو باشه کامپایلر هوشمندانه میفهمه که واسه سه تا nop که سه سیکل میبره نیاد چندتا دستور جامپ و مقایسه اضافه کنه که هم تعداد سیکلها حدودا دو یا سه برابرمیشه و هم فلش بیشتری حروم میشه.
    ولی مثلا برای صدتا nop که صد سیکل میبره، نوشتن صدتا خونه فلش یه مقدار دور از عقله واسه همین میاد مثلا یه لوپ 50 تایی با nop درست میکنه که حدودا 100 سیکل تاخیر ایجاد کنه(هرچند شاید دقیقا 100 سیکل نشه) ولی تعداد خونه های فلشی که استفاده میشه شاید درحد 10بایت هم نباشه.
    با تنظیم پارامترهای مختلف اپتیمایز میشه به کامپایلر فهموند که از چه روشی استفاده بشه.
    عدد و رقمهایی که گفتم فقط واسه مثاله و دقیقش رو میتونید با مراجعه به دیتاشیت و instruction set میکرو بدست بیارید
    درضمن اگه اشتباه نکنم فکرکنم جناب طراح هم قبلا درمورد این موضوع بحث کرده
    {خلاف قوانین - امضا ویرایش شد}

    دیدگاه


      #92
      پاسخ : آموزش winavr و avrlib

      ببخشید چطور میشه با timerها PWM تولید کرد؟

      دیدگاه


        #93
        پاسخ : آموزش winavr و avrlib

        نوشته اصلی توسط xlv1x
        ببخشید چطور میشه با timerها PWM تولید کرد؟
        راه اندازی pwm که با مقداردهی رجیسترهای تایمر انجام میشه. یه نگاهی به کتابها یا مقالات آموزش avr بندار.
        اگه نمی خوای درگیر رجیسترها بشی، از کتابخونه تایمر avrlib که تو همین تاپیک معرفی شده استفاده کن. سرچ کنی کتابخونه های کامل تری هم پیدا میشه
        https://www.linkedin.com/in/mohammadhosseini69

        http://zakhar.blog.ir

        دیدگاه


          #94
          پاسخ : آموزش winavr و avrlib

          اگه لطف کنین آموزش کار با EEPROM در WINAVR رو بذارین ممنون میشم . من http://winavr.scienceprog.com/avr-gc...in-eeprom.html رو دیدم ولی نمیدونم چی کار کرده .
          فرق ما با جهان غرب در اینه که اونا هیچی نمیدونن! و تحقیق میکنند ولی ما همه چیزو می دونیم! و تحقیق برای ما معنی نداره!!!!!!!!!!!! .(از یه آدم اینکاره)

          دیدگاه


            #95
            پاسخ : آموزش winavr و avrlib

            اینو ببین :
            http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=3 8417
            من خودم تاحالا امتحان نکردم. ولی اینطور که تو اون تاپیک آموزش داده خیلی راحته
            هدر eeprom.h
            با دستور EEMEM متغیر تو eeprom ذخیره میشه.
            برای خوندنش باید حتما از آدرس (با اپراتور &amp استفاده کنی.
            اینام توابع
            کد:
            uint8_t eeprom_read_byte (const uint8_t *addr)
            void eeprom_write_byte (uint8_t *addr, uint8_t value)
            uint16_t eeprom_read_word (const uint16_t *addr)
            void eeprom_write_word (uint16_t *addr, uint16_t value)
            void eeprom_read_block (void *pointer_ram, const void *pointer_eeprom, size_t n)
            void eeprom_write_block (void *pointer_eeprom, const void *pointer_ram, size_t n)
            از اون تاپیک کاملتر و ساده تر نمیشه گفت! :mrgreen:
            https://www.linkedin.com/in/mohammadhosseini69

            http://zakhar.blog.ir

            دیدگاه


              #96
              پاسخ : آموزش winavr و avrlib

              نوشته اصلی توسط محمد حسینی
              اینو ببین :
              http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=3 8417
              من خودم تاحالا امتحان نکردم. ولی اینطور که تو اون تاپیک آموزش داده خیلی راحته
              هدر eeprom.h
              با دستور EEMEM متغیر تو eeprom ذخیره میشه.
              برای خوندنش باید حتما از آدرس (با اپراتور &amp استفاده کنی.
              اینام توابع
              کد:
              uint8_t eeprom_read_byte (const uint8_t *addr)
              void eeprom_write_byte (uint8_t *addr, uint8_t value)
              uint16_t eeprom_read_word (const uint16_t *addr)
              void eeprom_write_word (uint16_t *addr, uint16_t value)
              void eeprom_read_block (void *pointer_ram, const void *pointer_eeprom, size_t n)
              void eeprom_write_block (void *pointer_eeprom, const void *pointer_ram, size_t n)
              از اون تاپیک کاملتر و ساده تر نمیشه گفت! :mrgreen:
              EEPROM که سه تا ریجستر بیشتر نداره و نوشتن تابع هاش کار سختی نیست. حالا نمیشه کاری کرد که مثل تعریف متغیر تو رم خودش آدرس درست رو پیدا کنه و به جای اینکه درگیر آدرسش بشیم با اسمی که به اون متغیر نسبت دادیم کار کنیم؟
              این روش آدرس دهی وقتی اذیت میکنه که بخوای متغیر های 16 بیتی و 32 بیتی هم داشته باشی.امکان نداره تو آدرس دادن 2 کیلو فضا یه اشتباه نکنی. تازه با این شرایط چطوری باید یه ساختار رو توی EEPROM تعریف کرد؟
              نمیشه یه متغیر 8 بیتی در رم درست کنیم که کارش اشاره به آدرس های EEPROM باشه و وقتی که قصد کار با EEPROM رو داری از اون اشاره گر استفاده کرد تا آدرس رو برامون پیدا کنه؟
              [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

              دیدگاه


                #97
                پاسخ : آموزش winavr و avrlib

                دانلود avrlib
                http://www.mil.ufl.edu/~chrisarnold/components/microcontrollerBoard/AVR/avrlib
                فعلا با avrlib کاری نداریم.
                1- سایتش فایلها را ریمو کرده ، دارید بزارید برای دانلود ؟
                2- من آخرین نسخه winavr + avr studio را دانلود کردم و استفاده میکنم ، نیازی هست الان به داشتن این لایبراریها ؟
                3- بیچارم تا این 7 صفحه را بخونم و بفهمم چی به چیه تازه :biggrin:
                4- تشکر ویژه از جناب محمد حسینی. ( نمشد زیر پستهایهر 7 صفحه کلید تشکر را زد خب )


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

                دیدگاه


                  #98
                  پاسخ : آموزش winavr و avrlib

                  نوشته اصلی توسط shahinbahari
                  EEPROM که سه تا ریجستر بیشتر نداره و نوشتن تابع هاش کار سختی نیست. حالا نمیشه کاری کرد که مثل تعریف متغیر تو رم خودش آدرس درست رو پیدا کنه و به جای اینکه درگیر آدرسش بشیم با اسمی که به اون متغیر نسبت دادیم کار کنیم؟
                  این روش آدرس دهی وقتی اذیت میکنه که بخوای متغیر های 16 بیتی و 32 بیتی هم داشته باشی.امکان نداره تو آدرس دادن 2 کیلو فضا یه اشتباه نکنی. تازه با این شرایط چطوری باید یه ساختار رو توی EEPROM تعریف کرد؟
                  نمیشه یه متغیر 8 بیتی در رم درست کنیم که کارش اشاره به آدرس های EEPROM باشه و وقتی که قصد کار با EEPROM رو داری از اون اشاره گر استفاده کرد تا آدرس رو برامون پیدا کنه؟
                  متوجه نشدم چه اشتباهی؟! همون متغیری که تعریف شده با همون اسم استفاده میشه فقط قبلش یه & باید باشه. اشتباه آدرس چیه؟
                  برای متغیر 16 بیتی هم تابع read word داره و بیشتر از 16 بیت هم read block. حتی رشته هم میشه...
                  شایدم من درست متوجه نشدم! ok فردا کامل میخونم بحث رو باز میکنم...

                  نوشته اصلی توسط J0KER
                  1- سایتش فایلها را ریمو کرده ، دارید بزارید برای دانلود ؟
                  2- من آخرین نسخه winavr + avr studio را دانلود کردم و استفاده میکنم ، نیازی هست الان به داشتن این لایبراریها ؟
                  3- بیچارم تا این 7 صفحه را بخونم و بفهمم چی به چیه تازه :biggrin:
                  4- تشکر ویژه از جناب محمد حسینی. ( نمشد زیر پستهایهر 7 صفحه کلید تشکر را زد خب )
                  1-راستش من که با این سرعت ... :mrgreen:
                  لطفا یکی پلود کنه... تا یه لینک دیگه پیدا کنیم اونو عوضش کنم
                  2- اگه میخوای با اونا کار کنی نیازه! :biggrin: البته معمولا نسخه کامل شده هر کدوم از اون فایل ها جدا تو اینترنت سایت های مختلف پیدا میشه...
                  3- عجله نکن! آروم آروم که بکس و باد نکنی...
                  4- چاکر ایرانوبجیا هم هستیم! راستش من خودمم تو این تاپیک، winavr یاد گرفتم (با کمک بقیه دوستان)! اصلا این تاپیک رو باز کردم که winavr یاد بگیرم! و نتیجه هم این شد که کلا دیدم نسبت به میکرو و برنامه نویسی میکرو تغییر کرد. الان واقعا حس خوبی دارم...

                  سعی کن این کتابخونه ها حکم کدویزارد یا توابع بیسکام رو پیدا نکنه! باید با رجیسترها و امکانات میکرو کامل آشنا بشی. اپن سورس بودن اینا خیلی میتونه کمک کنه...
                  https://www.linkedin.com/in/mohammadhosseini69

                  http://zakhar.blog.ir

                  دیدگاه


                    #99
                    پاسخ : آموزش winavr و avrlib

                    یک نسخه از سال 2006 پیدا کردم ،
                    http://hubbard.engr.scu.edu/avr/avrlib

                    ای بابا 1.5 مگ را پلود کن با دیال پ ، هر دقیقه اون دنیا یه حوری برات میزارن کنار :applause:


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

                    دیدگاه


                      پاسخ : آموزش winavr و avrlib

                      نوشته اصلی توسط J0KER
                      یک نسخه از سال 2006 پیدا کردم ،
                      http://hubbard.engr.scu.edu/avr/avrlib

                      ای بابا 1.5 مگ را پلود کن با دیال پ ، هر دقیقه اون دنیا یه حوری برات میزارن کنار :applause:

                      یه سوال مگه فایلها کنارش باشن نباید کار کنه ، چرا اینجا گفته باید این کارها را بکنیم تا نصب کامل باشه
                      http://www.mil.ufl.edu/~chrisarnold/components/microcontrollerBoard/AVR/avrlib/docs/html/install.html

                      البته من هم فقط آدرس را دادم و مثالهای آموزشی صفحه اول که بدون مشکل کار کردند ولی سوال شده دیگه )
                      همون 2006 آخرین انتشار کتابخونه های جناب pascal stang (منم همون رو دارم)
                      از اون به بعد فایل هاش توسط اشخاص مختلف توسعه پیدا کرد و مستقل شد... (و همچنان ادامه داره)

                      اگه نصب کنی دیگه احتیاج به کپی کردن فایل ها کنار پروژه نداری.
                      البته اینم بگم که بعد از یه مدت، درخیلی موارد دیگه طرف avrlib نمیری...
                      https://www.linkedin.com/in/mohammadhosseini69

                      http://zakhar.blog.ir

                      دیدگاه


                        پاسخ : آموزش winavr و avrlib

                        سلام به همگی . من تازه می خوام با winavr کار کنم و یه سوالی دارم نخندیدا .!!! اصلا من نمی دونم چطور باید با این نرم افزار برنامه نوشت. آیا همون avr gcc هستش و باید از برنامه ی avr studio استفاده کرد یا .....؟؟؟؟؟؟

                        دیدگاه


                          پاسخ : آموزش winavr و avrlib

                          نوشته اصلی توسط ma-bah
                          سلام به همگی . من تازه می خوام با winavr کار کنم و یه سوالی دارم نخندیدا .!!! اصلا من نمی دونم چطور باید با این نرم افزار برنامه نوشت. آیا همون avr gcc هستش و باید از برنامه ی avr studio استفاده کرد یا .....؟؟؟؟؟؟
                          آخرین نسحه winavr و avr studio رو بگیر و نصب کن.
                          نصب کردن winavr باعث میشه خود به خود Avr gcc به Avr studio اضافه بشه. یعنی میتونی تو محیط avr studio کار کنی....
                          https://www.linkedin.com/in/mohammadhosseini69

                          http://zakhar.blog.ir

                          دیدگاه


                            پاسخ : آموزش winavr و avrlib

                            متوجه نشدم چه اشتباهی؟! همون متغیری که تعریف شده با همون اسم استفاده میشه فقط قبلش یه & باید باشه. اشتباه آدرس چیه؟
                            برای متغیر 16 بیتی هم تابع read word داره و بیشتر از 16 بیت هم read block. حتی رشته هم میشه...
                            شایدم من درست متوجه نشدم! ok فردا کامل میخونم بحث رو باز میکنم...
                            مثلا توی این تابع void eeprom_write_byte (uint8_t *addr, uint8_t value)
                            شما باید با یه آدرس مکان متغییر رو مشخص کنید دیگه .خوب وقتی تعداد متغیر ها بیشتر باشه آدرسش رو یادتون نمیره؟ قبلا که توی کد ویژن کار میکردم برای تعریف متغییر تو EEPROM مثل تعریف متغیر تو رم عمل میکردیم فقط قبل از تعریف یه EEPROM هم مینوشتم و خود کامپایلر آدرس دهی ها رو انجام میداد .اما اینجا باید از این توابع برای تعریف استفاده کرد.نمیدونم واقعا روش کار اینه یا من ناقص متوجه شدم به هر حال ممنون میشم که یه کمی توضیح بدید.
                            [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

                            دیدگاه


                              پاسخ : آموزش winavr و avrlib

                              یک سوال برای من پیش اومده:
                              چطور توی winavr دستور زیر را که با کدویژن به صورت زیر نوشته میشود، را مینویسید؟؟؟
                              PORTA.1=~PORTA.1
                              مفهومش هم اینه که پورت A , پین 1 را not کن.

                              دیدگاه


                                پاسخ : آموزش winavr و avrlib

                                نوشته اصلی توسط alireza.s
                                یک سوال برای من پیش اومده:
                                چطور توی winavr دستور زیر را که با کدویژن به صورت زیر نوشته میشود، را مینویسید؟؟؟
                                PORTA.1=~PORTA.1
                                مفهومش هم اینه که پورت A , پین 1 را not کن.
                                تو WINAVR شما نمیتونید از . استفاده کنید و کل پورت رو یه جا باید مقدار بدید.
                                با یه X-or ساده میشه این تغیر وضیت رو انجام داد مثلا اینطوری:
                                PORTA=PORTA^0x02
                                [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

                                دیدگاه

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