اطلاعیه

Collapse
No announcement yet.

روش ذخیره و حافظه مناسب برای ثبت داده ها

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

    روش ذخیره و حافظه مناسب برای ثبت داده ها

    سلام
    من مدتهاست از MMC های 16 مگابایتی برای ذخیره اطلاعات تو دستگاهایی مثل حضور و غیاب و .. که با AVR و کامپایلر CV درست کردم استفاده می کنم (ذخیره سازی بصورت سکتوری بدون fat ).
    پارسال دستگاهی درست کردم که مشابه pose بشه باهش خرید انجام داد اما با کارت بدون تماس . تعداد خرید ها خیلی زیاده و دستگاه دائما زیر بار هست ولی مشکل اینجاست که بعضی اوقات خریدار به من میگه رسیدهای چاپی با حافظه دستگاه مغایرت داره و چند تا از خرید ها در حافظه دستگاه نیست . مموری رو که بررسی می کنم میبینم تو چند تا از سکتورها ، داده های نامعلومی ذخیره شده .
    1- حافظه بهتری از MMC برای این کار معرفی میفرمایید ؟
    2- آیا کسی در استفاده از MMC به همچین مشکلی برخورد کرده ؟
    3- یک بار MMC رو عوض کردم ولی باز هم اتفاق افتاد . آیا این MMC ها قدیمی سکتورهای خراب دارند ؟
    4- من اول برنامه MMCرو init می کنم بعد یک داده تست توش می نویسم و میخونم و اگر درست بود دیگه دستگاه بالا میاد و کارش رو شروع میکنه . آیا init کردن مجدد MMC قبل از هر Write کردن میتونه مشکل رو حل کنه و اصلا کار استانداردی هست ؟
    5- یک شمارنده در eeprom داخلی میکرو تعریف کردم که شماره سکتور نوشتن داده رو مشخص میکنه ، آیا ممکنه چون حافظه eeprom نباید زیاد نوشته بشه ، این مساله به علت خراب شدن اون بایت ها در EEprom باشه ؟
    لطفا دوستانی که در زمینه ذخیره سازی داده ها تجربه دارند روش اصولی این کار رو بیان کنند تا همه استفاده کنیم .
    Don't hesitate to ask any question ..

    #2
    پاسخ : روش ذخیره و حافظه مناسب برای ثبت داده ها

    مثل اینکه اساتید سرشون شلوغه
    Don't hesitate to ask any question ..

    دیدگاه


      #3
      پاسخ : روش ذخیره و حافظه مناسب برای ثبت داده ها

      سلام
      من پیشنهاد می کنم هر بار که داده ای را می نویسید، پس از نوشتن آن را بخوانید و چک کنید و اگر با چیزی که نوشتید مغایرت داشت، یک جایی به عنوان خطا ثبت کنید. همچنین می توانید پارامترهایی مثل آدرس خطا در حافظه و یا زمان وقوع خطا را ثبت کنید. این کار می تواند در عیب یابی کمک کند.
      در ضمن یک بار هم یک حافظه را فرمت کنید (به طوری که تمام مکان حافظه مثلا با عدد FF پر شود). سپس حافظه را در دستگاه قرار دهید و تست کنید. چرا که ممکن است اطلاعات نامفهومی که به آن اشاره کردید، از قبل در حافظه وجود داشته و دستگاه شما در آن آدرس چیزی ننوشته است. همچنین آدرس خطاها را در حافظه چک کنید. شاید همه خطاها در آدرسهای مشخصی اتفاق می افتند که در این صورت ممکن است یک جایی در برنامه که مربوط به محاسبه آدرس است، اشتباه شده باشد.

      دیدگاه


        #4
        پاسخ : روش ذخیره و حافظه مناسب برای ثبت داده ها

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

        5- یک شمارنده در eeprom داخلی میکرو تعریف کردم که شماره سکتور نوشتن داده رو مشخص میکنه ، آیا ممکنه چون حافظه eeprom نباید زیاد نوشته بشه ، این مساله به علت خراب شدن اون بایت ها در EEprom باشه ؟
        لطفا دوستانی که در زمینه ذخیره سازی داده ها تجربه دارند روش اصولی این کار رو بیان کنند تا همه استفاده کنیم .
        سلام من بارها و بارها در پروژه های متعدد دیدم که حافظه ایپیرام میکرو بخصوص در نوسانات برق پاک شده است. از این جهت مطمئن هستم که حافظه میکرو avr از جنس eeprom ،حافظه خوبی نیست. پیشنهاد می دهم این حافظه را به جای دیگری منتقل کنید.


        نوشته اصلی توسط artison
        سلام

        1- حافظه بهتری از MMC برای این کار معرفی میفرمایید ؟
        حافظه فلش با نام at45db321,...

        در کل حافظه های mmc در باز داری جنس هایی نا مرغوب فراوانی هست...

        من فکر می کنم مشکل شما سخت افزاری هست که هم به eeprom مربوط می شه وهم به mmc و هم به ....!

        موفق باشید

        دیدگاه


          #5
          پاسخ : روش ذخیره و حافظه مناسب برای ثبت داده ها

          نوشته اصلی توسط artison
          مثل اینکه اساتید سرشون شلوغه
          با سلام

          همونطوری که یکی از دوستان گفت به حافظه eeprom میکرو تا زمانی که ممکن است نوسان ولتاژ یا زمان خاموش و روشن شدن دستگاه بدون رعایت مسائل آن را داشته باشید مشکل ایجاد کند.

          برای من هم بعضی وقتها پیش آمده که اطلاعات eeprom ناقص یا بهم خورده.

          در مورد MMC - با MicroSD که کارکردم باید بگم که موارد مختلفی از سخت افزار و نرم افزار وجوددارد که مشکل ایجاد میکند.
          از سخت افزار بگذریم و در برنامه نویسی ممکن است عدم تخصیص درست حافظه کارکترهای مبهمی ایجاد کند که روی حافظه دیده میشود.
          در هر صورت در صورت نیافتن مشکل یک قسمت برنامه حفاظتی بنویسید تا صحت نوشتن یا خواندن را کنترل نماید و سعی کنید از eeprom برای اطلاعاتی که اهمیت زیادی دارند و در صورت خطا به کل مجموعه آسیب می رساند دوری منید.
          باز هم میگویم با رعایت کلیه موارد سخت افزاری و نرم افزاری نباید مشکلی پیش بیآید ولی باز هم عقل حکم میکند برنامه حفاظتی نوشته شود.
          نوشتن در eeprom طبق دیتاشیت محصول چیزی در حد چند ده هزار بار تا 1 میلیون بار هم دارد و مشکلی از آن جهت نیست مگر استفاده بیمورد - تکراری و بیش از حد به انتهای نوشتن و خواندن یا پاک کردن نزدیک بشوید که طول عمر کل دستگاه را به خطر می اندازد.
          دوست عزیز اگه مفید بود روی تشکر بزن

          دیدگاه


            #6
            پاسخ : روش ذخیره و حافظه مناسب برای ثبت داده ها

            می تونید ادرس هاتون رو تو رم میکرو نگه دارید و در زمان های مشخص در eeprom ذخیره کنید اگر هم همیشه دستگاه برق دار نیست می تونید با اندازه گیری ولتاژ تغذیه از زمان قطع ولتاژ اگاه و در این زمان داده ها رو به eeprom منتقل کنید که اگر این زمان ناکافی بود خازن های تغذیه را افزایش دهید
            التماس دعا

            دیدگاه


              #7
              پاسخ : روش ذخیره و حافظه مناسب برای ثبت داده ها

              از لطف همه اساتید متشکرم
              خیلی خوشحال شدم وقتی دیدم بعد از چند وقت که موضوع بی جواب مونده بود جناب بابائی زحمت کشیدند و از اطلاعات مفید ایشون و سایر دوستان بهره مند شدم
              1- جناب بابایی آیا استفاده از eeprom خارجی هم همین مشکل رو داره ؟ یعنی با نوسان برق پاک میشه ؟ چطور میشه از این مساله جلو گیری کرد ؟
              2- اینکه فرمودید به این حافظه رو جای دیگری منتقل کنم ، به نظر شما چه حافظه ای واسه نگهداری این آدرس مناسبه ؟
              3- از این حافظه at45db321 خودتون استفاده کردید ؟ جسارتا منبعی برای کار با این آیسی با زبان C که تست شده باشه سراغ دارید؟
              جناب آقای david
              میشه راجع به این جملتون" در برنامه نویسی ممکن است عدم تخصیص درست حافظه کارکترهای مبهمی ایجاد کند که روی حافظه دیده میشود." بیشتر توضیح بدید ؟ دقیقا من هم مشکل کاراکترهای مبهم رو دارم ....
              جناب آقای Ali.ra
              اتفاقا مطلبی که شما فرمودید رو یکی دیگر از دوستانم هم متذکر شده بودند . سعی میکنم از این مورد هم استفاده کنم .در حالت ساده متوجه مکانیزم کاری که شما فرمودید شدم که با پایین آمدن ولتاژ ، قبل از خاموش شدن اطلاعات رو ذخیره کنم اما آیا مدار حرفه ای برای این موضوع مد نظرتون هست ؟
              Don't hesitate to ask any question ..

              دیدگاه


                #8
                پاسخ : روش ذخیره و حافظه مناسب برای ثبت داده ها

                نوشته اصلی توسط ali.ra
                می تونید ادرس هاتون رو تو رم میکرو نگه دارید و در زمان های مشخص در eeprom ذخیره کنید اگر هم همیشه دستگاه برق دار نیست می تونید با اندازه گیری ولتاژ تغذیه از زمان قطع ولتاژ اگاه و در این زمان داده ها رو به eeprom منتقل کنید که اگر این زمان ناکافی بود خازن های تغذیه را افزایش دهید
                تا بخواهید از ولتاژنمونه گیری کنید میشه چند بار عمل نوشتن یا خواندن را انجام داد - زمان زیادی نمی بره ولی زمانی که ولتاژ به پائئین ترین سطح خودش برای پایداری میکرو هست ممکن میکرو شروع به ذخیره کنه که ممکنه عمل نیمه تمام اتفاق بیافته - با اینکه کسر خیلی کوچکی از کل زمان مارکرد میکرو است ولی احتمال وقوع دارد و همین بس که اطلاعات نادرست ثبت بشود.

                اگر اطلاعات روی رم باشه که با قطع شدن برق - اطلاعات از بین می رود.!!
                دوست عزیز اگه مفید بود روی تشکر بزن

                دیدگاه


                  #9
                  پاسخ : روش ذخیره و حافظه مناسب برای ثبت داده ها

                  نوشته اصلی توسط artison
                  از لطف همه اساتید متشکرم
                  .............
                  جناب آقای david
                  میشه راجع به این جملتون" در برنامه نویسی ممکن است عدم تخصیص درست حافظه کارکترهای مبهمی ایجاد کند که روی حافظه دیده میشود." بیشتر توضیح بدید ؟ دقیقا من هم مشکل کاراکترهای مبهم رو دارم ....
                  یعنی آدرس دهی ها متغییر ها و تعیین نادرست میزان ظرفیت هر رشته یا مقدار عددی باعث سررز یا تداخل در متغییرهای دیگر میکند که باید دقیق محاسبه شود. در کل معماری حافظه برای برنامه
                  دوست عزیز اگه مفید بود روی تشکر بزن

                  دیدگاه


                    #10
                    پاسخ : روش ذخیره و حافظه مناسب برای ثبت داده ها

                    نوشته اصلی توسط david24
                    تا بخواهید از ولتاژنمونه گیری کنید میشه چند بار عمل نوشتن یا خواندن را انجام داد - زمان زیادی نمی بره ولی زمانی که ولتاژ به پائئین ترین سطح خودش برای پایداری میکرو هست ممکن میکرو شروع به ذخیره کنه که ممکنه عمل نیمه تمام اتفاق بیافته - با اینکه کسر خیلی کوچکی از کل زمان مارکرد میکرو است ولی احتمال وقوع دارد و همین بس که اطلاعات نادرست ثبت بشود.

                    اگر اطلاعات روی رم باشه که با قطع شدن برق - اطلاعات از بین می رود.!!
                    ما همیشه روی تغذیه خازن قابل توجه قرار می دیم و زمانی که ولتاژ ورودی قطع می شه فرض کنید ولتاژ تغذیه هم 5 ولت باشه شروع می کنه به پایین اومدن اما تا ولتاژ مثلا 3.3 مطمعن هستیم که میکرو سالم و زنده است و داره زندگی میکنه پس درست کار می کنه این زمان که کی ولتاژ از 5 به 3.3 می رسه از روی مقدار خازن و جریان کشیده شده قابل محاسبه است و با over designe کردن تو این موضوع یک حد اطمینان هم د نظر می گیریم و این مشکلات پیش نمیاد و در مورد پاک شدن رم هم همین طوره ازش استفاده می کنیم تا وقطعی تغذیه داریم چون خیلی از eeprom بهتره هم سرعت هم حجم هم پایداری و ... و فقط زمانی که تغذیه نداریم سریع اطلاعات مون رو می بریم تو eeprom مخصوصا تو کار ایشون که ادرس اخر حافظه رو نگه می دارند اطلاعات همیشه در حال تغییر و اطلاعات پیشین هم نیاز نیست و حجم بسیار کمی باید ذخیره بشه ...

                    در مورد پیاده سازی هم روش adc میکرو کم هزینه و قابل قبول هستش فقط توجه کنید روی مدار تغذیه با سایر قسمت ها بار زیادی نداشته باشید که اگه این مورد پیش اومده موردی می شه پیشنهاد هایی داشت

                    پیشنهاد می کنم به ساده ترین روش که امکان داره رو مدارتون همین رو انجام بدین مشکلاتش همه حل شدنی هستند اگه پیش بیان
                    التماس دعا

                    دیدگاه


                      #11
                      پاسخ : روش ذخیره و حافظه مناسب برای ثبت داده ها

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

                      دیدگاه


                        #12
                        پاسخ : روش ذخیره و حافظه مناسب برای ثبت داده ها

                        در استفاده از باتری بک اپ توجه کنید که باید درست استفاده بشه یعنی همهی قسمت ها خاموش و میکرو در مد های کاری مثل power down ,... قرار بگیره و یا از رم هایی استفاده کنید که تغذیه بک جدا بهشون متصل می شه و فقط رم رو روشن نگه دارید ...
                        این که با برنامه نویسی بهتر می شه مشکلات رو حل و یا کم کرد هم که وجود داره اما نوشتن تعداد بار زیاد در eeprom ذاتا کار اشتباهی محسوب می شه
                        التماس دعا

                        دیدگاه


                          #13
                          پاسخ : روش ذخیره و حافظه مناسب برای ثبت داده ها

                          منظورم بک پ برای پایداری سیستم نه برای نگهداری رم
                          که زمان برای پردازش و ذیره اطلاعات تا حتی 1-2 ساعت فراهم باشه
                          دوست عزیز اگه مفید بود روی تشکر بزن

                          دیدگاه


                            #14
                            پاسخ : روش ذخیره و حافظه مناسب برای ثبت داده ها

                            با تشکر مجدد
                            باز هم یک سوال من بی جواب موند اونم اینکه آیا eeprom داخلی میکرو از نظر پریدن اطلاعات در نوسانات برق مشکل داره یا اگر eeprom خارجی هم استفاده کنم باز هم همین مشکل رو داره ؟
                            و سوال دیگه اینکه چطور میتونم محل ذخیره یک متغیر EEprom رو خودم تعیین کنم ؟(تو کدویژن قسمتی که متغیر ها رو نشون میده آدرس حافظه رو هم نشون میده حالا مثلا میخوام به جای اینکه متغیرم در آدرس 4 حافظه ذخیره بشه ، بذارمش تو آدرس 20 )
                            Don't hesitate to ask any question ..

                            دیدگاه


                              #15
                              پاسخ : روش ذخیره و حافظه مناسب برای ثبت داده ها

                              نوشته اصلی توسط artison
                              با تشکر مجدد
                              باز هم یک سوال من بی جواب موند اونم اینکه آیا eeprom داخلی میکرو از نظر پریدن اطلاعات در نوسانات برق مشکل داره یا اگر eeprom خارجی هم استفاده کنم باز هم همین مشکل رو داره ؟
                              و سوال دیگه اینکه چطور میتونم محل ذخیره یک متغیر EEprom رو خودم تعیین کنم ؟(تو کدویژن قسمتی که متغیر ها رو نشون میده آدرس حافظه رو هم نشون میده حالا مثلا میخوام به جای اینکه متغیرم در آدرس 4 حافظه ذخیره بشه ، بذارمش تو آدرس 20 )
                              با خارجی کار نکردم ولی داخلی توضیح دادم که مشکلاتی داره.

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

                              شاید مطالب بالا کمکی کرده باشد. :biggrin:
                              اگر دستوری پیدا کدید برای استفاده اعضا نیز قرار دهید.
                              با تشکر
                              دوست عزیز اگه مفید بود روی تشکر بزن

                              دیدگاه

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