اطلاعیه

Collapse
No announcement yet.

اشکال در استفاده از eeprom

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

    اشکال در استفاده از eeprom

    سلام
    من یه جدول با 33 سطر و دو ستون دارم که می خوام روش look up array رو روش پیاده کنم یعنی تو eeprom ذخیره کنم و بعد بیام
    ستون اول رو جستجو کنم و وقتی داده مورد نظر پیدا شد داده هم ردیفش تو ستون دوم رو بریزم تو یه متغیر مثلا!
    حالا تاحتمالا و نحوه ی ذخیره این جدول تو eeprom مشکل دارم!
    اول اومدم یه آرایه 33 در 2 تعریف کردم از نوع eeprom float بعد به طور عادی شروع کردم مقایسه کردن دونه دونه دیتاهای محل های فرد با عدد مورد نظرم تا ...
    ولی چیزی که خروجی می گیرم -0.0 هست!!
    بعدشم دستی توی notepad نوشتمشون پشت سرهم و past کردم توی قسمت eeprom برنامه progisp و میکرومو برنامه ریزی کردم ولی بازم ...
    می خواستم بپرسم نکنه باید کار اضافه ای درباره قباتهای EECR , ... بکنم و حتما داده رو از توی EEDR بردارم؟

    (فعلا با همون آرایه معمولی تقریبا حلش کردم ولی می خوام بدونم مشکل با eeprom چیه!)
    میشه منو راهنمایی کنین؟
    ممنون
    پینوکیو چوبی بمان... دنیای آدمآ‌ها سنگی ست!

    #2
    پاسخ : اشکال در استفاده از eeprom

    موقع پروگرم کردن یه فیوز بیت به اسم EEsave هست که جلوی نوشتن ایپرام رو میگیره . اونو غیر فعال کردی؟

    دیدگاه


      #3
      پاسخ : اشکال در استفاده از eeprom

      نوشته اصلی توسط mojalan
      موقع پروگرم کردن یه فیوز بیت به اسم EEsave هست که جلوی نوشتن ایپرام رو میگیره . اونو غیر فعال کردی؟
      ممنون بابت توجهتون بله این کار رو کردم
      پینوکیو چوبی بمان... دنیای آدمآ‌ها سنگی ست!

      دیدگاه


        #4
        پاسخ : اشکال در استفاده از eeprom

        بعد از اینکه پروگرم کردین با پروگرمر حافظه EEprom رو بخونید و محتویاتش رو ببینید تا مطمئن بشید که موقع پروگرم کردن داده هاتون تو این حافظه نوشته میشه.

        دیدگاه


          #5
          پاسخ : اشکال در استفاده از eeprom

          نوشته اصلی توسط mojalan
          بعد از اینکه پروگرم کردین با پروگرمر حافظه EEprom رو بخونید و محتویاتش رو ببینید تا مطمئن بشید که موقع پروگرم کردن داده هاتون تو این حافظه نوشته میشه.
          همین کارو کردم که شک کردم ایراد داره
          یه سری چرت و پرت که من نمی فهمم اونجا نوشته میشه!! :biggrin:
          البته نمی دونم باید اینطور باشه یا نه!
          پینوکیو چوبی بمان... دنیای آدمآ‌ها سنگی ست!

          دیدگاه


            #6
            پاسخ : اشکال در استفاده از eeprom

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

            دیدگاه


              #7
              پاسخ : اشکال در استفاده از eeprom

              نوشته اصلی توسط mojtaba_led
              سلام
              آقا من درست متوجه مشکلتون نشدم فقط یه چیزی
              بگم ،تو ایپرام فقط بنویسید یا بخونید ،متغیر های از جنس ایپرام رو به صورت مستقیم تو محاسبات حسابی و منطقی استفاده نکنید از یه متغیر محلی به عنوان واسطه برای خوندن و نوشتن نتیجه محاسبات استفاده کنید .
              چشم مرسی
              آره اونجوری اصلا درست در نمی اومد
              ممنونم
              خب حالا
              1.برای همون خوندن و نوشتنش توی یه متغیر حتما باید متغیرم از نوع unsigned char باشه تا بشه EEDR رو ریخت توش؟
              منظورم اینه که مثلا اگه من یه متغیری می خوام ازش بخونم که تعداد بیت اشغالیش بیشتره مثلا float ... باید چی کار کنم؟
              2.اگه یه آرایه مثلا 10 تایی از نوع eeprom float تعریف کنم بعد واسه خوندنش از توی eeprom باید چه جوری اقدام کنم؟
              3.یه سوال دیگه بپرسم اصلا اشکالی داره که ما داده های ثابت و طولانی مونو مثلا از طریق یه آرایه ذخیره کنیم ؟
              تو همون flash ذخیره میشه اگه eeprom تعریفش نکنیم؟

              آوووو! چقد سوال شد شرمنده دیگه!:redface:

              پینوکیو چوبی بمان... دنیای آدمآ‌ها سنگی ست!

              دیدگاه


                #8
                پاسخ : اشکال در استفاده از eeprom

                نوشته اصلی توسط shamim_no
                همین کارو کردم که شک کردم ایراد داره
                یه سری چرت و پرت که من نمی فهمم اونجا نوشته میشه!! :biggrin:
                البته نمی دونم باید اینطور باشه یا نه!
                اعداد float تو حافظه 4 بایت رو اشغال میکنند و با دیدن نمیشه فهمید که چه عددی رو نشون میدن. همینکه تو حافظه چیزی غیر از 0x00 هست یعنی داخلش نوشته شده شما برای اطمینان تعداد بایتهای نوشته شده باید 4 برابر مقدار مورد نیازت باشه.

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

                flash float arr[32][2]={1.0,1.1,2.8,2.2,3.9,3.3,4.1,4.4,5.7,5.5,6.9,6.6, 7.6,7.7,8.2,8.6

                بعد با کد زیر تا 5 رقم اعشار اونا رو روی ال سی دی نشون دادم

                for (j=0;j<32;j++)
                {
                ftoa(arr[j][0],5,str);
                lcd_puts(str);
                lcd_putchar(','
                ftoa(arr[j][1],5,str);
                lcd_puts(str);
                delay_ms(1500);
                lcd_clear();
                }

                دیدگاه

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