اطلاعیه

Collapse
No announcement yet.

راهنمایی برای کار کردن با میکرو atmega328p

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

    راهنمایی برای کار کردن با میکرو atmega328p

    با سلام خدمت همگی
    ---
    با تازگی میکرو atmega328p رو خریداری کردم .. ظاهرا امکانت بسیار متفاوتی با مگا 32 و 8 و... دارد...

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

    تویه کدویژن وقتی میخواستم،پروژه جدیدی برای این میکرو درست کنم،تعداد اسلایتور رو 1 تنظیم بود و نمی شد حذفش کرد.. این سلایتور ،همان کریستال خارجیست ؟و اگر نیست در رابطه اش توضیح بدید..
    تویه قسمت وقفه ها، سه قسمت جدید اضافه شده،که ظاهرا یک سری پورت را یک کنید یک سری اتفاقاتی می افتد،اگر میشه این رو هم توضیح بدید
    و در نهایت اگر براتون مقدور،بفرمایید که چطور میشه از دماسنج داخلی میکرو استفاده کرد (کد برای کدویژن)

    باتشکر از وقت که میگذارید.

    #2
    پاسخ : راهنمایی برای کار کردن با میکرو atmega328p

    سلام دوباره
    لطفا راهنمایی کنید...
    باتشکر

    اضافه شده در تاریخ :
    سلامی دوباره
    کسی اطلاعی نداره؟!
    باتشکر.

    دیدگاه


      #3
      پاسخ : راهنمایی برای کار کردن با میکرو atmega328p

      با سلام
      ---
      اطلاعاتی کوتاه در رابطه با میکرو Mega328p

      ولتاژ رفرنس داخلی این میکرو 1.1 ولت است (نکته:اگر بخواید ولتاژی بالاتر از این میزان را به ان مقاسیه کنید،محاسبه انجام نمی شود،و حتما باید ولتاژ مقایسه شما کمتر از 1.1 ولت باشد)
      دماسنج داخلی میکرو با 1 میلی ولت افزایش یا کاهش ،1 درجه دما را پایین ویا بالا می کند(رنج دما اندازه گیری این میکرو -40 درجه تا +85 درجه سانتی گراد می باشد)
      دلیل پایین بودن ولتاژ رفرنس،بیشتر برای همان دماسنجی داخلی می باشد.چون با ولتاژ رفرنس داخلی 1.1 و دقت 10 بیتی واحد adc ،میزان سنس کردن به ولتاژ 0.001 یا 1 میلی ولت میرسد .
      میکرو انعطاف بالاتر نسبت به میکروهای مشابه داشته و بدقلقی خیلی کمتری از خود نشان میدهد.
      مصرف بسیار خوب و کمتری نسبت به میکروهای مشابه دارد
      کلاک دیفالت این میکرو روی 8 مگاهرتز تنظیم شده.
      ---
      برای راه اندازی دماسنج داخلی میکرو با مشکل روبرو هستم،اگر کسی موفق شد آن را راه اندازی کند،لطفا کدها را در اینجا قرار دهد
      باتشکر.

      دیدگاه


        #4
        پاسخ : راهنمایی برای کار کردن با میکرو atmega328p

        نوشته اصلی توسط SINASET

        کلاک دیفالت این میکرو روی 8 مگاهرتز تنظیم شده.
        سلام،
        کلاک دیفالت روی 8مگ تنظیم شده است، اما فیوز بیت تقسیم به 8 کلاک فعال است و فرکانس کاری بصورت پیشفرض برابر با 1 مگاهرتز میشود.

        دیدگاه


          #5
          پاسخ : راهنمایی برای کار کردن با میکرو atmega328p

          نوشته اصلی توسط MReza.p
          سلام،
          کلاک دیفالت روی 8مگ تنظیم شده است، اما فیوز بیت تقسیم به 8 کلاک فعال است و فرکانس کاری بصورت پیشفرض برابر با 1 مگاهرتز میشود.
          سلام
          بله ممنون .
          -----
          شما با دماسنج مگا328 کار کردید؟می دونید چطور میشه فعالش کرد؟

          باتشکر.

          دیدگاه


            #6
            پاسخ : راهنمایی برای کار کردن با میکرو atmega328p

            نوشته اصلی توسط SINASET
            سلام
            بله ممنون .
            -----
            شما با دماسنج مگا328 کار کردید؟می دونید چطور میشه فعالش کرد؟

            باتشکر.
            با تنظیم ADMUX.
            از لینک زیر کمک بگیرید:
            http://www.narkidae.com/research/atmega-core-temperature-sensor

            دیدگاه


              #7
              پاسخ : راهنمایی برای کار کردن با میکرو atmega328p

              سلام دوباره
              --
              بله اون مقاله و مقالات دیگر خارجی رو دیدم،ولی اکثرا به زبانی غیر کدویژن نوشته شده .. و البته بیت مربوط را فعال کردم،ولی متاسفانه مشکل حل نشده است ...

              تعریف تابع (فعال سازی ADC 8 و ولتاژ رفرنس 1.1 ولتی)
              [code=cpp]#define ADC_VREF_TYPE ((1<<REFS1) | (1<<REFS0) | (1<<MUX3))[/code]

              چرخه خواندن ADC
              [code=cpp]unsigned int read_adc(unsigned char adc_input)
              {
              ADMUX=adc_input | ADC_VREF_TYPE;
              delay_us(10);
              ADCSRA|=(1<<ADSC);
              while ((ADCSRA & (1<<ADIF))==0);
              ADCSRA|=(1<<ADIF);
              return ADCW;
              }[/code]

              محاسبه و پردازش جهت پردازش بروی سون سگمنت
              [code=cpp] a=read_adc(8);
              b=a- 324.31;
              b=b / 1.22;
              c=b/100;
              d=(b-(c*100))/10;
              e=b-((c*100)+(d*10)); [/code]
              وقتی با نرم پروتئوس تست میکنم،اشکال در واحد ADC قسمت mux می گیرد و...(البته برنامه متوقف نمی شود)
              =====
              الان روی میکرو امتحان کردم،اعداد خوانده میشد و نسبت به دما افزایش و کاهش پیدا میکند،بنظر شما اون اخطار مربوط به چه چیزی می باشد؟
              باتشکر
              باتشکر.

              دیدگاه


                #8
                پاسخ : راهنمایی برای کار کردن با میکرو atmega328p

                با سلام
                مشکل حل شد
                ---
                برای کاربران که احیانا به چنین مشکلی بر خوردن می تونند از کدهای زیر استفاده کنند ...
                [code=cpp]#define ADC_VREF_TYPE ((1<<REFS1) | (1<<REFS0) | (1<<MUX3))[/code]
                فعال سازی ولتاژ رفرنس 1.1 ولت و ADC 8 ، ( ای دی سی 8 در واقع همان دماسنج داخلی هستش)

                دستور خواندن واحد ADC
                [code=cpp]unsigned int read_adc(unsigned char adc_input)
                {
                ADMUX=adc_input | ADC_VREF_TYPE;
                delay_us(10);
                ADCSRA|=(1<<ADSC);
                while ((ADCSRA & (1<<ADIF))==0);
                ADCSRA|=(1<<ADIF);
                return ADCW;
                }[/code]

                دستوری ابتکاری برای کالیبره کردن و نشان دادن دمایی منفی بر روی ایسی
                [code=cpp] a=read_adc(8);
                if(a>314)
                {
                b=a-314;
                }
                else if (a==314)
                {
                b=0;
                }
                else if (a<314)
                {
                b=314-a;
                }[/code]
                دماسنج میگا 328 اینجانب در دمایی 27 درجه 341 واحد ADC تحویل من داد. که این جانب با کم کردن 314 از ان دما رو بدست اوردم. و برای دمایی - ، 314 را - متغیر a کردم (به عنوان مثال 312 منهایی 314 میشود -2 ) به کمک این روش می توان به راحتی اعداد منفی رو روی سون سگمنت مولتی پلکس (4 عدد) کرد.
                برای کالیبره کردن و مطمعا شدن،حتما از یک دماسنج خوب اماده استفاده کنید .

                از این فرم خارجی هم کمک گرفتم و خوب هم جواب دادن،می تونید اگر مشکلی داشتید،اون سایت رو هم مطالعه کنید.
                باتشکر.

                دیدگاه


                  #9
                  پاسخ : راهنمایی برای کار کردن با میکرو atmega328p

                  از این میکرو روی آردوینو UNO استفاده شده، و از آردوینو هم میتونید برای کار باهاش استفاده کنید.
                  برای دما سنجش هم این کد به من جواب داده:
                  [code=cpp]double GetTemp(void)
                  {
                  unsigned int wADC;
                  double t;
                  ADMUX = (_BV(REFS1) | _BV(REFS0) | _BV(MUX3));
                  ADCSRA |= _BV(ADEN);
                  delay(20);
                  ADCSRA |= _BV(ADSC);
                  while (bit_is_set(ADCSRA,ADSC));
                  wADC = ADCW;
                  t = (wADC - 324.31 ) / 1.22;
                  return (t);
                  }[/code]
                  این کد رو من تو خود محیط آردوینو استفاده کردم، ولی از اونجایی که از هیچ یک از توابع مخصوص آردوینو استفاده نمیکنه باید به راحتی بتونید تو جاهای دیگه استفادش کنید.
                  ;()((void (*)(void))0x0000))

                  دیدگاه


                    #10
                    پاسخ : راهنمایی برای کار کردن با میکرو atmega328p

                    با سلام
                    --
                    تویه فرم خارجی گفتن
                    این قسمت از کدهایی خواند adc رو تغییر دهم
                    [code=cpp]while ((ADCSRA & (1<<ADIF))==0);
                    ADCSRA|=(1<<ADIF);[/code]
                    به
                    [code=cpp]while (ADCSRA & (1<<ADSC));[/code]
                    به دلیل
                    Clearing the ADIF flag requires an instruction. Waiting for ADSC to go to zero doesnt need the extra instruction. Sometimes the flash is almost full and you need space for a couple more instructions
                    پاکسازی بیت ADIF نیاز به یک دستور العمل دارد(جهت بررسی 1 شدن).با بیت ADSC نیازی با نوشتن دستور اضافی نیست،فقط باید صبر کرد تا 0 شود. و گاهی وقت ها حافظه شما پر می باشد و شما نیازی به فضایی بیشتری برای یک جمع یا مجموعه دستوری دارید...

                    باتشکر.

                    دیدگاه


                      #11
                      پاسخ : راهنمایی برای کار کردن با میکرو atmega328p

                      سلام مشکل من خیلی عجیبه با این مگا328نمیدونم چکارش کنم
                      یه برنامه با مگا8نوشتم وکریستال16.قشنگ اجرا میکنه و درحال فروشه حالا اومدم یسری افکت بش اضافه کردم حجمش رفت بالا اومدم ای سیو کردم مگا328دیگه جواب نداد امروز یه تست زدم
                      برنامه بامگا8وکریستال16به زیبایی کار میکنه و خیلیم ازش فروختم ولب با تغییر مگا8به328 دیکه اون برنامه کار نمیکنه ولی انگار مشکل با تنظیم فیوزبیتا نیس چون اول برنامه پایه دیتا رو اومدم با تاخیر500میلی ثانیه 0و1کردم جواب داد اومدم تو برنامه16رو کردم1خیلی سریع چشمک میزد باز کردم16 درست شد یعنی تغییر فرمانس تو برنامه هم مشخص کرد داره باکریستال16کار میکنه دقیق ولی فقط اون برنامه رو اجرا نمیکنهکاملا گیج شدم مگا8با کریستال16 این برنامه رو اجزا میکنه ولی مگا328با کریستال16اینو اجرا نمیکنه چرا اخه
                      { خلاف قوانین - پاک شد }

                      دیدگاه


                        #12
                        پاسخ : راهنمایی برای کار کردن با میکرو atmega328p

                        سلام به همه دوستان . یه مشکل برام پیش اومده من یه atmega328 اس ام دی خریدم و بوتلودر آردوینو رو روش ریختم . به اشتباه برای تست برنامه چشمک زن برای atmega معلولی رو روش ریختم
                        مثل این که اون پایه برای برنامه ریزی بوده و الان دیگه پروگرامر اصلا میکرو رو نمیشناسه باید چیکار کنم الان !!!!؟ . خوااااااااهش میکنم یکی کمکم کنه :/
                        براي يک ::
                        بار ايستادن:::
                        صد بار زمين خوردم::::
                        زمين خوردن مهم نيست:::::
                        دوباره برخاستن مهم است ::::::

                        دیدگاه


                          #13
                          پاسخ : راهنمایی برای کار کردن با میکرو atmega328p

                          نوشته اصلی توسط alishuk نمایش پست ها
                          سلام به همه دوستان . یه مشکل برام پیش اومده من یه atmega328 اس ام دی خریدم و بوتلودر آردوینو رو روش ریختم . به اشتباه برای تست برنامه چشمک زن برای atmega معلولی رو روش ریختم
                          مثل این که اون پایه برای برنامه ریزی بوده و الان دیگه پروگرامر اصلا میکرو رو نمیشناسه باید چیکار کنم الان !!!!؟ . خوااااااااهش میکنم یکی کمکم کنه :/
                          سلام. با کریستال و بدون کریستال تست کن. اگه نشد یه میکرو دیگه بخر(اگه اتفاقی که میگی پیش اومده باشه باید با مدارات ولتاژ 12 ولت میکرو رو پاک کنیکه کاریست بس سخت و دشوار)(میتونی اتمگا هشت بخری و بوت لودر arduino ng رو بریزی روش. ارزون تر در میاد)






                          امیرحسین ضیا

                          دیدگاه

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