اطلاعیه

Collapse
No announcement yet.

کوچ کردن از کدویژن به AtmelStudio

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

    پاسخ : کوچ کردن از کدویژن به AtmelStudio


    میتونید از میک فایل جنریتور برای راحتی کار استفاده کنید، یه فیلد داره به اسم اکسترنال رم که برای میکروهایی که اکسترنال رم ساپورت میکنن مثله همین مگا 128 فعال میشه، اونجا میتونید حافظه خارجی تون رو سکشن بندی کنید.
    بعد تو برنامه هم که خودتون بهتر میدونید، اول اینیشیالش میکنید بعد هم با مموری الوکیت و اینا ازش استفاده میکنید.

    دیدگاه


      پاسخ : کوچ کردن از کدویژن به AtmelStudio

      در makefile مربوط به winavr کد هایی به شکل زیر در هنگام لینک کردن آبجکت ها به لینکر فرستاده میشه که
      به لینکر میفهمونه که در فایل نهایی رم خارجی رو هم در نظر بگیره .
      من از atmel studio استفاده نمیکنم و با خود avr-gcc مستقیم کار میکنم
      ولی مطمنا این نرم افزار قسمتی برای اضافه کردن کد به makefile خواهد داشت ، اگر پیدا نکردین
      میتونین یکی از این کدها رو که به درد میخوره بصورت دستی به اضافه کنید

      کد:
      # 64 KB of external RAM, starting after internal RAM (ATmega128!),
      # used for variables (.data/.bss) and heap (malloc()).
      -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
      
      # 64 KB of external RAM, starting after internal RAM (ATmega128!),
      # only used for heap (malloc()).
      -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff
      البته از رم خارجی تابه حال استفاده نکردم .
      اگر خواستین makefile رو پ کنم .
      گذشت خصلت مردان است

      دیدگاه


        پاسخ : کوچ کردن از کدویژن به AtmelStudio

        نوشته اصلی توسط RubeuS
        راستش من خودم اصلا تاحالا یک دفعه هم با هایپرترمینال و... کار نکردم . برای ارتباط با کامپیوتر خودم برنامه ی طرف کامپیوتر را مینویسم.

        البته میشه حدس زد چه جوریه ( یعنی اگر قانونی نوشته باشن اینجوریه). به جمله های زیر دقت کنید:

        برای رفتن به سطر بعد باید کد اسکی 10 فرستاده شود(بایت 0x0A را بفرستید)

        برای زدن یک اسپیس باید کد اسکی 32 فرستاده شود(بایت 0x20 را بفرستید)

        برای زدن یک tab باید کد اسکی 9 فرستاده شود(بایت 0x09 را بفرستید)


        راستی بایت 0x07 هم بفرستید ببنید چی میشه :mrgreen:

        برای ارسال بایت ها میتونید رشته را اینجوری بنویسید: (من مثلا میخوام eca.ir بره سطر بعد نوشته بشه و تهش اون بایت 0x07 هم باشه) :

        بجا رشته ی مورد نظر ، رشته ی زیر را بزارید:

        کد:
        char str[]={ 0x0A , 'e' , 'c' , 'a' , '.' , 'i' , 'r' , 0x07 , 0};
        سلام سید جان میشه بگین این دستورات اسپیس رو رفتن به سطر بعدی رو از کجا دارین؟ میشه بذارین؟
        تکاور شدن جرات افزون کند.....هراس از دل مرد بیرون کند....


        تا تکاور به تن زخمی خود جان دارد....مرز اسلام در این ملک نگهبان دارد.........

        دیدگاه


          پاسخ : کوچ کردن از کدویژن به AtmelStudio

          چرا از عدد معادل کاراکتر های اسکی استفاده مینکنین ، :NO:
          از کاراکتر 'n\' برا رفت به سطر جدید (new line)
          از 't\' برای تب (tab) و از ' ' برای اسپیس (space) و
          از 'v\' برای تب عمودی (vertical tab) و
          از 'r\' برای بازگش به اول سطر (return) استفاده کنین .
          گذشت خصلت مردان است

          دیدگاه


            پاسخ : کوچ کردن از کدویژن به AtmelStudio

            نوشته اصلی توسط سعید دلشاد منور
            سلام سید جان میشه بگین این دستورات اسپیس رو رفتن به سطر بعدی رو از کجا دارین؟ میشه بذارین؟
            سلام

            حتما اسم کدهای اسکی را شنیدید.

            اینها همان کدهای اسکی هستند که هر کدام به کاراکتری منسوب میشوند.

            برای بدست آوردن آنها میتوانید به سایت زیر مراجعه کنید:
            http://www.asciitable.com/

            البته من خودم از زمانی که شروع به برنامه نویسی سی کردم یک کتاب رفرنس از دایتل دایتل خریدم و هر موقع نیاز به این جدول داشتم یا به مشکلی بر میخورم به این کتاب مراجعه میکنم.(همیشه کنارمه،الانم کنار دستمه)

            همون طور که جناب tohid041 فرمودند ، در اکثر IDE ها (همه دیگه) شما میتوانید برای مشخص کردن یک کد اسکی خاص از کوتیشن ( ' ) استفاده کنید و با استفاده از
            بک اسلش ( \ ) و یک حرف خاص ، یک کد اسکی خاص را نشان دهید.

            در اون مثالی که بهتون دادم کاراکتر های e و c و a و . و i و r به همین شیوه نمایش داده شده ، برای نشان دادن 0x07 فکر کنم a\ بود و 0x0A هم که n\ .
            البته میتوانید همه را پشت سر هم در دبل کوتیشن ( " ) قرار دهید که دیگه نیاز به دستی 0 گذاشتن در آخر رشته نیست.
            راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
            کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
            نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
            http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
            انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

            دیدگاه


              پاسخ : کوچ کردن از کدویژن به AtmelStudio

              با سلام خدمت سید جان.
              اگه بخواهیم از وقفه دریافت استفاده کنیم نام وقفه به ISR ( USART_RXC_vect ) تغییر پیدا میکنه؟
              چه تغییراتی حاصل میشه؟
              تکاور شدن جرات افزون کند.....هراس از دل مرد بیرون کند....


              تا تکاور به تن زخمی خود جان دارد....مرز اسلام در این ملک نگهبان دارد.........

              دیدگاه


                پاسخ : کوچ کردن از کدویژن به AtmelStudio

                این چند تا رو ننوشتم :
                'a\' برای تولید صدای بیپ (در کامپیوتر) (alert) و
                'b\' برای بک اسپیس (back space) و
                '0\'برای کاراکتر نوول (null) و
                '\\' برای چاپ خود بک اسلش (back slash) و
                '"\' برای چاپ دابل کوتیشن (فینگلیشش چطوره؟) و
                'f\' رو هم نیدونم چیه ، تا حالا استفاده نکردم (فکر کنم برای فورم باشه)
                اگر کسی میدونه چیه لطفا توضیح بده .
                گذشت خصلت مردان است

                دیدگاه


                  پاسخ : کوچ کردن از کدویژن به AtmelStudio

                  نوشته اصلی توسط tohid041

                  'f\' رو هم نیدونم چیه ، تا حالا استفاده نکردم (فکر کنم برای فورم باشه)
                  'f\' برای انتقال کنترل به صفحه جدید
                  گاهی افرادی به موفقیت های بزرگ می رسند، تنها به این دلیل ساده که نمی دانند کاری که به آن دست زده اند بسیار دشوار، بلکه غیر ممکن است.

                  دیدگاه


                    پاسخ : کوچ کردن از کدویژن به AtmelStudio

                    سلام سید جان یه سوال محاوره ای هم داشتم.
                    این toolchin چیه؟
                    شاید اکثرا بچه ها هم نمیدونن
                    تکاور شدن جرات افزون کند.....هراس از دل مرد بیرون کند....


                    تا تکاور به تن زخمی خود جان دارد....مرز اسلام در این ملک نگهبان دارد.........

                    دیدگاه


                      پاسخ : کوچ کردن از کدویژن به AtmelStudio

                      با اجازه سید جان :

                      toolchin در اینجا ابزار هایی هست که همراه avr-gcc نیاز هست و بصورت جداگانه بهش اضافه میشه
                      یعنی ابزار های کمکی هستن مثلا لینکر و اسمبلر و .. که بصورت جداگانه توصعه پیدا میکنن

                      اگر اشتباه گفتم لطفا اصلاح کنین .
                      گذشت خصلت مردان است

                      دیدگاه


                        پاسخ : کوچ کردن از کدویژن به AtmelStudio

                        با سلام

                        یکی از بچه های همین سایت با نام کاربری "tohid041" در آدرس http://www.eca.ir/forum2/index.php?topic=81372.0 ماکروهایی برای ریجسترهای AVR نوشتند که من واقعا خیلی خوشم آمد گفتم شما هم یک نگاهی بکنید با استفاده از این ماکرو ها دیگه نیازی به کد ویزارد کد ویژن نیست واقعا که برای من عالی بود

                        \××××× بعد از ارسال پست دیدم پست قبلی من توسط ایشان پست شده گفتم ویرایش کنم و تشکر دوباره ××××/

                        دیدگاه


                          پاسخ : کوچ کردن از کدویژن به AtmelStudio

                          سلام

                          لطفا در رابطه با عبارت زیر توضیح دهید .

                          باتشکر .

                          کد:
                          #define porta (*((volatile BYTE_BITFIELD*)(&PORTA)))

                          دیدگاه


                            پاسخ : کوچ کردن از کدویژن به AtmelStudio

                            سلام آقای مرتضوی
                            چطور میشه با حلقه for تاخیر(delay) ایجاد کرد؟نمیخام از کتابخونه delay استفاده کنم
                            چه یافت آنــکه تــو را گم کرد وچه گم کرد آنـکه تــو را یافت.

                            دیدگاه


                              پاسخ : کوچ کردن از کدویژن به AtmelStudio

                              قبل از همه چیز از دوستانی که در این تاپیک فعالیت میکنند و دوستانی که بنده را یاری میکنند تشکر میکنم



                              نوشته اصلی توسط aseok
                              سلام

                              لطفا در رابطه با عبارت زیر توضیح دهید .

                              باتشکر .

                              کد:
                              #define porta (*((volatile BYTE_BITFIELD*)(&PORTA)))
                              بایستی برخی دیفاین ها مشخص باشه به عنوان مثال (*volatile BYTE_BITFIELD) یک عمل cast است که دیتا آبجکت بعد از خود را به یک اشاره گر cast میکند. پس یه جورایی باید عبارت بعد از آن یک آدرس باشد که با توجه به PORTA& میبینیم که همینطور است.
                              پس تا اینجا یک آدرس داریم که اگر (*volatile BYTE_BITFIELD) را در نظر نگیریم ، این آدرس همان آدرس رجیستر PORTA در SRAM است(کلا معماری رجیستر ها در avr به صورت memory mapped i/o می باشد)
                              خوب حالا اگه ببنید یک * پشت عبارت کلی است که کار این عملگر این است که در خروجی مقدار دیتاآبجکتی که آدرسش بعد از آن مشخص است برمیگرداند.
                              یعنی مقدار درون دیتا آبجکت از نوع volatile BYTE_BITFIELD با آدرس PORTA& را بر میگرداند.

                              نکته: در صورتی که (*volatile BYTE_BITFIELD) حذف شود ، این دیفاین معادل زیر میشود:
                              کد:
                              #define porta PORTA
                              راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                              کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                              نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                              http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                              انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                              دیدگاه


                                پاسخ : کوچ کردن از کدویژن به AtmelStudio

                                نوشته اصلی توسط صادق ابراهیمی
                                سلام آقای مرتضوی
                                چطور میشه با حلقه for تاخیر(delay) ایجاد کرد؟نمیخام از کتابخونه delay استفاده کنم
                                سلام

                                میشه با حلقه ی for این کار را کرد و در نگاه اول خیلی راحته ولی اکثرا یک قضیه را در نظر نمیگیرند و اون هم تولید کد وقتی که شرط چک میشود و... باعث خطا میشود.

                                بزارید یه مقدار به این قضیه بپردازیم:
                                (قبلش باید توجه داشته باشید که شما بایستی شناخت خوبی نسبت به کامپایلرتون و کدهای تولید میکند و همچنین ISA پردازنده تون(دستورات ماشن واسمبلی پردازنده تون) داشته باشید)

                                مرحله یک :
                                اول بایستی فرکانس کاری پردازنده را در نظر بگیرید ( پس فهمیدید چرا توابع delay فرکانس پردازنده را میخوان؟)
                                به عنوان مثال 1000000 هرتز یا 1 مگاهرتز در نظر میگیریم:
                                این یعنی هر کلاک در 1 میکروثانیه میخورد.


                                مرحله دو:
                                برای ایجاد تاخیر عمدتا از دستور NOP که مخفف No Operation است ، استفاده میشه . حالا باید بریم ببنیم که در پردازنده ی ما این دستور با چند کلاک اجراش کامل میشه:
                                به عنوان مثال پردازنده را پردازنده ی داخل میکروکنترلر مگا32 درنظر میگیریم.
                                خوب حالا واضحه که باید بریم سراغ دیتاشیتش:
                                بگردیم ببنیم کجاست ....
                                آهان صفحه ی 302 را بیارید . دیدیدش؟
                                به آخرین ستون جدول توجه کنید ( Clocks# ) نوشته 1 ، پس یک کلاک طول میکشه.
                                (نکته : توجه کنید که ممکنه من یک پردازنده طراحی کنم که NOP در 3 کلاک اجرا بشه. پس آیه نیومده که NOP یک کلاک اجرا میشه. درضمن در این حالت باید به pipelining پردازنده توجه بشه ، ولی چون اینجا یک کلاکه دیگه پایپلاینینگ معنی نداره ، از یک کلاک که کمتر نمیشه)

                                مرحله سه:
                                حالا ما مثلا میخوایم یک تاخیر 50 میلی ثانیه ایجاد کنیم .
                                پس بیاید یه محاسبه دور هم داشته باشیم:
                                NOP یک کلاک طول میکشه /
                                هر کلاک 1 میکروثانیه طول میکشه /
                                درنتیجه:
                                برای ایجاد تاخیر 50 میلی ثانیه بایستی 50000 دستور NOP اجرا بشه که در این صورت 50 میلی ثانیه تاخیر ایجاد میشه.


                                نکته مهم: باید کاملا به کدهای تولید شده توسط کامپایلر توجه داشته باشید .

                                در Atmel Studio در حالت دیباگینگ یک پنجره به نام دی اسمبلر وجود دارد که میتونید کدهای اسمبلی تولید شده را مشاهده کنید.



                                راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                                کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                                نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                                http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                                انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                                دیدگاه

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