اطلاعیه

Collapse
No announcement yet.

سوال در مورد استفاده از ADC میکرو ATtiny13

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

    سوال در مورد استفاده از ADC میکرو ATtiny13

    سلام من در مورد استفاده کردن از ADC میکرو ATtiny13 چند تا سوال داشتم.
    1- چطوری از تمام ADC میکرو میشه استفاده کرد یعنی چطوری باید پیکر بندیش کرد
    2- ولتاژ مرجعشو چط.ری باد تنظیم کرد (داخلی و خارجی داره ) (مقدار داخلی چقدر هستش و خارجی رو چطوری میشه اعمال کرد)
    (خیلی فوری هستش اگه می ت.نید کمک کنید)

    #2
    پاسخ : سوال در مورد استفاده از ADC میکرو ATtiny13

    سلام
    عزیز، با چه کامپایلری کار می کنی؟
    برای کاری در حوزه اربعین نیاز به نیروی داوطلب هستیم.
    http://hosseinwalkingday.com

    دیدگاه


      #3
      پاسخ : سوال در مورد استفاده از ADC میکرو ATtiny13

      با BASCOM کار می کنم
      هدفم تولید یه ولتاژ DC ثابت تو خر.جی با PWM هستش
      یعنی می خوام از خروجی PWM فیدبک بگیرم و با تغییر پالس یه ولتاژ ثابت تو خروجی داشته باشم

      دیدگاه


        #4
        پاسخ : سوال در مورد استفاده از ADC میکرو ATtiny13

        دو تا مرجع داره 1.1 ولت داخلی و ولتاژ روی پایه vcc شما برای کار باید دیتا شیت رو بخونی با config adc بسکام هم کارت راه میفته از help بسکام استفاده کن.
        همانطور که مایل نیستم بنده کسی باشم، حاضر نیستم آقای کسی باشم. کسانی که مخالف آزادی دیگرانند، خود لیاقت آزادی را ندارند.((آبراهام لینکن))

        قدرت شگفت انگیز نیروهای خلاق و استعدادهای نهفته آدمی هنگامی آشکار می شود که نیازی حیاتی، تواناییهای او را به فعالیت وادارد و کشش آرزویی، سراپای وجودش را به جنب و جوش درآورد.((آبراهام لینکن))

        [img width=343 height=100]http://www.elecdesigner.com/uploads/PRO-DESIGNER-GROUP.jpg[/img]

        دیدگاه


          #5
          پاسخ : سوال در مورد استفاده از ADC میکرو ATtiny13

          CONFIG ADC = single, PRESCALER = AUTO, REFERENCE = opt
          به جای این opt می توان این ها را تایپ کرد:
          AVCC: اگه این رو بزنی، ولتاژ پایه ی AVCC را به عنوان ولتاژ مرجع می شناسه. حواست باشه که این ولتاژ نباید بیشتر از 0.3 ولت با VCC اختلاف داشته باشه.
          Off: این ولتاژی که روی پایه ی Aref هست، را به عنوان ولتاژ مرجع می شناسه.
          INTERNAL : با انتخاب این گزینه، ولتاژ مرجع داخلی میکرو، شروع به کار می کنه.
          Tiny13 خیلی اذیتت می کنه. قیمتش هم 700 تومنه. 900 تومن بده یه mega48 بگیر. برای تولید پالس pwm، اگه بخوای فرکانس بالا باشد، نیاز به فرکانس بالاتر از فرکانس داخلی میکرو داری. Tiny13 باید به یه تراشه تولید کننده ی فرکانس وصل بشه، اما mega48 به کریستال خارجی وصل می شه.
          برای کاری در حوزه اربعین نیاز به نیروی داوطلب هستیم.
          http://hosseinwalkingday.com

          دیدگاه


            #6
            پاسخ : سوال در مورد استفاده از ADC میکرو ATtiny13

            تشکر از دوستان بابت پاسخ های خوبشون.
            در مورد مطالب ذکر شده باید بگم مشکل اصلی در مورد خطایی که در ارتباط با متغییرها میده اول اینکه حتماً باید در EEPROM بنویسی و دیگه اینکه یک خطایی در مورد استفاده از Getadc میده
            source variable does not match the target variable
            که هرچه نوع متغییر عوض میکنم بازم error میده.اگه کسی میتونه در مورد این خطا بهم کمک کنه...
            اینو نمیدونم چکارش کنم فکر کنم باید از پیشنهاد دوستان استفاده کنم و از ATmega بهره ببرم.

            دیدگاه


              #7
              پاسخ : سوال در مورد استفاده از ADC میکرو ATtiny13

              یه مثال:
              dim asimo as word
              asimo = getadc(0)
              خروجی Getadc فقط در متغیر هایی از نوع word ریخته می شه.
              عدد داخل پرانتز هم، همان شماره ی ADC میکرو است که می تونی در دیتاشیت میکرو ببینی.
              برای کاری در حوزه اربعین نیاز به نیروی داوطلب هستیم.
              http://hosseinwalkingday.com

              دیدگاه


                #8
                پاسخ : سوال در مورد استفاده از ADC میکرو ATtiny13

                آقا مرتضی فکر نمی کنم آینقدر ناشی باشم که اینا رو ندونم تمام این کارو با برنامه کردم و تمام دیتا شیتم دیدم :angry:
                من با اضافه کردن چندتا دستور دیگه برای ترکیب بندی دیگه این خطا رو نمیده ولی در پایان برنامه به یک خط خالی گیر میده که out of SRAM شده
                این خطا در تمام ATTiny هستش ولی در ATMega چنین خطایی نمیده و برنامه خیلی درست اجرا میسشه!!!!!!!!!!!!!!

                دیدگاه


                  #9
                  پاسخ : سوال در مورد استفاده از ADC میکرو ATtiny13

                  نوشته اصلی توسط asimo
                  source variable does not match the target variable
                  ترجمه ی این خطا، یعنی متغیر مبدا با متغیر مقصد از یک نوع نیست.
                  و این هم ربطی به Config ها نداره.
                  **************************
                  یه کاری کن.
                  بیا خط اول برنامه $regfile = "m48def.dat" را پاک کن.
                  بعد از منوها، تراشه ی مورد نظرت را تنظیم کن.
                  خط تنظیم SRAM هم پاک کن. بعد ببین همچین خطایی رخ می ده یا نه.
                  برای کاری در حوزه اربعین نیاز به نیروی داوطلب هستیم.
                  http://hosseinwalkingday.com

                  دیدگاه


                    #10
                    پاسخ : سوال در مورد استفاده از ADC میکرو ATtiny13

                    آقا شما باید از این نوع متغیر در attiny 13 استفاده کنی .
                    dim xx as iram word
                    dim x as iram byte
                    فقط یادت باشه در هر خط برنامه از یکی از این متغیر ها میتونی استفاده کنی.
                    ولی برای کار با adc کارت رو راه می اندازه.
                    همانطور که مایل نیستم بنده کسی باشم، حاضر نیستم آقای کسی باشم. کسانی که مخالف آزادی دیگرانند، خود لیاقت آزادی را ندارند.((آبراهام لینکن))

                    قدرت شگفت انگیز نیروهای خلاق و استعدادهای نهفته آدمی هنگامی آشکار می شود که نیازی حیاتی، تواناییهای او را به فعالیت وادارد و کشش آرزویی، سراپای وجودش را به جنب و جوش درآورد.((آبراهام لینکن))

                    [img width=343 height=100]http://www.elecdesigner.com/uploads/PRO-DESIGNER-GROUP.jpg[/img]

                    دیدگاه


                      #11
                      پاسخ : سوال در مورد استفاده از ADC میکرو ATtiny13

                      تشکر از محمد
                      من از این دستورها هم استفاده کردم مقدار ADC رو میتونه بگیره ولی دیگه هپچ کاری نمیشه باهاش کرد یعنی همونطور که خودت گفتی در هر خط فقط یکی از این متغییر ها و اینکه ضرب و تقسیم و .... حتی مقایسه رو خطا میگیره
                      INvalid Datatype
                      :cry2: :cry2: :angry: :angry:
                      یکی کمک کنه!!!!!!!!!!!!!!!!!!! :angry: :cry: :cry:

                      دیدگاه


                        #12
                        پاسخ : سوال در مورد استفاده از ADC میکرو ATtiny13

                        یه راهی داره فقط به شرطی بهت میگم که کلی دعام کنی .
                        میتونی از رجیسترهای بلا استفاده برنامت مصرف کنی مثلا اگر میخوای یه هشت بیتی رو جمع کنی با یه دونه iram هشت بیتی به طور مثال میتونی بنویسی
                        dim x as iram byte
                        x=25
                        tcnt0=tcnt0+x
                        حالا میتونی جمع و تفریق و ... را هم انجام بدی.
                        برای دو بایتی ها هم میتونی از رجیسترهای x,y,z خود میکرو استفاده کنب که یه کم دردسر داره و من تا حالا این کار را نکردم ولی باید با اسمبلی یه طوری اطلاعات داخل متغیر iram رو بریزی تو r30 و r31 که همون z خودمونه .
                        ولی برای تک بایتی ها با همون روش بالا به بیسیک میتونی انجام بدی من تا حالا تست کردم جواب هم داده.
                        همانطور که مایل نیستم بنده کسی باشم، حاضر نیستم آقای کسی باشم. کسانی که مخالف آزادی دیگرانند، خود لیاقت آزادی را ندارند.((آبراهام لینکن))

                        قدرت شگفت انگیز نیروهای خلاق و استعدادهای نهفته آدمی هنگامی آشکار می شود که نیازی حیاتی، تواناییهای او را به فعالیت وادارد و کشش آرزویی، سراپای وجودش را به جنب و جوش درآورد.((آبراهام لینکن))

                        [img width=343 height=100]http://www.elecdesigner.com/uploads/PRO-DESIGNER-GROUP.jpg[/img]

                        دیدگاه


                          #13
                          پاسخ : سوال در مورد استفاده از ADC میکرو ATtiny13

                          شما باید از دستور زیر استفاده کنید
                          $hwstack = 16در غیر این صورت تمام حافظه رم به Stack اختصاص می یابد.

                          دیدگاه


                            #14
                            پاسخ : سوال در مورد استفاده از ADC میکرو ATtiny13

                            با سلام

                            این برنامه رو از نت برداشتم برای استفاده از adc خود attiny13 .. ولتاژ مرجع روی 1.1 خود میکرو تنظیم شده و میخوام وقتی به 0.5 ولت رسید یکی از پورت ها رو فعال کنه ولی وقتی ولتاژ(پایه adc0) بشتر از 1.2 میشه پورت فعال میشه نمیدونم مشکل کجاس..
                            تغذیه میکرو 3 ولتیه (2.94 ولت باطری) .. فرکانس کاری هم 8مگ

                            کد:
                            #include <avr/io.h>
                            
                            void adc_setup (void)
                            {
                              // Set the ADC input to PB2/ADC1
                              //ADMUX |= (1 << MUX0) ;
                            	//ADMUX &= 0b11100000;
                            	//ADMUX &= ~(1 << ADLAR);
                            	//ADMUX |= (1 << REFS1) | (1 << REFS0);
                            	
                            	ADMUX = 0b11000000; //mux0:4 and ADLAR are 0 .. ref0:1 are 1
                            
                              // Set the prescaler to clock/128 & enable ADC
                              ADCSRA |= (1 << ADPS2) | (1 << ADPS1)  | (1 << ADPS0) | (1 << ADEN);
                            }
                            
                            int adc_read (void)
                            {
                            	int ret;
                            
                              // Start the conversion
                              ADCSRA |= (1 << ADSC);
                            
                              // Wait for it to finish
                              while (ADCSRA & (1 << ADSC));
                            	
                            	ret=(int)ADCH;
                            	ret=ret*256+(int)ADCL;
                              return ret;
                            }
                             
                            int main (void)
                            {
                            	float v=0;
                            	
                            	DDRB = 0b00000001;
                              adc_setup();
                              
                              while (1)
                            	{
                                v = adc_read()*0.001074;
                            
                            		if(v>0.5)
                            			PORTB = 0b00000001;
                            		else
                            			PORTB = 0b00000000;
                              }
                            }
                            دوستان لطفا راهنمایی کنید
                            زندگی پر ز وجود است ولی ..
                            ما چه را می خواهیم چه را می جوییم که لب چشمه ی امید اینچنین نا امیدانه به سرابی تلخ مینگریم...

                            دیدگاه


                              #15
                              پاسخ : سوال در مورد استفاده از ADC میکرو ATtiny13

                              چه کنیم ؟
                              زندگی پر ز وجود است ولی ..
                              ما چه را می خواهیم چه را می جوییم که لب چشمه ی امید اینچنین نا امیدانه به سرابی تلخ مینگریم...

                              دیدگاه

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