سلام دوستان من میخوام یک سری اطلاعات رو برای اینکه همیشه مهمه و نباید با ریست شدن یا رفتن برق از بین نره واسه همون میخوام روی RAM DS1307 بنویسم دوستان میشه راهنمایی کنند چه جوری باید تو کدویژن روی RAM بنویسم اگه دوستان راهنمایی کنند ممنون میشم
اطلاعیه
Collapse
No announcement yet.
نوشتن روی ds1307 byte _56 RAM
Collapse
X
-
نوشتن روی ds1307 byte _56 RAM
سه کس را شنیدم که غیبت رواست وز این درگذشتی چهارم خطاست
یکی پادشاهی ملامت پسند کز او بر دل خلق بینی گزند
حلال است از او نقل کردن خبر مگر خلق باشند از او بر حذر
دوم پرده بر بی حیائی متن که خود میآدرد پرده بر خویشتن
ز حوضش مدار ای برادر نگاه که او میآدرافتد به گردن به چاه
سوم کژ ترازوی ناراست خوی ز فعل بدش هرچه دانی بگوی -
پاسخ : نوشتن روی ds1307 byte _56 RAM
اینطور که دیتاشیت میگه باید از همون روشی که مقادیر ساعت و دقیقه رو وارد می کنی استفاده کنی. البته باید آدرس های مربوط به حافظه را ( 08 تا 3F) بکار ببری.دلا یاران سه قسمند ار بدانی
زبانی اند و نانی اند و جانی
به نانی نان بده از در برانش
محبت کن به یاران زبانی
و لیکن یار جانی را به دست آر
به جانش جان بده تا می توانی
-
پاسخ : نوشتن روی ds1307 byte _56 RAM
دوست عزیز سلام من اینی که شما فرمودید دقیقا دیده بودم اما سوال من اینه که از چه دستوری استفاده کنم واسه نوشتن البته تو codevision ممنون میشم کسی راهنمایی کنهسه کس را شنیدم که غیبت رواست وز این درگذشتی چهارم خطاست
یکی پادشاهی ملامت پسند کز او بر دل خلق بینی گزند
حلال است از او نقل کردن خبر مگر خلق باشند از او بر حذر
دوم پرده بر بی حیائی متن که خود میآدرد پرده بر خویشتن
ز حوضش مدار ای برادر نگاه که او میآدرافتد به گردن به چاه
سوم کژ ترازوی ناراست خوی ز فعل بدش هرچه دانی بگوی
دیدگاه
-
پاسخ : نوشتن روی ds1307 byte _56 RAM
سلام برای اینکه بتونی با دستورات ds1307 کار کنی باید از codewizard برنامه codevision که تعیین آی سی i2c است استفاده نکنی!! همونطوری که می بینی 2تا tab واسه i2c تو codewizard برنامه codevision وجود داره . حالا از دستورات استاندارد i2c استفاده کن . در این حالت حتما باید ds1307 رو به پایه های خود sda و scl میکرو وصل کنی.
دیدگاه
-
پاسخ : نوشتن روی ds1307 byte _56 RAM
دوست عزیز یعنی تنها راه همینه یا یکی از راه ها همینه من pcb رو طراحی کردم و الان انبوه ازش تولید شده امکانش برام وجود نداره ممکنه کسی راهنمایی کنه که چگونه میشه با کد ویژن این کار رو کرد دوستانی که تجربه دارند همکاری کنند ممنون میشمسه کس را شنیدم که غیبت رواست وز این درگذشتی چهارم خطاست
یکی پادشاهی ملامت پسند کز او بر دل خلق بینی گزند
حلال است از او نقل کردن خبر مگر خلق باشند از او بر حذر
دوم پرده بر بی حیائی متن که خود میآدرد پرده بر خویشتن
ز حوضش مدار ای برادر نگاه که او میآدرافتد به گردن به چاه
سوم کژ ترازوی ناراست خوی ز فعل بدش هرچه دانی بگوی
دیدگاه
-
پاسخ : نوشتن روی ds1307 byte _56 RAM
راستش میخواستم به دوستانی که اطلاعات دقیقی در مورد چیزی ندارند توصیه کنم با حرف های نا گاهانه خودشون مردمو از کارو زندگی نندازن این دوستمون همچون با اطمینان گفت که CIDEVISION نمیتونه این کار رو انجام بده که ما از کار کردن و جواب گرفتن نا امید شدیم در حالی که همه دستورات مربوط به این کار رو از توی HELP CODEVISION میشه پیدا کرد و نوشت به هر حال آقایون و خانم هایی که چیزی رو نمیدونید اینجور قاطعانه اظهار نظر نکنید تا ملت هم با امیدواری کاراشونو به سر انجام برسونندسه کس را شنیدم که غیبت رواست وز این درگذشتی چهارم خطاست
یکی پادشاهی ملامت پسند کز او بر دل خلق بینی گزند
حلال است از او نقل کردن خبر مگر خلق باشند از او بر حذر
دوم پرده بر بی حیائی متن که خود میآدرد پرده بر خویشتن
ز حوضش مدار ای برادر نگاه که او میآدرافتد به گردن به چاه
سوم کژ ترازوی ناراست خوی ز فعل بدش هرچه دانی بگوی
دیدگاه
-
پاسخ : نوشتن روی ds1307 byte _56 RAM
اگه منظورتون منم که فکر می کنم یا منظور منو متوجه نشدید یا ...
می بینید که codewizard برنامه 2 تا tab واسه i2c داره. اگه شما از تب i2c استفاده کنین ، می بینین که فقط از چیپ هایی که تو اونجا معرفی شدم می تونین استفاده کنین. حالا مثلا واسه خوندن ساعت از ds1307 شما چند تا تابع بیشتر ندارید مثل:rtc_get_time(&h,&m,&s); و ...
اگه خودتون هلپ رو کامل مطالعه کرده باشین می بینین که برای ds1307 تابعی که روز هفته رو بهتون بده یا بتوننین به رم داخلی دسترسی داشته باشین وجود نداره.
برای اینکه بتونین به تمام قابلیت های یک ای سی i2c دسترسی داشته باشین باید اون رو روی پایه های sda , scl ببندین . حالا می تونین از توابع سطح پایین i2c مثل ارسال دیتا و خوندن دیتا استفاده کنین یا از ack استفاده کنین.
اگر اینهایی که ن گفتم رو قبول ندارین پس لطف کنین یه برنامه که از i2c به صورت نرم افزاری استفاده شده و می تونه روز هفته رو از روی خود ds1307 بده بذارین . در این صورت من از همه به خاطر حرف غیر علمی خودم عذر خوای می کنم در غیر این صورت شما باید......!
دیدگاه
-
پاسخ : نوشتن روی 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();
سه کس را شنیدم که غیبت رواست وز این درگذشتی چهارم خطاست
یکی پادشاهی ملامت پسند کز او بر دل خلق بینی گزند
حلال است از او نقل کردن خبر مگر خلق باشند از او بر حذر
دوم پرده بر بی حیائی متن که خود میآدرد پرده بر خویشتن
ز حوضش مدار ای برادر نگاه که او میآدرافتد به گردن به چاه
سوم کژ ترازوی ناراست خوی ز فعل بدش هرچه دانی بگوی
دیدگاه
-
پاسخ : نوشتن روی 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 کنید و یه بار کلاک بزنید تا کار خوندن تموم بشه.
موفق باشید
دیدگاه
-
پاسخ : نوشتن روی 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 نوشتم دوستان اگه راهنمایی کنند ممنون میشمسه کس را شنیدم که غیبت رواست وز این درگذشتی چهارم خطاست
یکی پادشاهی ملامت پسند کز او بر دل خلق بینی گزند
حلال است از او نقل کردن خبر مگر خلق باشند از او بر حذر
دوم پرده بر بی حیائی متن که خود میآدرد پرده بر خویشتن
ز حوضش مدار ای برادر نگاه که او میآدرافتد به گردن به چاه
سوم کژ ترازوی ناراست خوی ز فعل بدش هرچه دانی بگوی
دیدگاه
دیدگاه