اطلاعیه

Collapse
No announcement yet.

مفهوم کد

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

    مفهوم کد

    سلام مفهوم این چند خط کد چیه
    کد:
    #pragma optsize-
    CLKPR=0x80;
    CLKPR=0x00;
    #ifdef _OPTIMIZE_SIZE_
    #pragma optsize+
    #endif
    DIDR0=0x00;
    و سوال دیگه اینکه رجیستر adcsrb چیه؟ adcsra رو دیدم ولی اینو ندیدم
    ممنون میشم از راهنماییتون
    [آموزشی] کنترل رله با پیامک توسط sim800l
    [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
    [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
    [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
    صفحه اینستاگرام : ecdco_ir


    #2
    پاسخ : مفهوم کد

    خط دوم و سوم رو من زمانی دیدم (به قول فامیل دور نخوردیم نون گندم دیدیم دست مردم ... :biggrin که میکروی مورد استفاده سری ATtiny بود. با این 2 خط، در واقع ضریبی از کلاک داخلی و یا خارجی به CPU میرو وصل میشد. یه جورایی pre-scaler بود برای فرکانس کاری پردازنده داخلی میکروکنترلر.
    خط آخر رو اما ندیدم.
    سوال دوم رو هم نمیدونم.
    ---------
    .
    .
    ...........

    دیدگاه


      #3
      پاسخ : مفهوم کد

      این کدها برای روبات مسیر یاب eca هستش که برای atmega48a نوشته شده از دوستان کسی در مورد این کدها بیشتر میدونه ممنون میشم راهنمایی کنه

      اضافه شده در تاریخ :
      تو help خود کدویژن هم فقط در مورد pragma optsize توضیح داده که قسمتیشو قرار میدم
      لطفآ کمک کنید ممنون
      کد:
      If the code optimization is enabled, you can optimize some portions or all the program for size or speed using the #pragma optsize directive.
      The default state is determined by the Project|Configure|C Compiler|Code Generation|Optimization menu setting.
      Example:
      
      
      /* The program will be optimized for minimum size */
      #pragma optsize+
      
      
      /* Place your program functions here */
      
      
      /* Now the program will be optimized for maximum execution speed */
      #pragma optsize-
      
      
      /* Place your program functions here */
      
      
      The default optimization for Size or Speed specified in the Project|Configure|C Compiler|Code Generation|Optimization menu setting can be restored using the #pragma optsize_default directive.
      Example:
      
      
      /* The program will be optimized for maximum speed */
      #pragma optsize-
      
      
      /* Place your program functions here */
      
      
      /* Now the program will be optimized for the setting
        specified in the project configuration */ 
      #pragma optsize_default
      
      
      /* Place your program functions here */
      [آموزشی] کنترل رله با پیامک توسط sim800l
      [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
      [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
      [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
      صفحه اینستاگرام : ecdco_ir

      دیدگاه


        #4
        پاسخ : مفهوم کد

        دوستان خواهش میکنم کمک کنید
        [آموزشی] کنترل رله با پیامک توسط sim800l
        [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
        [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
        [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
        صفحه اینستاگرام : ecdco_ir

        دیدگاه


          #5
          پاسخ : مفهوم کد

          در مورد اون دستور پیش پردازنده نمیدونم چه کار یانجام میده.. اما هر چی هست به کامپایلر برمیگرده. من توی کدویژن بدون اونا کامپایل کردم ارور نداد. البته من صورت مساله رو پاک کردم !! وقتی برنامه شما کامپایل میشه، کدویژن با توجه به تنظیماتش که میتونید اونو عوض کنید، طوری برنامه تون رو به زبان ماشین تبدیل می کنه که یا براساس سرعت بهینه شده باشه یا حجم برنامه.
          حدس خود من : شما وقتی ظریبی از فرکانس کریستال رو بدید به میکرو، خود به خود سرعت رو کم کردید، یعنی سرعت براتون مهم نیست، پس به کدویژن میگید طوری برنامه رو بهینه کن که حجم برنامه تولید شده کمتر بشه.

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

          دیتاشیت گفته که اول باید prescaler رو فعال کنید (حتی اگر نخواهید ازش استفاده کنید، چون دوستم این کارو نمی کرد، درست برنامش اجزا نمیشد). با فعال کردن این بیت، شما اجازه خواهید داشت که روی 4 بیت کم ارزش چیزی بنویسید. بعد بیاید و با استفاده از 4 بیت کم ارزش ، فرکانس کاری میکرو رو به دلخواه تنظیم کنید. با تنظیم این 4 بیت، کلاک های همه واحدهای میکرو مثل ADC، IO و ... تقیسم بر مقدار مشخص میشه. بعد که بیت هفتم رو 1 کردید، باید به 4 بیت کم ارزش رو مقداردهی کنید.
          برای همینه که اول مقدار 0x80 رو بهش داده (بیت 7 شده 1)، بعد اومده اونو غیرفعال کرده و البته به 4 بیت کم ارزش مقدار 0 داده. یعنی کلاک میکرو همون کلاکی هست که با کریستال داخلی یا خارجی بهش دادید.

          اما رجیستر ADCSRB : با یک کردن این بیت و در صورت غیرفعال بودن ADC ، میشه از پایه های مربوط به ADC مثل ADC0 و ... به عنوان پایه منفی مقایسه گر آنالوگ استفاده کرد. یعنی به جای IN1 از پایه های دیگه استفاده می کنید.

          رجستر DIDR0 هم توضیحش رو دیتاشیت کم گفته. 5 تا بیت برای 5 تا کانال ADC از 7 تا، در نظر گرفته شده. اگر این بیت ها یک باشند، بافر دیجیتال (ظاهرا یک بافر دیجیتال روی هر ورودی ADC وجود داره)، غیرفعال میشه و این امر باعث میشه که توان مصرفی واحد ADC بیاد پایین. با یک بودن این بافر دیجیتال، رجیستر PIN که ورودی پایه ها رو نگه میداره، همیشه صفر رو نشون خواهد داد.
          ---------
          .
          .
          ...........

          دیدگاه

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