اطلاعیه

Collapse
No announcement yet.

ذخیره اطلاعات در حافظه فلش میکرو

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

    #16
    پاسخ : ذخیره اطلاعات در حافظه فلش میکرو

    خب نکته سوال اینه که باید مصرف توان مدار بقدری پایین باشه که بتواند با تغذیه باتری به مدت چند ماه کارکند.
    بنظرتون با کدویژن میشه به این رسید؟؟؟ اگه میشه که ماخوشحال میشیم

    دیدگاه


      #17
      پاسخ : ذخیره اطلاعات در حافظه فلش میکرو

      فکنم مصرف توان ارتباطی به نحوه پروگرام شدن وجود نداشته باشه.ولی اگه می خواید توان پایینی داشته باشید فرکانس کاری میکرو رو حد الامکان بیارید پایین. مثلا 32KHZ گزینه مناسبیباید باشه.
      ضمنا به هیچ عنوان از رگولاتور های خطی مثلا 7805 وامثالهم استفاده نکتید.
      اسمم بابا برقیه می دونین کارم چیه دلم می خواد همه جا که با کمک شما
      مصرف برق کم بشه تا برقمون قطع نشه
      مصرف بی رویه کار خیلی بدیه موقع پخش کارتون برق تلویزیون
      اگه یه دفعه بره حوصله مون سر می ره
      هرگز نشه فراموش لامپ اضافی خاموش

      دیدگاه


        #18
        پاسخ : ذخیره اطلاعات در حافظه فلش میکرو

        نوشته اصلی توسط maryam220
        خب نکته سوال اینه که باید مصرف توان مدار بقدری پایین باشه که بتواند با تغذیه باتری به مدت چند ماه کارکند.
        بنظرتون با کدویژن میشه به این رسید؟؟؟ اگه میشه که ماخوشحال میشیم
        بله میشه توان مصرفی مدار هیچ ربطی به زبان برنامه نویسی یا کامپایلر شما نداره شما برای پایین آوردن مصرف باید مسایل دیگه ای رو در نظر بگیرید مثلا:
        استفاده از mega8L
        استفاده از مد های sleep میکرو
        کم کردن فرکانس کاری میکرو
        البته چون در هر صورت از نمایشگر استفاد میکنید (lcd یا 7seg) هیچ وقت نمیتونید چند ماه مدار رو با یه باتری روشن نگه دارید!

        دیدگاه


          #19
          پاسخ : ذخیره اطلاعات در حافظه فلش میکرو

          ولی به نظر من میشه.
          اگه دقت کرده باشید ساعت هایی هستن که از 7سگمنت استفاده می کننن و چند ماه کار میکنن.البته دوستان صاحب علم هستن و قصد جسارت ندارم .
          اسمم بابا برقیه می دونین کارم چیه دلم می خواد همه جا که با کمک شما
          مصرف برق کم بشه تا برقمون قطع نشه
          مصرف بی رویه کار خیلی بدیه موقع پخش کارتون برق تلویزیون
          اگه یه دفعه بره حوصله مون سر می ره
          هرگز نشه فراموش لامپ اضافی خاموش

          دیدگاه


            #20
            پاسخ : ذخیره اطلاعات در حافظه فلش میکرو

            اختیار دارید جناب بابا برقی عزیز در دانش و تجربه شما شکی نیست من فقط با توجه به جریان مصرفی 7seg های رایج توی بازار اینو گفتم و مقصودم این بود که میشه توان مصرفی میکرو رو تا 0.35mA یا حتی 1uA هم کم کرد اما وقتی نمایشگر داشته باشیم اوضاع خیلی متفاوته!!

            دیدگاه


              #21
              پاسخ : ذخیره اطلاعات در حافظه فلش میکرو

              این یه برنامه ساده که کارش اینه که کانال صفر ADC رو میخونه (خروجی lm35 بهش وصله) و بعد دما رو محاسبه میکنه
              هر ثانیه 4 بار این کارو میکنه و دما توی متغیر temp ذخیره میشه و میتونید ازش استفاده کنید یا اگه از نمایشگر استفاده میکنید نمایشش بدید.
              ببخشید من خودم فرصت نکردم برنامه رو تست کنم اگه اشکال داشت اصلاح میکنم ولی به احتمال زیاد مشکلی نداره

              clock: 8MHz
              ولتاژ مرجع 2.56 داخلی

              کد:
              #include <mega8.h>
              #include <delay.h>
              
              
              float  temp=0.0; 
              
              flash float temp2=0.0;
              flash float temp3=0.0;
              flash float temp4=0.0;
              
              eeprom float temp5=0.0;
              
              //_________________________________________             
              interrupt [ADC_INT] void adc_isr(void){
              unsigned int adc_data;
              adc_data=ADCW;
              temp=adc_data*2.56/1024; 
              temp=temp*100; 
              } 
              //__________________________________________
              
              void main(){ 
              ACSR=0XC0;
              SFIOR=0X00;
              ADMUX=0XC0;
              ADCSRA=0X8F;
              #asm("sei")
              ADCSRA=0XCF;
              while(1){
              
              delay_ms(250);
              ADCSRA=0XCF;
               
               };
              }
              به عنوان مثال هم متغیر های temp2 temp3 temp4 رو توی flash و temp5 رو توی eeprom تعریف کردم که ببینید چه جوری هست
              روی این متغیر ها توی برنامه به هر طریقی محاسبه انجام بشه (مثه بقیه متغیر ها) و مقدارشون در حین کار تغییر کنه همیشه آخرین مقدارشون باقی میمونه و با قطع برق 0 نمیشه.
              توی codevision اگه به اول اون خطی که متغیر رو تعریف میکنه flash یا eeprom اضافه کنید متغیر توی flash یا eeprom میکرو ذخیره میشه و همیشه آخرین مقدارشو قبل از قطع تغذیه حفظ میکنه و کار دیگه ای لازم نیست انجام بدید.

              دیدگاه


                #22
                پاسخ : ذخیره اطلاعات در حافظه فلش میکرو

                سلام دوستان من قبلا به این مشکل برخوردم،یه چیزایی دیدم که از eeprom داخلی میکرو استفاده کرده بود ولی هنوز تستش نکردم.منبعش هم یادم نیس که کی گذاشته بود به هرحال من فقط نقل قول میکنم.

                اول یه کمی در مورد eeprom میگم بعد میریم سراغ کار با آن:
                eeprom مخفف (Electrical Ereasable Read Only Memory) میباشد یکی از خصیصه های بسیار مهم این حافظه این است که با قطع برق پاک نمیشود و یکی از عیب های بزرگ آن اینست که سرعت نوشتن در آن خیلی کند میباشد(حدود 2 تا 3 میلی ثانیه)
                حال در مورد کار با آن:
                ببینید شما به خانه های این حافظه نمیتونید دسترسی مستقیم داشته باشید (یعنی مثل RAM ) نیست شما باید با استفاده از 3 رجیستری که گفتم (EECR وEEDR وEEAR ) با این حافظه کار کنید حالا چطوری؟؟
                2 موردی که در حافظه مهم است یکی آدرس خانه هاست و یکی اطلاعاتی که شما میخواهید ذخیره کنید برای مثال شما میخواهید عدد 203 را در خانه ای به آدرس 546 ذخیره کنید و همانطور که میبینید این دو عدد هیچ ربطی به هم ندارند و هر کدام بیانگر یک معنی خاصند
                نوشتن در eeprom بوسیله CPU
                شما باید اول آدرس خانه ای که میخواهید در آن بنویسید را در رجیستر آدرس یعنی EEAR که مخفف (eeprom address register) هست بریزید مثلا 546 (در ضمن eeprom مگا 32 1024 کاراکتر جا دارد)
                سپس data یا اطلاعاتی که میخواهید در این خانه ذخیره شود (حتما از نوع کاراکتر 8 بیتی از 0 تا 255) را در رجیستر EEDR که رجیستر دیتا و مخفف (eeprom data register ) است بریزید مثلا 203 حالا همه چیز آماده است تا شما فرمان write را بدهید برای این کار را باید با رجیستر EECR انجام دهید:

                همانطور که ملاحظه میکنید ما با 4 بیت آخر این رجیستر کار میکنیم برای نوشتن در eeprom باید در ابتدا بیت EEWME یعنی بیت سوم را یک کنیم بعد از آن بلا فاصله باید بیت EEWEرا یک کنیم با این کار عدد داخل EEDR در خانه ای با آدرس EEAR ذخیره میشود اکنون باید شما 2 میلی ثانیه صبر کنید تا عدد نوشته شود یا صبر کنید تا بیت EEWE صفر شود(در این مثال من صبر مینم تا این بیت صفر شود) اینم کد:
                EEDR=203;
                EEAR=546;
                EECR=0x04;
                EECR=0x02;
                while((EECR&0x02)==1);

                خواندن از eeprom بوسیه CPU
                برای خواندن باید اول آدرس خانه ای که میخواهید بخوانید در EEAR قرار دهید (مثلا خانه 742) سپس فرمان خواندن بدهید یعنی بیت اول از EECR یعنی EERE را یک کنید بعد از این کار دیتا موجود در خانه ای که توسط EEAR آدرس دهی شده بود (742) در EEDR ریخته میشود حال شما باید مقدار EEDR را در یک کاراکتر بریزید این هم کد مربوطه:
                EEAR=742;
                EECR=0x01;
                data=EEDR;
                در اینجا نیاز به صبر کردن نیست چون فقط نوشتن در eeprom زمانبر است
                حال ممکن است بپرسید خب این کار چه فرقی داره با نوشتن یک خط eeprom char data در برنامه؟ دیگه این همه دنگ و فنگ نداره که!!!!!!!!!!!!!!!!!!!!
                باید بگم دو مزیت عمده این عمل اینه که:
                1) شما با استفاده از این روش میتونید با پروگرامر مقادیر داخل eeprom را خوانده و بسته به آدرسی که دارند آنها را تفسیر کنید یعنی با CPU میکرو عدد را داخل eeprom نوشته و برای خواندن با کامپیوتر این کار ر انجام دهید
                2) با پروگرامر eeprom را پروگرام میکنید و هر عددی که خواستید در هر آدرسی که خواستید مینویسید و سپس در برنامه با آدرس دهی بوسیله CPU از این اعداد استفاده میکنید و این مورد دوم بسیار پر کاربرد است

                سلام شاید صحبت کردن در این باره به نظر بسیاری از دوستان ابتدایی و پیش پا افتاده باشد ولی بعضی از دوستانی که تازه وارد زمینه میکرو کنترلر و برنامه نویسی avr شده اند هنوز طرز استفاده از این نوع حافظه را بلد نیستند. من خودم در ابتدا زیاد وارد نبودم پس چند سطری در این باره صحبت می کنیم: " مطالب زیر برای برنامه نویسی به زبان C و تحت کامپایلر Code vision می باشد ". برای استفاده از این نوع حافظه بعد از نوشتن فایلهای سرآیند " Include " باید این نوع حافظه را پیکر بندی کنیم دقت کنید قبل از نوشتن بدنه اصلی برنامه " void main " این حافظه را وارد کنید. به مثالهای زیر دقت کنید:

                eeprom long int num=0;
                eeprom char ref_temp[3];
                eeprom char pass[3]={0,0,0}; دستور اول یک متغیر با نام num که از نوع عدد صحیح است را در حافظه eeprom داخلی میکروکنترلر وارد میکند. دستور دوم یک آرایه یا ماتریس با نام ref_temp را وارد این حافظه می کند واین یک ماتریسی است که دارای یک سطر و 3 ستون است در ضمن گنجایش هر خانه از این ماتریس برابر 255 دسی مال است زیرا آنرا از نوع char انتخاب کرده ایم. دستور سوم همانند دستور دوم است با این تفاوت که مقدار عددی هر خانه را از قبل مشخص کرده ایم که برابر 0 می باشد.

                اللهم صل علی محمد و ال محمد و عجل فرجهم
                >>> www.DMF313.ir <<<
                اگر ژرف یابی و پژوهش نباشد; نتیجه اش یک جا ایستادن،
                در جا زدن و با دنیای پیرامون خود به تدریج بیگانه تر شدن
                است.

                دیدگاه


                  #23
                  پاسخ : ذخیره اطلاعات در حافظه فلش میکرو

                  دوستان یه سوال فنی
                  در کدویژن کامپایل که میکنم ارور میگیره از کتابخانه alcd و توابع lcd مینویسه can't open
                  چیکار کنم؟؟؟؟

                  دیدگاه


                    #24
                    پاسخ : ذخیره اطلاعات در حافظه فلش میکرو

                    نوشته اصلی توسط maryam220
                    دوستان یه سوال فنی
                    در کدویژن کامپایل که میکنم ارور میگیره از کتابخانه alcd و توابع lcd مینویسه can't open
                    چیکار کنم؟؟؟؟
                    alcd.h توی codevision 2.05.3 هست که امکانات اضافه داره شما از lcd.h هم میتونید استفاده کنید

                    دیدگاه


                      #25
                      پاسخ : ذخیره اطلاعات در حافظه فلش میکرو

                      دوستان یه سوال
                      میخام تغذیه 3ولت یعنی دوتاباتری قلمی بذارم. مشکل اینجاست که تغذیه ال سی دی 5ولت است.. کسی ال سی دی سراغ داره که با تغذیه 3ولت کارکنه؟؟
                      لطفا معرفی کنید

                      دیدگاه


                        #26
                        پاسخ : ذخیره اطلاعات در حافظه فلش میکرو

                        lcd nokia 1100
                        قیمت: 3500 تومن
                        ولتاژ کاری: 3 ولت
                        .The best question deserves a better answer
                        =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
                        «پناه»می برم «به خدا»
                        از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
                        محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

                        دیدگاه


                          #27
                          پاسخ : ذخیره اطلاعات در حافظه فلش میکرو

                          دیتاشیتی چیزی میشه ازش ارایه بدین که بفهمم چقد جریان میکشه و اطلاعاتش چیه
                          lcdای میخام که تغذیه اش 3ولت باشه و مصرفش هم پایین

                          دیدگاه


                            #28
                            پاسخ : ذخیره اطلاعات در حافظه فلش میکرو

                            ترجیحا اگه شبیه lcd 2*16 باشه چون برنامه نوشته شده زیاد تغییرنکنه

                            دیدگاه

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