اطلاعیه

Collapse
No announcement yet.

کمک در کم کردن سرعت نمایش دما در avr

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

    کمک در کم کردن سرعت نمایش دما در avr

    سلام دوستان
    بچه ها من یه مشکلی دارم یه دما سنج رو وصل کردم به avr دماسنج مقاومتی که مقسم ولتاژ زدم رو lcd مثلا هر 500 میلی ثانیه یه عدد نشون میده اینو نمیخوام میخوام طول بکشه با برنامه میتونم میانگین بگیرم ولی یه مشکل درست میکنه که سرعت برنامه رو میاره پایین کلید ها با تاخیر جواب میدن
    راه دیگه اینکه خازن 100u موازی کردم با سنسو تغییری نکرد :angry:
    کسی ایده ای نداره
    زبان هم بسکم هست

    #2
    پاسخ : کمک در کم کردن سرعت نمایش دما در avr

    نوشته اصلی توسط galaxyboy
    سلام دوستان
    بچه ها من یه مشکلی دارم یه دما سنج رو وصل کردم به avr دماسنج مقاومتی که مقسم ولتاژ زدم رو lcd مثلا هر 500 میلی ثانیه یه عدد نشون میده اینو نمیخوام میخوام طول بکشه با برنامه میتونم میانگین بگیرم ولی یه مشکل درست میکنه که سرعت برنامه رو میاره پایین کلید ها با تاخیر جواب میدن
    راه دیگه اینکه خازن 100u موازی کردم با سنسو تغییری نکرد :angry:
    کسی ایده ای نداره
    زبان هم بسکم هست
    الان مشکل چیه دقیقا دما مدام تغییر میکنه؟
    تنها راهش میانگینه و اصلا نباید سرعت رو پایین بیاره. مگه خوندن از adc چقدر طول میخواد بکشه. احتمالا خوب پیاده نکردید.
    بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
    اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

    دیدگاه


      #3
      پاسخ : کمک در کم کردن سرعت نمایش دما در avr

      میانگین میگیریم میگیم که مثلا هر 0.5 ثانیه بخونه بعد وقتی 3 بار خوند میامگینشو بگیره اینطوری که 1.5 ثانیه فقط صرف میانگیری میشه

      دیدگاه


        #4
        پاسخ : کمک در کم کردن سرعت نمایش دما در avr

        نوشته اصلی توسط galaxyboy
        میانگین میگیریم میگیم که مثلا هر 0.5 ثانیه بخونه بعد وقتی 3 بار خوند میامگینشو بگیره اینطوری که 1.5 ثانیه فقط صرف میانگیری میشه
        my god
        لابد بعد هر بار خوندن delay میزارید.
        اینطوری نه. باید تو main loop بیاید و یه delay مثلا 50 میلی ثانیه ای بزارید. بعد یه شمارنده باشه که بشمره و هر 10 بار که loop چرخید بیاد یه نمونه بگیره و بعد از 3 بار نمونه گیری میانگین رو بریزه تو یه متغییر دیگه که از تو اون شما باید نمایش بدید.
        راه دیگه استفاده از اینتراپت وقفه هستش.
        بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
        اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

        دیدگاه


          #5
          پاسخ : کمک در کم کردن سرعت نمایش دما در avr

          شما یه چیزی مثل این میگی ؟
          for x=0 to 10
          temp = temp + temp
          temp = temp/2
          waitms 50
          next

          دیدگاه


            #6
            پاسخ : کمک در کم کردن سرعت نمایش دما در avr

            نوشته اصلی توسط galaxyboy
            شما یه چیزی مثل این میگی ؟
            for x=0 to 10
            temp = temp + temp
            temp = temp/2
            waitms 50
            next
            نه این چیه
            این یکی از پروژه های منه. البته یه تیکه از main هست
            به دستور timeadc = (unsigned char)ADC_Read(1); دقت کن که مقدار آنالوگ رو هر 1 ثانیه میخونه بدون هیچ مشکلی کار میکنه. البته من میانگین نگرفتم ولی روش کار همینه


            کد:
              while(1)
              {
                check();
                
                asm CLRWDT;   // Assembly command to reset WDT timer
            
                if( time | overvolt | undervolt )
                {
                 RELAY_OFF();
                 if( overvolt| undervolt )
                   display_voltage();
                 else
                   setnum_display( time );
                 if(counter == 0 && time)
                   time--;
                 // update leds
                 LV_LED_OFF();HV_LED_OFF();MV_LED_OFF();
                 if( blinker )
                 {
                  if( overvolt ){
                    HV_LED_ON();
                  }else if( undervolt ){
                    LV_LED_ON();
                  }else{
                     MV_LED_ON();
                  }
                 }
                }
                else
                {
                 RELAY_ON();
                 LV_LED_OFF();HV_LED_OFF();
                 MV_LED_ON();
                 display_voltage();
                }
                // timing
                counter++;
                if( counter == 10 ) // 1 sec
                {
                  counter = 0;
                  timeadc = (unsigned char)ADC_Read(1);
                }      
                wdtDelay(70);  // +delay in interrupt = 100ms
              }

            بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
            اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

            دیدگاه

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