اطلاعیه

Collapse
No announcement yet.

سوال در مورد برنامه نویسی در AVR STUDIO

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

    سوال در مورد برنامه نویسی در AVR STUDIO

    با توجه به اینکه تازه از بسکام جداشدم و میخوام برنامه نوسی سی برای میکرو را شروع کنم چندتائی سوال داشتم:
    مگه در سی همیشه یک تابع اصلی به اسم main نیست که همه چیز این شروع میشه ؟حالا چطوری توی بعضی پروژه هایی که میبینم کنار فایل اصلی پروژه تعداد فایل دیگه .C وجود دارند که .H هم نیستند که قرار باشه توی پروژه لود بشوند.

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

    #2
    پاسخ : سوال در مورد برنامه نویسی در AVR STUDIO

    برنامه که از main شروع میشه.
    اما میشه کدها رو در قالب کتابخونه تو فایل های مختلف نوشت و اونا رو فراخوانی کرد.
    مثلا تو برنامه توابعی رو فراخوانی میکنی که کد بدنه اون تابع در یک فایل دیگه نوشته شده و کامپایلر کد تابع رو از اون فایل میخونه

    مگه تو بیسکام فراخوانی کتابخونه و قایل های کد خارجی وجود نداره؟؟!
    https://www.linkedin.com/in/mohammadhosseini69

    http://zakhar.blog.ir

    دیدگاه


      #3
      پاسخ : سوال در مورد برنامه نویسی در AVR STUDIO

      مشکلی با درک مفهوم هدر فایلهایی که با دستور #include
      میشن ندارم

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

      دیدگاه


        #4
        پاسخ : سوال در مورد برنامه نویسی در AVR STUDIO

        100% از اونام تو برنامه استفاده شده

        منم هنوز دقیقا نفهمیدم فرق include کردن با add کردن چیه!
        اگه درست یادم باشه :
        وقتی include میکنی ترتیب میدی به فایل ها. یعنی مثلا اگه تو فایلی که بالاتر include کردی از کدی استفاده کرده باشه که تو فایل بعدی که include میکنی باشه، کامپایلر نمیشناسه و خطا ایجاد میشه. ولی وقتی فایل ها رو add میکنی همچین مشکل نیست. (البته مطمئن نیستما. همچین تجربه ای داشتم)

        بهرحال معمولا همون include جواب میده و نیازی به add کردن نیست
        https://www.linkedin.com/in/mohammadhosseini69

        http://zakhar.blog.ir

        دیدگاه


          #5
          پاسخ : سوال در مورد برنامه نویسی در AVR STUDIO

          به عکسی که گذاشتم یه نگاه بکنید
          الان سورسها را دیدم
          ظاهرا توی .h ها فقط توابع معرفی شدند مثلا declaer در باسکام
          و در فایل .c توابع نوشته شده اند.


          In . h
          کد:
          // functions
          extern uint8_t enc28j60ReadOp(uint8_t op, uint8_t address);
          In .C
          کد:
          uint8_t enc28j60ReadOp(uint8_t op, uint8_t address)
          {
              ENC28J60_CONTROL_CS_L;
              // issue read command
              SPDR = op | (address & ADDR_MASK);
              waitspi();
              // read data
          ...............
          توی قسمت سورس .c هست و به همون اسم توی قسمت اگسترنال .h اون اومده
          اگه بنا به استفاده از توابع باشه ، چرا همشون را توی همون .h نیاورده ؟

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

          دیدگاه


            #6
            پاسخ : سوال در مورد برنامه نویسی در AVR STUDIO

            میدونی بیشتر یه جور قرارداده

            معمولا پروتوتایپ (یا declare) توابع و همچنین یک سری ثابت (به همراه توضیح و کامنت) رو تو فایل .h مینویسن و کد بدنه توابع در فایل .c

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

            یه دلیل دیگه استفاده از فایل .h اینه که یه سری تعاریف عمومی هستن که ممکنه زیاد استفاده بشن و تو سورس ها و فایل های .c مختلف بکار گرفته شدن. اینا رو هم تو فایل های .h مینویسن. بعضی از کامپایلرها به چندبار فراخوانی فایل .c خطا میگیرن.
            و درنهایت اینکه معمولا چیزی که تو فایل .h نوشته میشه نباید وارد کد باینری تولید شده بشه...
            https://www.linkedin.com/in/mohammadhosseini69

            http://zakhar.blog.ir

            دیدگاه


              #7
              پاسخ : سوال در مورد برنامه نویسی در AVR STUDIO

              نظرمن:
              فایلهای c. رو باید به پروژه اد کنیم تا تو بخش SRC توی makefile پروژه اضافه بشه و موقع کامپایل، لیست بشه
              {خلاف قوانین - امضا ویرایش شد}

              دیدگاه

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