اطلاعیه

Collapse
No announcement yet.

استفاده از تایمر/کانتر برای محاسبه زمان روشن یا خاموش بودن ترموستات

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

    استفاده از تایمر/کانتر برای محاسبه زمان روشن یا خاموش بودن ترموستات

    سلام
    این برنامه را سریع باید درست کنم لطفا زود راهنماییم کنید. oo:
    برنامه یک ترموستات با armega8 دارم که سه حالت داره یا اتوماتیک یا manual یا timer در حالت manual که دستی ترموستات خاموش یا روشن میشه و دله هیتر رو خاموش یا روشن می کنه در حالت اتوماتیک اگر دمای محیط کمتر از دمای داده شده به دستگاه باشه ترموستات روشن و رله روشن و در غیر این صورت خاموش می شود. در حالت تایمر چه در حالت اتوماتیک باشد چه در حالت دستی بعد از زمانی که به دستگاه داده می شود ترموستات و در پی آن رله خاموش می شود که ثانیه شمار آن برای خاموش شدن ترموستات به صورت زیر تعریف می شود:
    interrupt [TIM1_OVF] void timer1_ovf_isr(void)
    {
    rtc_cnt+=2.097152;

    if(rtc_cnt>60){
    rtc_cnt-=60;
    timer_refresh=1;
    if(off_timer>0){
    off_timer--;
    if(off_timer==0){
    timer_ovf=1;
    rtc_cnt=0;
    }
    }

    }
    }
    TCCR1B=0x04;
    TIMSK=0x24;
    باید کدی را به این برنامه اضافه کنم برای کالیبره کردن دما که مدت زمان روشن بودن و خاموش بودن رله را محاسبه کنه و بعد یه عملیاتی انجام بده. این طور که به نظر می رسه توی همین تایمر/کانتر یک نمی تونم این زمان ها رو بشمرم چون با تایمر مربوط به دستگاه تداخل پیدا می کنه درسته؟ اگر از وقفه داخلی تایمر کانتر صفر یا دو برای محاسبه زمان روشن یا خاموش بودن استفاده کنم مشکلی پیش نمیاد منظورم تداخله
    برای نوشتن با کانتر تایمر صفر یا دو میشه راهنماییم کنید؟
    ممنونم

    #2
    پاسخ : استفاده از تایمر/کانتر برای محاسبه زمان روشن یا خاموش بودن ترموستات

    هر وقت که تایمر ovf میشه خوب یه وقفه میده اونجا اینکد بنویس مثلا t++ بعد تو حلقه while کلی مثلا بنویس (if(t>100) کار مورد نطر انجام بده با همین فک کنم بتونی زمان روشن یا خاموش بودن جساب کنی

    دیدگاه

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