اطلاعیه

Collapse
No announcement yet.

آموزش winavr و avrlib

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

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

    یک معامله کالا به کالا :
    در صورتیکه یکی از دوستان(آقای حسینی و یا آقا رضا) کلیه آموزشهای داده شده و همچنین نتیجه ای که از بحثها گرفته شده را به صورت یک فایل آموزشی زیبا و در قالب یک فایل pdf که فصل بندی شده باشد را در اختیار همه قرار بدهند :wow: من هم آخرین ورژن و کاملترین کتابخانه موجود mmc که توسط elm chan نوشته شده (و تغییرات لازم برای استفاده از اون توسط خودم داده شده است را به همراه یک نمونه کد که برای winAVR نوشتم و کاملا تضمین شده است) را در اختیار کلیه دوستان قرار میدم. :nice:
    اخطار!!!
    1-در صورت برآورده نشدن یک طرف از مفاد عهدنامه، کل عهد نامه فسخ میباشد و لطفا چونه نزنید!
    2-کلیه حقوق مادی و معنوی این مفاد به تمام کسانی خواهد رسید که از این بخش به عنوان یک مرجع کامل آموزشی استفاده میکنند.
    توجه!
    از اونجایی که خط به خط مطالب این بخش توسط خودم خونده شده،تصمیم در مورد کامل بودن pdf تولید شده توسط دو دوست نام برده شده بعهده اینجانب میباشد.

    دیدگاه


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

      درمورد وقفه ها تو چندتا از پست ها توضیح داده شد. چندتا پست جدا هم برای دستور ISR بود (تعریف وقفه)

      جناب Alireza.s شما اگه از مطالب این تاپیک استفاده کردین، لااقل بخاطر احساس مسئولیت، وظیفه انسانی، اجر اخروی، وجدان درد یا هرچیز دیگه ای، باید مطالب جدیدی که یاد میگیرن رو اینجا بذارین! معامله دیگه چیه؟!
      اما در مورد آموزش ها...
      وقتی این تاپیک باز شد خودمم در حال یادگیری بودم. با توجه به زمانی که از اون موقع گذشته و کاملتر شدن اطلاعاتم، فکر میکنم نیاز به ویرایش مطالب هست. اما اصلا فرصتش رو ندارم. از طرفی از وقتی جواب هیچ کدوم از سوال هام در مورد آرم رو تو این انجمن نگرفتم خیلی دلسرد شدم!
      https://www.linkedin.com/in/mohammadhosseini69

      http://zakhar.blog.ir

      دیدگاه


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

        اگر قراره یاد بدید ، خوب یاد بدید !
        اگر هم نه ، که دیگه بریم خودمون از اینور اونور پیدا کنیم ! الکی اسم اینجارو گذاشتید اموزش ...
        انصافاً نیگاه کنین ، یه سوال کردم ، چند تا جواب ! یکی نیومده بگه که اینجوریه ، حداقل بگه فلان لینک ، pdf رو بخون توضیح داده !
        کسایی که مثل من مشکل دارن با دستورات winavr می تونند بیان و این لینک http://greschenz.dyndns.org/avrwiz چیز به دردبخوریه ، حداقل واسه راه افتادن خوبه

        دیدگاه


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

          جناب آقای حسینی. شما هم بعله؟؟
          چه سئوالی بوده که نگرفتین؟ میشه یه چند تاشون رو بگین (لطف کنین تاپیک مربوطه رو برام pm کنین)

          جناب alireza.s!!
          اگر مسئله خرید و فروش و معامله باشد که شرمنده من اصلا اهل این حرفها نیستم. عادت ندارم هر چیزی رو هم دوباره اختراع کنم. به همون کد کمپانی keil روی mmc هم بسنده میکنم و منت کسی رو نمیکشم. ضمنا اینجا جای معامله نیست. جای یادگیری و یارگیریه. ضمنا جسارتا اگر قرار باشه همچین معامله ای صورت بگیره باید عرض کنم (با نهایت خودپسندی) من اصلا برای کد کسی تره هم خورد نمیکنم. چه رسد به اینکه بخوام سرش با کسی معامله کنم. اونم نتیجه چندین و چند سال تجربه رو. اینم که اینجا میام و یک پستی میزنم بیشتر بخاطر اینه که با افرادی مثل آقای حسینی - آقای پژوهان - آقای شفقی و غیره حال میکنم. هم چیزی یاد میگیرم و هم با ایده جدیدی آشنا میشم. اگه میخواستم تجارت کنم هم جاشو بلد بودم هم.....

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

          دیدگاه


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

            آقا رضا صفحه 2 هیچی راجع به اینتراپت ها نیست !
            اون لینکی که گذاشتم درسته ؟ از همون می تونم استفده کنم ؟
            اگر هم میشه یه توضیحی در مورد اینتراپت و اینکه چجوریاست کلاً تنظمیاتش چیه یه توضیحی بدین.

            دیدگاه


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

              آقا رضا دست رو دلم نذار که خونه! سوال هام همش از at91sam7 بود، شما که اگه اشتباه نکنم LPC کار میکردید. (هرچند الان بخاطر حرفی که زدم احساس شرمندگی میکنم)
              اما بخاطر روی گل شما و همینطور اینکه خیلی چیزا دیگه باید از شما یاد بگیرم مطمئنن سعی میکنم برنامه هام رو طوری تنظیم کنم که بازم واسه اینجا وقت بذارم. دقیقا 1 ساعت دیگه باید تو اتوبوس باشم که عازمم...

              اما جناب atm8، وسط چندتا پست تو همین تاپیک از وقفه ها گفته شد.
              اولیش این http://www.eca.ir/forum2/index.php?topic=41050.msg203014#msg203014

              اینم پست شروع بحث ISR
              http://www.eca.ir/forum2/index.php?topic=41050.msg206975#msg206975
              https://www.linkedin.com/in/mohammadhosseini69

              http://zakhar.blog.ir

              دیدگاه


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

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

                ما اینجا فعلا با وقفه های با منشاء سخت افزاری کار داریم که اصطلاحا بهش IRQ یا Interrupt ReQuest میگیم. منظورمون هم اینه که یک وسیله سخت افزاری احتیاج به بذل توجه داره و بایستی بهش حتما سر بزنیم تا بتونیم نیازش به این بذل توجه رو برآورده کنیم. ما این کار رو با نوشتن یک روال وقفه انجام میدیم. تا حالا مسلما باید متوجه شده باشین که این توابع معلوم نیست که کی اجرا میشن؟ ولی کسی یا چیزی اجراشون میکنه.
                خوب.
                از دید سیتماتیک 2 کار اساسی باید کرد. اولا سیستم احتیاج داره بدونه که کد اجرایی فلان وقفه کجاست. یعنی آدرسش رو میخواد. که در این میکروی AVR بایستی آدرس شروع این تابع در موقعیت خاصی قرار بگیره. چون ما اینجا از کامپایلر برای راحتتر شدن کار استفاده میکنیم میتوانیم از طرز نوشتن یک روال وقفه استفاده کنیم و انتظار داشته باشیم که معرفی آدرس روال وقفه به سیستم رو خود کامپایلر انجام بده. برای این عنوان از یک ماکرو که در هدر avr/interrupt.h تعریف شده استفاده میکنیم بنام ISR مثلا:


                #include <avr/interrupt.h>
                ISR(INT0_vect)
                {
                //code
                }


                به اصطلاح آرگومان این ماکرو نام وقفه مربوطه هست که یکی از نامهای ثابت و تعریف شده در فایل هدر میکروی مربوطه هست. مثلا iom16.h برای ATmega16.

                قدم بعدی اینه که به وسیله سخت افزاری مربوطه اطلاع بدیم که "اوهوی فلانی! قراره به ازای انجام فلان عمل یا در فلان موقع به من یک خبر بدی! چطوری؟ معلومه! وقفه مربوط به خودت رو اجرا کن!" برای انجام اینکار بایستی وسیله سخت افزاری مربوطه رو جوری config کنیم که وقفه مربوطه اش فعال شود.

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

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

                .....
                این از مقدمه. حالا میتونین بقیه موارد ذکر شده در تاپیک رو بخونین و اگر مشکلی بود بیان کنین تا ببینیم چطوری میتونیم با هم مشکل رو حل کنیم.

                دیدگاه


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

                  ممنون آقا رضا
                  پسر هستم
                  مگه ATMEGA8 اسم پسرونه نیست :biggrin:
                  ممنون از شما
                  یک سوال دارم ، یعنی الان وقفه ای که اینجوری می نویسیم باید بوسیله یه چیزی فعال بشند و وقفه های تایمر هم خودشون طبق تعیینی که ما می کنیم هر دفعه فعال می شند ؟
                  این وقفه هایی که فعال می شند ، همینی که گفتید خودتون ، باید به پایه خاصی دستور بره تا فعال بشند ، یا هر پایه شد شد ؟
                  چجوری کار می کنند ؟
                  ((من رو ببخشید به خاطر سوالات پیش پا افتاده ! یه چند باری با کدویژن کار کردم و چند تایی پروژه تفریحی کار کردم ، دارم سعی می کنم با وقت کمم WINAVR رو یاد بگیرم ! به هرکی هم میگم بهم می خنده ! میگه بیکارم میرم سراغ WINAVR ))

                  دیدگاه


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

                    هر وقفه سخت افزاری طبق یک مکانیسم از پیش تعیین شده فعال میشه. که معمولا این مکانیسم اختتام فاز خاصی یا انجام شدن عملی رو خبر میده. مثلا: وقفه خارجی External Interrupt معمولا به وقفه ای گفته میشه که بنا بر تحریکی روی یک پایه فعال میشه. مثلا INT0_vec که گفته شد. حالا میشه این رو به صورتی به سیستم گفت که بخ ازای یکی از حالات زیر وقفه فعال بشه: تغییر سیگنال از 0 به 1 .... تغییر سیگنال از 1 به صفر .... مادامی که سیگنال ورودی صفر هست .... و به ازای هر تغییر. استفاده از هر کدوم از اینها بستگی به نیاز سخت افزار و نرم افزار شما داره. یا مثلا پورت سریال میکرو رو میشه اینجوری config کرد که وقفه دریافت بایت از سریال یا وقفه انتهای ارسال یک بایت و یا هر دوی اینها رو فعال کنه. یا مثلا تایمری بعد از مدت زمانی خبر بده که کارش تموم شده.

                    ضمنا اگه شما کد ویژن کار کردی فرق چندانی با WinAVR نداره. فقط اون یکمی لهجه داشت که این یکی نداره. اصل و اساس همون میکرویی هست که باهاش کار میکردی.
                    مگر اینکه فرض کنیم در اون حالت نه با تایمر کار میکردی نه با سریال و اینجور چیزا!

                    دیدگاه


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

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

                      دیدگاه


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

                        اینم فقط برای اینکه نگید تازه کارا فقط بلدند بخورند و بخوابند
                        کلیه تاپیکهاروتو یه فایل word جمع کردم
                        مونده تمیزکاری و دسته بندیش که تا چند روز دیگه می کنم
                        http://persiandrive.com/35534

                        دیدگاه


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

                          خیلی به خودت سخت نگیر. ما ها هم اولا چیز زیادی نمیدونیم "همه چیز را همه کس دانند و همه کس هنوز از مادر نزاده اند" ثانیا ما هم کسایی رو داشتیم که بهمون چیزی یاد بدن. همین برای شما بهترینه که تفریح تون چیز یادگرفتنه. (از این بابت از خودم بالاتر میدونمتون).
                          اما راسیتش نمیدونم از کجا شروع کنم. شاید به این خاطر باشه که من هم رشته ام این نبوده و نیست. بقول دوستی میگفت: "هر وقت تونستی بگی چیزی رو بلدی که بتونی برای مادر بزرگت توضیح بدی و اون هم بفهمه" و من اصلا مادر بزرگ ندارم!! (میگن خر ما ز کره گی دم نداشت). راسیتش هم نمیدونم چطوری توضیح بدم. اما میشه شما بسته به علاقه و نیازهات یک پروژه شخصی تعریف کنی و با هم جلو بریم و بحث کنیم. اینجوری تیکه تیکه چیزایی رو که بقول شما ما میدونیم کم کم رو میکنیم و برای هر موردی توضیح میدیم. انشالله تا انتهای کار شما اغلب چیزا رو متوجه میشی یا اینکه میفهمی کجا باید دنبال چی بری. فکر کنم اینطوری خیلی بهتر باشه.
                          جور دیگه بگم: شما ممکنه (باز هم میگم ممکنه) هنوز سواد نداشته باشی و من اول راهنمایی اما برای درس دادن من نه معلم اول ابتدایی هستم و نه میتونم اینکارو بکنم. اما اگه شما سال اولی بشی من برام راحتتره که کمک کنم. و مسلم بدونین که بقیه دوستان واساتید هم کمکتون میکنن. یکی از مواردی که ماهارو اینجا نگهداشته همین مسئله کمک کردن به همدیگه هست.
                          شما کیفتو میبری که چیزی یاد میگیری من هم کیف میکنم که وجودم لااقل جایی به دردی خورد. (لااقل غیر از خوراک کرم ها ی خاکی رو تامین کردن).
                          این پیشنهاد منه! یک پروژه که مال خود خود خودت باشه. چی هست و چقدره کوچیک یا بزرگ مهم نیست. باید عین بچه ات بهش احساس داشته باشی تا کمکت کنه رشد کنی.

                          دیگه ریش و قیچی دست خودتون.

                          خدمتتون هم هستم.

                          دیدگاه


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

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

                            دیدگاه


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

                              مثل اینکه ما گیراییمون پایینه
                              میشه یه توضیح عملی با یک پروژه واسه این اینتراپت بدین

                              دیدگاه


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

                                جسارتا اگه ممکن باشه تا شنبه این پیشنهاد رو عقب بندازم چون این یکی دو روزه سرم خیلی شلوغه. یک برد رو باید برای محل کارم طراحی و تست کنم و شنبه تحویل بدم. اگر اون موقع یک pm بهم بزنین ممنون میشم.

                                دیدگاه

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