اطلاعیه

Collapse
No announcement yet.

کار نکردن E2PROM تو ورژن 2.05 کدویژن

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

    کار نکردن E2PROM تو ورژن 2.05 کدویژن

    سلام من یه مشکل دارم که واسم عجیبه من با E2prom داخلی با کدویژن ورژن پایین نوشتم مشکلی نبود بعد اومدم اونو تو ورژن 2.05 باز کردم همون برنامه ازم ایراد می گیره.ایرادشم اینه
    Error: function argument #1 of type 'eeprom unsigned char *' is incompatible with required parameter of type 'unsigned int'
    خوب یعنی این که ارگومانی که تعریف کردی int ولی از char استفاده کردی!اول اینکه خوب اینکه اشکالی نداره اگه عکسش بود مشکل بود دوم من با ورژن قدیمی همین برنامه کلی باهاش کار کردم پس چرا اونجا کار کرد؟در ضمن همه رو کردم Char یا int باز همین ایراد رو گرفت .اینم اون بخش برنامم که ایراد می گیره
    char eeprom Test[40];
    EEPROM_write(Test+1,0x30);
    خوب حالا یکی بگه این عیبش تو کجاست؟
    تو اين جهان 7 ميلياردي من معني ندارد و اگه تو اين دنيا فقط 1 نفر وجود داشت باز هم من معني نداشت

    #2
    پاسخ : کار نکردن E2PROM تو ورژن 2.05 کدویژن

    کسی نیست راهنمایی کنه :angry:
    تو اين جهان 7 ميلياردي من معني ندارد و اگه تو اين دنيا فقط 1 نفر وجود داشت باز هم من معني نداشت

    دیدگاه


      #3
      پاسخ : کار نکردن E2PROM تو ورژن 2.05 کدویژن

      نوشته اصلی توسط sey22
      سلام من یه مشکل دارم که واسم عجیبه من با E2prom داخلی با کدویژن ورژن پایین نوشتم مشکلی نبود بعد اومدم اونو تو ورژن 2.05 باز کردم همون برنامه ازم ایراد می گیره.ایرادشم اینه
      Error: function argument #1 of type 'eeprom unsigned char *' is incompatible with required parameter of type 'unsigned int'
      خوب یعنی این که ارگومانی که تعریف کردی int ولی از char استفاده کردی!اول اینکه خوب اینکه اشکالی نداره اگه عکسش بود مشکل بود دوم من با ورژن قدیمی همین برنامه کلی باهاش کار کردم پس چرا اونجا کار کرد؟در ضمن همه رو کردم Char یا int باز همین ایراد رو گرفت .اینم اون بخش برنامم که ایراد می گیره
      char eeprom Test[40];
      EEPROM_write(Test+1,0x30);
      خوب حالا یکی بگه این عیبش تو کجاست؟
      متغیر تعریف شده test یک ارایه یعنی از جنس پوینتره ولی متغیر تابع پوینتر نیست.برای استفاده از متغیر به شکل test[1] ویا (test+1)* استفاده بشود.

      دیدگاه


        #4
        پاسخ : کار نکردن E2PROM تو ورژن 2.05 کدویژن

        بابا این e2prom64 مگه چه فرقی داره اعصاب منو خرد کرد :angry:
        فققط تک بایت تک بایت سیو می کنه یه ارایه 10 بایتی بدم سیم نمیشه کسی می دونه چرا؟مثلا مثال زیرو ببینین
        EEPROM_write(*(Data+1),0x30);
        EEPROM_write(*(Data+2),0x38)

        *(BackData+1)=EEPROM_read(*(Data+1));
        *(BackData+2)=EEPROM_read(*(Data+2));

        if (*(BackData+1)==0x30){
        if (*(BackData+2)==0x38)
        LED=1;
        }
        تو بالا میگم اعداد 30 و 38 رو بریز تو خونه 1 و 2 e2prom بعد یه بار خاموش روشن بخون LED روش کن کن ولی کار نمی کنه تکی کار میکنه چندتا بریزم رو e2prom کار نمی کنه؟mega64 مگه حالت خاصی داری داره؟من تا حالا از این مشکل ها نداشتمراستی توابع سی داخل دیتا شیت رو کسی باهاش کار کرده درستن دیگه :sad:
        تو اين جهان 7 ميلياردي من معني ندارد و اگه تو اين دنيا فقط 1 نفر وجود داشت باز هم من معني نداشت

        دیدگاه


          #5
          پاسخ : کار نکردن E2PROM تو ورژن 2.05 کدویژن

          این تابع متغیر قبول میکنه نه پوینتر ارایه باستی در یک حلقه انتقال پیدا کنه مثلا



          EEPROM_write(*(Data+i),c[i
          [(;

          دیدگاه


            #6
            پاسخ : کار نکردن E2PROM تو ورژن 2.05 کدویژن

            با تشکر منم همین کارو می کنم بالا این جوری مثال زدم ولی فقط اخرین بایت رو می خونه مثال زیر ببینید
            C[2]={0x30,0x31}

            for (i=0;i<2;i++){
            EEPROM_write(*(Data+i),C[i]);
            }

            الان برای حالت بالا فقط این دستور که LED رو روشن می کنه
            *(BackData+1)=EEPROM_read(*(Data+1));
            if (BackData[1]==0x31)LED=1;
            حالا چرا این دستور کار نمی کنه؟
            *(BackData+0)=EEPROM_read(*(Data+0));
            if (BackData[0]==0x30)LED=1
            تو اين جهان 7 ميلياردي من معني ندارد و اگه تو اين دنيا فقط 1 نفر وجود داشت باز هم من معني نداشت

            دیدگاه


              #7
              پاسخ : کار نکردن E2PROM تو ورژن 2.05 کدویژن

              نوشته اصلی توسط sey22
              با تشکر منم همین کارو می کنم بالا این جوری مثال زدم ولی فقط اخرین بایت رو می خونه مثال زیر ببینید
              C[2]={0x30,0x31}

              for (i=0;i<2;i++){
              EEPROM_write(*(Data+i),C[i]);
              }

              الان برای حالت بالا فقط این دستور که LED رو روشن می کنه
              *(BackData+1)=EEPROM_read(*(Data+1));
              if (BackData[1]==0x31)LED=1;
              حالا چرا این دستور کار نمی کنه؟
              *(BackData+0)=EEPROM_read(*(Data+0));
              if (BackData[0]==0x30)LED=1
              برای نوشتن روی EEPROM به ازای هر نوشتن یک تاخیر پنج میلی ثانیه ای بایستی اضافه بشه

              دیدگاه


                #8
                پاسخ : کار نکردن E2PROM تو ورژن 2.05 کدویژن

                مرسی
                من معمولا 1 میکرو ثانیه می زاشتم ولی این سری تا 10 میلی ثانیه هم گذاشتم کار نکرد حالا یه بار دیگه امنحان می کتم
                تو اين جهان 7 ميلياردي من معني ندارد و اگه تو اين دنيا فقط 1 نفر وجود داشت باز هم من معني نداشت

                دیدگاه


                  #9
                  پاسخ : کار نکردن E2PROM تو ورژن 2.05 کدویژن

                  ببخشید. ولی اگه آرگومان اول آدرس بایت مورد نظر در ایپرام باشه که این کد ها غلطه. ضمنا:

                  *(Data+i)

                  همون

                  Data [ i ]

                  هست.

                  دیدگاه


                    #10
                    پاسخ : کار نکردن E2PROM تو ورژن 2.05 کدویژن

                    نوشته اصلی توسط رضا آقازاده
                    ببخشید. ولی اگه آرگومان اول آدرس بایت مورد نظر در ایپرام باشه که این کد ها غلطه. ضمنا:

                    *(Data+i)

                    همون

                    Data [ i ]

                    هست.
                    منظور شمارو نفهمیدم تاخیر هم گذاشتم کار نکرد مشکل اینه که یه ارایه رو تو ارایه اییپرام می ریزم فقط اخریشو می شناسه در صورتی که اگه بیام مثلا 0x35 تو کل ارایه اییپرام بریزم تو همه می شناسش!چرا ارایه های می ریزم کار نمی کنه
                    تو اين جهان 7 ميلياردي من معني ندارد و اگه تو اين دنيا فقط 1 نفر وجود داشت باز هم من معني نداشت

                    دیدگاه


                      #11
                      پاسخ : کار نکردن E2PROM تو ورژن 2.05 کدویژن

                      یه نکته جدید من اگه یه بایت مثل 0x35 وبریزم تو هر خونه از ارایه اییپرام می ره تو کل ارایم عدد 0x35 میشینه!!اخه چرا؟هر چی هست از این دستور
                      EEPROM_write(*(Data+1),0x35);
                      یا از این
                      *(BackData+1)=EEPROM_read(*(Data+1));
                      یاز کدومه؟من ارایه data هم رو این جوری معرفی کردم
                      unsigned char eeprom Data[40];
                      به خدا من تو ورژن قدیمی اصلا از این مشکلا نداشتم :-((
                      تو اين جهان 7 ميلياردي من معني ندارد و اگه تو اين دنيا فقط 1 نفر وجود داشت باز هم من معني نداشت

                      دیدگاه


                        #12
                        پاسخ : کار نکردن E2PROM تو ورژن 2.05 کدویژن

                        بهتره متغیر همانطور تعریف بشه که تابع قبول میکنه مثلا
                        unsigned int data[40];

                        دیدگاه


                          #13
                          پاسخ : کار نکردن E2PROM تو ورژن 2.05 کدویژن

                          نوشته اصلی توسط gtnfs
                          بهتره متغیر همانطور تعریف بشه که تابع قبول میکنه مثلا
                          unsigned int data[40];
                          این کارم کردم کار نکرد در ضمن فرقی نمی کنه من دارم کارکتر می ریزم اگه کارکتر تعریف می کردم اینتیجر می رختم مشکل می خورد.
                          الان فقط نمی دونم چرا یه بایت میرزم تو خونه مثلا 2 تو اون وقت تمام 40 تا خونه ام هم ریخته میشه :angry:
                          تو اين جهان 7 ميلياردي من معني ندارد و اگه تو اين دنيا فقط 1 نفر وجود داشت باز هم من معني نداشت

                          دیدگاه


                            #14
                            پاسخ : کار نکردن E2PROM تو ورژن 2.05 کدویژن

                            جناب آقا زاده که جواب رو نوشتن
                            شما برای تعریف یک متغیر در eeprom مثل تعریف متغیر در حافظه ram استفاده می کنی با اضافه کردن یک پیشوند eeprom

                            eeprom char test[40];

                            برای استفاده هم مثل دیگر متغیرها استفاده می کنید و نیاز به استفاده از تابع خاصی نیست

                            test[ i]=85;
                            هیچ کس و هیچ چیز نمی تونه مانع رسیدنت به آرزوهات بشه مگر خودت

                            دیدگاه


                              #15
                              پاسخ : پاسخ : کار نکردن E2PROM تو ورژن 2.05 کدویژن

                              نوشته اصلی توسط savameri
                              جناب آقا زاده که جواب رو نوشتن
                              شما برای تعریف یک متغیر در eeprom مثل تعریف متغیر در حافظه ram استفاده می کنی با اضافه کردن یک پیشوند eeprom

                              eeprom char test[40];

                              برای استفاده هم مثل دیگر متغیرها استفاده می کنید و نیاز به استفاده از تابع خاصی نیست

                              test[ i]=85;
                              مرسی از راهنماییت دوست عزیز
                              من می خواستم با توابع کدویژن بنویسم چون این روش معمول که فرمودین خاطره خوبی ازش ندارم دیتام خیلی اشتباه می شد (حالاش شایدم مشکل از جای دیگه بود :mrgreen: )باسه همین با توابع که کار می کنم خیلی مطمئنم هرچند حالا یه بار دیگه مجبورم از اون روش برم ان شاله که دیگه مشکل نمی خورم مرسی از همه :applause:
                              تو اين جهان 7 ميلياردي من معني ندارد و اگه تو اين دنيا فقط 1 نفر وجود داشت باز هم من معني نداشت

                              دیدگاه

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