اطلاعیه

Collapse
No announcement yet.

تنظیم وقفه تایمر یک برای استفاده از کتابخانه ff.h

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

    تنظیم وقفه تایمر یک برای استفاده از کتابخانه ff.h

    سلام دوستان :mrgreen:
    من قصد دارم یه sdcard رو به میکرو وصل کنم برای اینکار کتابخانه ff.h رو به برنامه اضافه کردم و یه سری نمونه کد در هلپ کدویژن و هم چنین مجله نویز 2 رو مطالعه کردم، تابع disk_timerproc برای برقراری ارتباط بین میکرو و کارت باید هر 10 ms فراخوانی شود حالا من نمی دونم این کد هایی که تو این مثال ها نوشته شده دقیقا چیه؟

    کد:
    ]#define T1_OVF_FREQ 100
    #define T1_PRESC 1024L
    #define T1_INIT (0x10000L-(_MCU_CLOCK_FREQUENCY_/(T1_PRESC*T1_OVF_FREQ)))
    
    interrupt [TIM1_OVF] void timer_comp_isr(void)
    {
    /* re-initialize Timer1 */
    TCNT1H=T1_INIT>>8;
    TCNT1L=T1_INIT&0xFF;
    /* card access low level timing function */
    disk_timerproc();
    }
    
    void main(void)
    }
    
    TCCR1A=0x00;
    TCCR1B=(1<<CS12)|(1<<CS10);
    TCNT1H=T1_INIT>>8;
    TCNT1L=T1_INIT&0xFF;
    TIMSK=1<<TOIE1;
    . 
    .
    .
    آقا چرا مثلا اینکارو انجام نمی ده: فرکانس تایمر125 کیلو برای 10 میلی ثانیه باید 1250 کلاک بگذره پس مقدار اولیه تایمر 64285 می شه وهر دفعه با این مقدار ، مقدار دهی اولیه بشه.
    این متغیر های cs10 و cs12 و TOIE1 چین؟
    اگر بخوام از وقفه های سایر تایمرها و وقفه های خارجی استفاده کنم TIMSK رو چطور باید مقدار دهی کنم؟
    با سپاس فراوان
    :biggrin:
    همیشه بزرگوار تر از آن باشید که برنجید
    و نجیب تر از آن باشید که برنجانید!

    #2
    پاسخ : تنظیم وقفه تایمر یک برای استفاده از کتابخانه ff.h

    این متغیر های cs10 و cs12 و TOIE1 چین؟
    این ها متغیر نیستند و یک عدد ثابت هستند که مربوط به رجستر های تایمر هستند. اون 2تای اول برای تقسیم فرکانس و بعدی برای وقفه به کار میرن.از یه کتاب یا دیتا شیت میکرو به رجیستر تایمر ها رو ببین.این اسم ها رو میبینی. اگه میخوای تو کد ویژن استفاده کنی مقدارشو اول برنامه اینجوری اضافه کن:
    #define cs10 0
    #define cs11 1
    #define cs12 2
    کلا استفاده از این تایمر و تابع ضروری نیست و میشه بیخیالش شد!
    [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

    دیدگاه


      #3
      پاسخ : تنظیم وقفه تایمر یک برای استفاده از کتابخانه ff.h

      خیلی ممنونم آقای بهاری :biggrin:
      کاملا حق با شماست در این مورد مطالعه کردم و متوجه شدم که این دقیقا شبیه همون مثال ساده خودمه فقط با کلاس تره!
      اما هنوز یه سوال دارم :مقدار TCCR1B باید 0x05 باشه که در این برنامه در صورتی که خطوط #define CS10 1 و #define CS2 2 تعریف شده باشه درسته.
      اما موضوع اینه که این کد ها رو من ننوشتم و کل سورس کدی که توی مجله نویز 2 اومده دارای این خطوط نیست. قضیه چیه؟ (ببخشید ولی دوست دارم بدونم :redface: )
      یه سوال دیگه هم دارم کسی می دونه Fast pwm و phase correct pwm غیر از اینکه یکی تک شیبه است و دیگری 2 شیبه چه تفاوتی دارند و موارد کاربرد هر کدام کجاست؟ :biggrin:
      با سپاس فراوان :mrgreen:
      همیشه بزرگوار تر از آن باشید که برنجید
      و نجیب تر از آن باشید که برنجانید!

      دیدگاه

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