اطلاعیه

Collapse
No announcement yet.

آموزش winavr و avrlib

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

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

    آقا رضا ما منتظر شما هستیم

    دیدگاه


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

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

      دیدگاه


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

        من شرمنده که زحمت اضافی برای شما درست کردم
        چیز زیادی لازم ینست ، فقط یه نمونه کد باشه که نشون بده مثلا از فلان اینتراپت استفاده شده و فلان دستور مثلا یه پایه از میکرو روشن و خاموش میشه
        همین واسه من کافیه

        دیدگاه


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

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

          بفرما این یه کد ساده برای وقفه خارجی صفر (اگه سوتی نداده باشم! :mrgreen:

          #include <avr/io.h>
          #include <avr/interrupt.h>

          ISR(INT0_vect)
          {
          DDRA = PORTA = 0xff;
          }

          int main()
          {
          MCUCR |= (1<<ISC01) | ~(1<<ISC00); //falling edge
          GICR |= (1<<INT0); //enable external interrupt 0

          sei();

          while (1){}
          }

          پایه INT0 رو با یه مقاومت پول پ بکن و یه سوییچ هم بذار برای زمین کردن پایه. با تغییر سطح منطقی از 1 به 0 ، روتین وقفه اجرا میشه. برنامه از حلقه while خارج میشه میره به کد تابع وقفه و بعد از اون برمیگرده به ادامه برنامه (همون حلقه while بی نهایت)
          البته من فکر میکنم شما تاپیک رو کامل نخوندی...!
          https://www.linkedin.com/in/mohammadhosseini69

          http://zakhar.blog.ir

          دیدگاه


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

            خوب ، انگاری سوتی ما معلوم شد

            MCUCR |= (1<<ISC01) | ~(1<<ISC00); //falling edge
            GICR |= (1<<INT0); //enable external interrupt 0

            sei();


            اینارو میشه یه توضیحی بدین ؟
            چین و چجوریا باید اضافه کنم ؟
            در ضمن آقا محمد ، جان من هی این تاپیک رو نزن سرمون ! انگاری بهت بگن فلان چیزو پیدا کن ! تا ندونیه چیه و چه شکلیه ، 1000 بار هم از بقلش رد بشی نمی دونی چیه !
            حکم من رو داره واسه تاپیک اینجا . بحث کردین از isr ! من که نمی دونم چیه ! از کنارش رد میشم

            دیدگاه


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

              نوشته اصلی توسط محمد حسینی
              بفرما این یه کد ساده برای وقفه خارجی صفر (اگه سوتی نداده باشم! :mrgreen:

              #include <avr/io.h>
              #include <avr/interrupt.h>

              ISR(INT0_vect)
              {
              DDRA = PORTA = 0xff;
              }

              int main()
              {
              MCUCR |= (1<<ISC01) | ~(1<<ISC00); //falling edge
              GICR |= (1<<INT0); //enable external interrupt 0

              sei();

              while (1){}
              }
              درستش اینه

              EICRA |= (1<<ISC01) | (1<<ISC00); // The rising edge of INT0 generates an interrupt request
              EIMSK |= (1<<INT0); // External Interrupt Request 0 Enable

              // --- main loop ---
              sei();



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

              دیدگاه


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

                باسلام خدمت دوستان
                چند پست بالاتر در رابطه کار با mmc توضیح خواستم اما یکم حاشیه رفت
                گفتم دوباره نظر دوستان رو در این باره جویا بشم، البته خودم هم گشتم بهترین هم (کامل ترین) تا الان فکر کنم همون elm chan باشه که سیستم fat رو پیاده میکنه
                البته خیلی سخته و الان برای پیاده سازی عملی با مشکل مواجه هستم برای شبیه سازی هم که مدار کت وکلفتی رو ایجاد کرده؟؟؟
                درخواستم از دوستان اینه اگه کسی در این رابطه کار کرده نحوه درایو و همچنین کار با این کتابخونه رو بگه ، اینجوری:
                1-سرهم بندی مدار چطوری؟ مثل elmchan بهتره این بهتره:
                http://www.sparkfun.com/commerce/tutorial_info.php?tutorials_id=65
                ویا...
                2-چطوری مموری رو آماده کنیم(فرمت)(خود کتابخونه راحته اما وقتی مثال رو می خونی کامل گیج می کنه)
                3-برای نمایش مستقیم رو ویندوز (بدون avr) فایل باید براحتی قابل دیدن باشه(قاعدتا) اما تو مثال هاش برای win32 هم نوشته ،این دیگه چه صیغه ایه؟؟؟

                دیدگاه


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

                  نوشته اصلی توسط atm8
                  درستش اینه

                  EICRA |= (1<<ISC01) | (1<<ISC00); // The rising edge of INT0 generates an interrupt request
                  EIMSK |= (1<<INT0); // External Interrupt Request 0 Enable

                  // --- main loop ---
                  sei();

                  مطمئنی؟! من که نفهمیدم این رجیسترها از کجا اومدن! میکرو چیه؟!
                  https://www.linkedin.com/in/mohammadhosseini69

                  http://zakhar.blog.ir

                  دیدگاه


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

                    نوشته اصلی توسط محمد حسینی
                    مطمئنی؟! من که نفهمیدم این رجیسترها از کجا اومدن! میکرو چیه؟!
                    درصد اطمینان 100%
                    چون کدی که شما دادی کار نکرد ( یعنی پیغام خطا داد ! ) ، ولی اینی که من گذاشتم کار می کنه !
                    خودشم از این سایته کش رفتم
                    http://greschenz.dyndns.org/avrwiz

                    دیدگاه


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

                      جون من شوخی نکن!!
                      avrwiz هم اینطوری مینویسه:
                      MCUCR |= (1<<ISC01) | (1<<ISC00); // The rising edge of INT0 generates an interrupt request
                      GICR |= (1<<INT0); // External Interrupt Request 0 Enable

                      چه پیغام خطایی میده؟ اصلا اون رجیستری که نوشتی تو دیتاشیت نیست و کامپایل هم نمیشه!!
                      https://www.linkedin.com/in/mohammadhosseini69

                      http://zakhar.blog.ir

                      دیدگاه


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

                        نوشته اصلی توسط محمد حسینی
                        جون من شوخی نکن!!
                        avrwiz هم اینطوری مینویسه:
                        MCUCR |= (1<<ISC01) | (1<<ISC00); // The rising edge of INT0 generates an interrupt request
                        GICR |= (1<<INT0); // External Interrupt Request 0 Enable
                        چه پیغام خطایی میده؟ اصلا اون رجیستری که نوشتی تو دیتاشیت نیست و کامپایل هم نمیشه!!
                        MCUCR و GICR توی atmega 32 یا 8 یا 16 یا ... استفاده میشند
                        ولی توی atmega 64 از EICRA و EIMSK استفاده میشه
                        به احتمال قوی دوست عزیزمون atm8 از میکرو های atmega64 یا atmega128 دارند استفاده می کنند .
                        فکر کنم بهتره دوستانی که دارند روی پروژه ای کار می کنند ، نوع میکرویی که باهاش دارند کار می کنند رو بگن بهتره ، چون اینجوری وقت دوستان هم تلف نمیشه ( قابل توجه atm8 )

                        دیدگاه


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

                          شرمنده بابت نبودن! کارم به خنسی خورده و اعصابم خورد.
                          دو تا مسئله مهم:

                          1-جناب atm8 موقعی که بخواییم بیت رو ست کنیم فقط کافیه بیت هایی رو که 1 هستن در رجیستر قرار بدیم. این یعنی move کردن یک عدد داخل یک متغیر. چون در همین هنگام هم بیت هایی که مقدار ندارن (یعنی صفر هستن) انتقال پیدا میکنه. اما اگر خواستیم یک بیت رو از داخل یک مقدار حذف کنیم اون مقدار رو با مکمل پترن بیتی and میکنیم. مثال:


                          MCUCR = 1 << ISC0; // ISC0 = 1, ISC1 = 0
                          MCUCR&=~(1 << ISC0); // MCUCR = MCUCR & (~(1<<ISC0)) =>
                          // ISC0 = 0


                          کد مورد نیاز رو هم که جناب آقای حسینی زحمت کشیدن (رو سیاهی به ذغال موند...بیخود نیست اون آواتار رو انتخاب کردم دیگه).

                          2- یک نکته مهم که بعضا خیلی باهاش در این سایت برخورد داشتم اینه که از اونجایی که روال وقفه برای سرویس دهی غیر معمول و خارج از روال عادی اجرایی برنامه هست. فقط بایستی برای عملیاتی با حجم زمانی مینیمم باشه. مثلاا بعضی جاها دیدم که حتی در روال وقفه اقدام به نمایش اطلاعات روی lcd میکنن که این باعث میشه تا زمانی که این عمل داره انجام میشه میکرو در حالتی بمونه که دیگه نتونه وقفه ها رو پردازش کنه. از طرف دیگه روال وقفه برای سرویس دهی غیر همزمان و سریع به یک وسیله هست. اگر کسی قراره همچین کار حجیمی رو در روال وقفه انجام بده بهتره یا بین این روال و کد اجرایی اصلی برنامه هماهنگی برقرار کنه (مثلا با یک ساختار message queue) یا از یک rtos استفاده کنه.

                          دیدگاه


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

                            ببخشید که این رو اینجا مینویسم!
                            من مدت زیادی با بسکام کار میکردم و البته در بسکام به این نتیجه رسیدم وقتی با رجیستر ها کار میکنم خیلی کارم باحال میشه! مثلا تایمرها و ... رو با رجیسترهاشون فعال میکنم و اصلا از دستوراتش استفاده نمیکنم.
                            به همین خاطر تصمیم گرفتم از زبان پیشرفته تری مثل سی استفاده کنم.
                            که شنیدم در winavr از c++ هم استفاده میکنند.
                            حالا من که زرتی از بسکام میخوام بیام در زبان سی، winavr کار کنم یا codevision ؟ :mrgreen:
                            چون این کامپایلری که میخوام یاد بگیرم آخرین کامپایلر هست و دیگه حوصله عوض کردن کامپایلر ندارم.
                            winavr کتاب آموزشی فارسی هم دارد؟ :read:

                            دیدگاه


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

                              ممنون از همگی
                              همونطور که جناب اکرمی گفتند ، من با atmega 64 کار می کنم

                              دیدگاه


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

                                جناب آقای هاشمی؛

                                مطمئن باش اگه اومدی توی این وادی ها دیگه اومدی.... و مطمئن باش این کارها اینقده طرف خودش میکشوندت که خواه نا خواه دنبال کامپایلر های دیگه هم میری. اما اگر از میشنوی چون "بقول خودت" در C تازه کاری شاید بهتر باشه با codevision کار کنی تا یک سری مشکلات اولیه ات کمتر باشه. بعد که به C معتاد شدی اون موقع خودت کم کم به winavr یا بهتر بگیم همون gcc مهاجرت میکنی.

                                دیدگاه

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