اطلاعیه

Collapse
No announcement yet.

نوشتن روی ds1307 byte _56 RAM

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

    نوشتن روی ds1307 byte _56 RAM

    سلام دوستان من میخوام یک سری اطلاعات رو برای اینکه همیشه مهمه و نباید با ریست شدن یا رفتن برق از بین نره واسه همون میخوام روی RAM DS1307 بنویسم دوستان میشه راهنمایی کنند چه جوری باید تو کدویژن روی RAM بنویسم اگه دوستان راهنمایی کنند ممنون میشم
    سه کس را شنیدم که غیبت رواست وز این درگذشتی چهارم خطاست
    یکی پادشاهی ملامت پسند کز او بر دل خلق بینی گزند
    حلال است از او نقل کردن خبر مگر خلق باشند از او بر حذر
    دوم پرده بر بی حیائی متن که خود میآ‌درد پرده بر خویشتن
    ز حوضش مدار ای برادر نگاه که او میآ‌درافتد به گردن به چاه
    سوم کژ ترازوی ناراست خوی ز فعل بدش هرچه دانی بگوی

    #2
    پاسخ : نوشتن روی ds1307 byte _56 RAM

    اینطور که دیتاشیت میگه باید از همون روشی که مقادیر ساعت و دقیقه رو وارد می کنی استفاده کنی. البته باید آدرس های مربوط به حافظه را ( 08 تا 3F) بکار ببری.
    دلا یاران سه قسمند ار بدانی
    زبانی اند و نانی اند و جانی
    به نانی نان بده از در برانش
    محبت کن به یاران زبانی
    و لیکن یار جانی را به دست آر
    به جانش جان بده تا می توانی

    دیدگاه


      #3
      پاسخ : نوشتن روی ds1307 byte _56 RAM

      دوست عزیز سلام من اینی که شما فرمودید دقیقا دیده بودم اما سوال من اینه که از چه دستوری استفاده کنم واسه نوشتن البته تو codevision ممنون میشم کسی راهنمایی کنه
      سه کس را شنیدم که غیبت رواست وز این درگذشتی چهارم خطاست
      یکی پادشاهی ملامت پسند کز او بر دل خلق بینی گزند
      حلال است از او نقل کردن خبر مگر خلق باشند از او بر حذر
      دوم پرده بر بی حیائی متن که خود میآ‌درد پرده بر خویشتن
      ز حوضش مدار ای برادر نگاه که او میآ‌درافتد به گردن به چاه
      سوم کژ ترازوی ناراست خوی ز فعل بدش هرچه دانی بگوی

      دیدگاه


        #4
        پاسخ : نوشتن روی ds1307 byte _56 RAM

        سلام برای اینکه بتونی با دستورات ds1307 کار کنی باید از codewizard برنامه codevision که تعیین آی سی i2c است استفاده نکنی!! همونطوری که می بینی 2تا tab واسه i2c تو codewizard برنامه codevision وجود داره . حالا از دستورات استاندارد i2c استفاده کن . در این حالت حتما باید ds1307 رو به پایه های خود sda و scl میکرو وصل کنی.

        دیدگاه


          #5
          پاسخ : نوشتن روی ds1307 byte _56 RAM

          دوست عزیز یعنی تنها راه همینه یا یکی از راه ها همینه من pcb رو طراحی کردم و الان انبوه ازش تولید شده امکانش برام وجود نداره ممکنه کسی راهنمایی کنه که چگونه میشه با کد ویژن این کار رو کرد دوستانی که تجربه دارند همکاری کنند ممنون میشم
          سه کس را شنیدم که غیبت رواست وز این درگذشتی چهارم خطاست
          یکی پادشاهی ملامت پسند کز او بر دل خلق بینی گزند
          حلال است از او نقل کردن خبر مگر خلق باشند از او بر حذر
          دوم پرده بر بی حیائی متن که خود میآ‌درد پرده بر خویشتن
          ز حوضش مدار ای برادر نگاه که او میآ‌درافتد به گردن به چاه
          سوم کژ ترازوی ناراست خوی ز فعل بدش هرچه دانی بگوی

          دیدگاه


            #6
            پاسخ : نوشتن روی ds1307 byte _56 RAM

            دوست عزیز کامپایلر ها این پروتکل رو به صورت نرم افزاری پیاده سازی می کنن. البته قطعا محدودیت وجود داره . مثل همین کاری که شما میخواین بکنین ولی codevision نداره. شما اگه می خوای این کارو انجام بدی باید i2c رو خودت بنویسی

            دیدگاه


              #7
              پاسخ : نوشتن روی ds1307 byte _56 RAM

              راستش میخواستم به دوستانی که اطلاعات دقیقی در مورد چیزی ندارند توصیه کنم با حرف های نا گاهانه خودشون مردمو از کارو زندگی نندازن این دوستمون همچون با اطمینان گفت که CIDEVISION نمیتونه این کار رو انجام بده که ما از کار کردن و جواب گرفتن نا امید شدیم در حالی که همه دستورات مربوط به این کار رو از توی HELP CODEVISION میشه پیدا کرد و نوشت به هر حال آقایون و خانم هایی که چیزی رو نمیدونید اینجور قاطعانه اظهار نظر نکنید تا ملت هم با امیدواری کاراشونو به سر انجام برسونند
              سه کس را شنیدم که غیبت رواست وز این درگذشتی چهارم خطاست
              یکی پادشاهی ملامت پسند کز او بر دل خلق بینی گزند
              حلال است از او نقل کردن خبر مگر خلق باشند از او بر حذر
              دوم پرده بر بی حیائی متن که خود میآ‌درد پرده بر خویشتن
              ز حوضش مدار ای برادر نگاه که او میآ‌درافتد به گردن به چاه
              سوم کژ ترازوی ناراست خوی ز فعل بدش هرچه دانی بگوی

              دیدگاه


                #8
                پاسخ : نوشتن روی ds1307 byte _56 RAM

                اگه منظورتون منم که فکر می کنم یا منظور منو متوجه نشدید یا ...

                می بینید که codewizard برنامه 2 تا tab واسه i2c داره. اگه شما از تب i2c استفاده کنین ، می بینین که فقط از چیپ هایی که تو اونجا معرفی شدم می تونین استفاده کنین. حالا مثلا واسه خوندن ساعت از ds1307 شما چند تا تابع بیشتر ندارید مثل:rtc_get_time(&h,&m,&s); و ...
                اگه خودتون هلپ رو کامل مطالعه کرده باشین می بینین که برای ds1307 تابعی که روز هفته رو بهتون بده یا بتوننین به رم داخلی دسترسی داشته باشین وجود نداره.
                برای اینکه بتونین به تمام قابلیت های یک ای سی i2c دسترسی داشته باشین باید اون رو روی پایه های sda , scl ببندین . حالا می تونین از توابع سطح پایین i2c مثل ارسال دیتا و خوندن دیتا استفاده کنین یا از ack استفاده کنین.
                اگر اینهایی که ن گفتم رو قبول ندارین پس لطف کنین یه برنامه که از i2c به صورت نرم افزاری استفاده شده و می تونه روز هفته رو از روی خود ds1307 بده بذارین . در این صورت من از همه به خاطر حرف غیر علمی خودم عذر خوای می کنم در غیر این صورت شما باید......!

                دیدگاه


                  #9
                  پاسخ : نوشتن روی ds1307 byte _56 RAM

                  ببین دوست عزیز برای نوشتن و خواندن از i2c در کدویژن حتما نباید از sda و scl میکرو استفاده کرد بلکه میشه با دستورات c از هذ پایه ای که وصله خوند من با این دستورات براحتی نوشتم اما برای خوندن مشکل دارم چون نمی دونم که باید آدرس رو بدم بعد بخونم یا نه آدرس که میدم 255 میخونه اما آدرس که ندم 7 میخونه میخواستم دوستانی که اطلاعات دارند راهنمایی کنند اینم چند خطی از برنامه که کار نوشتن و سپس خواندن رو قراره روی ds1307 انجام بده
                  i2c_start();
                  i2c_write(0XD0);
                  i2c_write(2);
                  i2c_write(11);
                  i2c_stop();


                  i2c_start();
                  i2c_write(0XD1);
                  این خط وقتی اضافه میشه قاطی میکنه //i2c_write(2);

                  data=i2c_read(0);
                  ltoa(data+1, ram);
                  i2c_stop();
                  سه کس را شنیدم که غیبت رواست وز این درگذشتی چهارم خطاست
                  یکی پادشاهی ملامت پسند کز او بر دل خلق بینی گزند
                  حلال است از او نقل کردن خبر مگر خلق باشند از او بر حذر
                  دوم پرده بر بی حیائی متن که خود میآ‌درد پرده بر خویشتن
                  ز حوضش مدار ای برادر نگاه که او میآ‌درافتد به گردن به چاه
                  سوم کژ ترازوی ناراست خوی ز فعل بدش هرچه دانی بگوی

                  دیدگاه


                    #10
                    پاسخ : نوشتن روی ds1307 byte _56 RAM

                    نوشته اصلی توسط مدارپردازان آسیا
                    ببین دوست عزیز برای نوشتن و خواندن از i2c در کدویژن حتما نباید از sda و scl میکرو استفاده کرد بلکه میشه با دستورات c از هذ پایه ای که وصله خوند من با این دستورات براحتی نوشتم اما برای خوندن مشکل دارم چون نمی دونم که باید آدرس رو بدم بعد بخونم یا نه آدرس که میدم 255 میخونه اما آدرس که ندم 7 میخونه میخواستم دوستانی که اطلاعات دارند راهنمایی کنند اینم چند خطی از برنامه که کار نوشتن و سپس خواندن رو قراره روی ds1307 انجام بده
                    سلام
                    اینجوری که شما نوشتید(بدون اون خط) در واقع داده داخل آخرین آدرسی که باهاش کار کردید رو بهتون میده.
                    دیتا شیت DS1307 یکم بد توضیح داده. اگه دیتاشیت EEPROM های I2C مثلاً 24c04 رو بخونید بهتر گفته.

                    برای این منظور باید دستورات زیر رو پیاده کنید:

                    start
                    send device address(write)l
                    poll acknowledge
                    send word address
                    poll acknowledge
                    start
                    send device address(read)l
                    read data
                    no acknowledge*
                    stop

                    البته من سورس توابعی C رو ندیدم ولی فکر کنم خودشون acknowledge polling رو انجام میدن.
                    * no acknowledge هم یعنی اینکه SDAآ‌ رو 1 کنید و یه بار کلاک بزنید تا کار خوندن تموم بشه.

                    موفق باشید

                    دیدگاه


                      #11
                      پاسخ : نوشتن روی ds1307 byte _56 RAM

                      سلام دوست عزیزم ممنونم که راهنمای کردی اما من همه این راه ها رو امتحان کردم اما موفق نشدم جواب بگیرم این کاملترین برنامه ای هست که نوشتم نگاه کنید :
                      i2c_start();
                      i2c_write(0XD1);
                      i2c_write(0X01);
                      i2c_start();
                      i2c_write(0XD1 | 1);
                      data=i2c_read(0);
                      i2c_stop();
                      اما بار هم کار نمیکنه اینو درست طبق دستور دیتا شیت و help نوشتم دوستان اگه راهنمایی کنند ممنون میشم
                      سه کس را شنیدم که غیبت رواست وز این درگذشتی چهارم خطاست
                      یکی پادشاهی ملامت پسند کز او بر دل خلق بینی گزند
                      حلال است از او نقل کردن خبر مگر خلق باشند از او بر حذر
                      دوم پرده بر بی حیائی متن که خود میآ‌درد پرده بر خویشتن
                      ز حوضش مدار ای برادر نگاه که او میآ‌درافتد به گردن به چاه
                      سوم کژ ترازوی ناراست خوی ز فعل بدش هرچه دانی بگوی

                      دیدگاه

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