اطلاعیه

Collapse
No announcement yet.

سوال در رابطه با ADC

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

    سوال در رابطه با ADC

    سلام
    اگر در حین تبدیل adc وقفه ای رخ بده مثلا وقفه سرریز شدن یکی از تایمرها،عملکرد adc رو مختل میکنه؟

    #2
    پاسخ : سوال در رابطه با ADC

    فک نمیکنم :-?
    ولی اگر از ADC NOISE REDUCTION (یه جور مود خواب) استفاده کرده باشید این مود خواب مانند بقیه ی مودها اگر وقفه ای صورت بگیره
    مود غیر فعال میشه!
    :nerd:
    1 در دنیا 100 در آخرت (درس و مشق فعالیتمو تو انجمن کم کرده)
    من آنچه شرط بلاغست با تو میآ‌گویم. تو خواه از سخنم پند گیر و خواه ملال. سعدی
    !Electronic On! Programming On
    هوشمندانه سوال بپرسیم!
    http://ir02x6.persiangig.com/logo/eca/tanks_01.png

    دیدگاه


      #3
      پاسخ : سوال در رابطه با ADC

      سلام
      من هم نظرم همینه ...
      [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
      معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
      معرفی نرم افزار Codewizard PWM
      با من بیشتر آشنا شوید

      دیدگاه


        #4
        پاسخ : سوال در رابطه با ADC

        خیلی ممنون از پاسخ هاتون
        نه من از ADC NOISE REDUCTION استفاده نمیکنم،فقط با استفاده از تابع read_adc() چند تا از ورودی های adc رو میخونم و همزمان از وقفه تایمر ها هم میخام استفاده کنم.گفتم شاید چون دارم از روش پولینگ در adc استفاده میکنم،رخ دادن وقفه ممکنه ایجاد اختلال در عمل تبدیل adc بشه.
        نظر خودمم اینه که چون سخت افزار adc و تایمر مستقل از همند پس مشکلی بوجود نمیاد،درس میگم؟

        دیدگاه


          #5
          پاسخ : سوال در رابطه با ADC

          نوشته اصلی توسط halford
          خیلی ممنون از پاسخ هاتون
          نه من از ADC NOISE REDUCTION استفاده نمیکنم،فقط با استفاده از تابع read_adc() چند تا از ورودی های adc رو میخونم و همزمان از وقفه تایمر ها هم میخام استفاده کنم.گفتم شاید چون دارم از روش پولینگ در adc استفاده میکنم،رخ دادن وقفه ممکنه ایجاد اختلال در عمل تبدیل adc بشه.
          نظر خودمم اینه که چون سخت افزار adc و تایمر مستقل از همند پس مشکلی بوجود نمیاد،درس میگم؟
          اگر دو یا چند وقفه در برنامه داشته باشید ممکن هست که هر دو وقفه یا چند وقفه همزمان با هم انجام گیرد در این صورت وقفه ها میرن توی صف اولویت ...!!
          این صف به ما این امکان را میدهد تا وقفه ها با هم تداخلی نداشته باشند
          شما چون ADC و وقفه گذاشتید هیچ اتفاقی نمی افتد . . . و با هم هیچ تداخلی ندارند ...
          موفق باشید
          [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
          معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
          معرفی نرم افزار Codewizard PWM
          با من بیشتر آشنا شوید

          دیدگاه


            #6
            پاسخ : سوال در رابطه با ADC

            سلام دوستان
            من یه سوالی داشتم که مربوط به adc هست ممنون میشم پاسخ بدید.
            من میخوام عددی رو که الان اینتراپت adc اتفاق میفته و برمیگردونه رو با دفعه بعدی که اینتراپت میشه رو با هم مقایسه کنم.چیکار باید بکنم .

            دیدگاه


              #7
              پاسخ : سوال در رابطه با ADC

              نوشته اصلی توسط xiao
              من میخوام عددی رو که الان اینتراپت adc اتفاق میفته و برمیگردونه رو با دفعه بعدی که اینتراپت میشه رو با هم مقایسه کنم.چیکار باید بکنم .
              مقدار خوانده شده را درون یک متغیر نگه دار هنگام وقفه بعدی با مقدار جدید مقایسه کن
              امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

              دیدگاه


                #8
                پاسخ : سوال در رابطه با ADC

                نوشته اصلی توسط Abbas Sarami
                مقدار خوانده شده را درون یک متغیر نگه دار هنگام وقفه بعدی با مقدار جدید مقایسه کن
                چون فکر میکردم که اینجا جوابی به سوالم داده نمیشه موضوع جدیدی باز کردم،(دقیقا همون موقع که باز کردم شما هم جواب دادید) اگه ممکنه اونجا جواب بدید.(البته اگه همینجا هم جواب بدید موردی نیست )
                متغییر ها رو کجا باید بزارم داخل اینتراپت یا تو while اگه ممکنه بگید جا متغییر ها باید کجا باشه چون خودم این به ذهنم رسیده بود ولی هر چی فکر کردم ، نفهمیدم چه جوری باید باشه.

                دیدگاه


                  #9
                  پاسخ : سوال در رابطه با ADC

                  نوشته اصلی توسط SAMAN.ASADI
                  اگر دو یا چند وقفه در برنامه داشته باشید ممکن هست که هر دو وقفه یا چند وقفه همزمان با هم انجام گیرد در این صورت وقفه ها میرن توی صف اولویت ...!!
                  این صف به ما این امکان را میدهد تا وقفه ها با هم تداخلی نداشته باشند
                  oo:
                  هميشه به ياد خدا باش !

                  دیدگاه


                    #10
                    پاسخ : سوال در رابطه با ADC

                    نوشته اصلی توسط xiao
                    چون فکر میکردم که اینجا جوابی به سوالم داده نمیشه موضوع جدیدی باز کردم،(دقیقا همون موقع که باز کردم شما هم جواب دادید) اگه ممکنه اونجا جواب بدید.(البته اگه همینجا هم جواب بدید موردی نیست )
                    متغییر ها رو کجا باید بزارم داخل اینتراپت یا تو while اگه ممکنه بگید جا متغییر ها باید کجا باشه چون خودم این به ذهنم رسیده بود ولی هر چی فکر کردم ، نفهمیدم چه جوری باید باشه.
                    شما دو تا متغیر بصورت public تعریف کن (خارج از تابع main) و هر موقع وقفه رخ داد مقدار را بریز داخل یکی از متغیر ها و بعد با اون یکی قبلی مقایسه کن
                    جای متغیر ها را هر دفعه جا بجا کن
                    اگه متوجه نشدی بگو تا بیشتر توضیح بدم
                    امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

                    دیدگاه


                      #11
                      پاسخ : سوال در رابطه با ADC

                      نوشته اصلی توسط Abbas Sarami
                      شما دو تا متغیر بصورت public تعریف کن (خارج از تابع main) و هر موقع وقفه رخ داد مقدار را بریز داخل یکی از متغیر ها و بعد با اون یکی قبلی مقایسه کن
                      جای متغیر ها را هر دفعه جا بجا کن
                      اگه متوجه نشدی بگو تا بیشتر توضیح بدم
                      من واقعا متوجه نمیشم و هردفعه بیشتر گیج میشم. مخصوصا اونجا که گفتید ""جای متغیر ها را هر دفعه جا بجا کن"" .
                      اگر بیشتر توضیح بدید ممنون میشم . اگه کد برنامه این باشه متغییر ها چه جوری قرار میگیره؟
                      Undigned int a,b ;
                      interrupt [ADC_INT] void adc_isr(void)
                      {

                      a=ADCW;
                      delay_ms(250);
                      ADCSRA=0xCD;
                      }
                      Void main(){
                      .
                      .
                      While(){
                      itoa(a,s);
                      lcd_gotoxy(0,0);
                      lcd_puts(s);
                      lcd_putsf(" "
                      }
                      }

                      دیدگاه


                        #12
                        پاسخ : سوال در رابطه با ADC

                        اون روش را بیخیال :biggrin:
                        کد:
                        unsigned int Old_Value, New_Value;
                        unsigned char Flag;
                        
                        interrupt [ADC_INT] void adc_isr(void)
                        {  
                        New_Value=ADCW;				// گرفتن مقدار
                        
                        if(Old_Value > 0 && New_Value > 0) 	// اگر مقادیر صفر نبود یعنی دفعه اول نبود
                        {
                        if(New_Value != Old_Value)Flag=1; 	// اگر اختلاف بین مقادیر بود
                        }
                        
                        Old_Value = New_Value;			// جایگزینی مقادیر فعلی و قبلی برای اندازه گیری بعدی
                        
                        delay_ms(250);
                        ADCSRA=0xCD;   
                        } 
                        
                        
                         
                        Void main(){
                        .
                        .
                        While()
                        {
                           itoa(a,s);
                           lcd_gotoxy(0,0);
                           lcd_puts(s);
                           lcd_putsf("  ");
                        if(Flag==1) lcd_puts("NC");		//اگر اختلاف داشتند 
                        }
                        }
                        موفق باشید
                        امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

                        دیدگاه


                          #13
                          پاسخ : سوال در رابطه با ADC

                          واقعا ممنون . البته هنوز امتحانش نکردم ولی دمت گرمه.

                          دیدگاه


                            #14
                            پاسخ : سوال در رابطه با ADC

                            من یه مشکل دیگه برام پیش اومده ، وقتی دستورات lcd رو که قراره عدد ADC رو چاپ کنه تو While مینویسم جواب نمیده ولی تو خود اینتراپت که میزارم درسته.مشکل از کجاست؟

                            دیدگاه


                              #15
                              پاسخ : سوال در رابطه با ADC

                              نوشته اصلی توسط xiao
                              من یه مشکل دیگه برام پیش اومده ، وقتی دستورات lcd رو که قراره عدد ADC رو چاپ کنه تو While مینویسم جواب نمیده ولی تو خود اینتراپت که میزارم درسته.مشکل از کجاست؟
                              برنامه را بگذار تا مشکلش را پیدا کنم
                              امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

                              دیدگاه

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