سلام من میخواستم ببینمم چطوری میشه 24C512 رو به میکرو وصل کرد ، توی سایت خیلی سرچ کردم ولی همشون نصفه نیمه رها شده بودن ، ممنون میشم جواب بدید .
اطلاعیه
Collapse
No announcement yet.
eeprom & codvision
Collapse
X
-
پاسخ : eeprom & codvision
ممنون آقای اکبری . ولی راستش من چیزی از اون لایبرری سر در نیاوردم (دلیلشم اطلاعاته کم خودمه :redface، الان هم به فکرم افتاده که خودم یکی بنویسم .
حالا یه چیزی نوشتم ولی جواب نمیده ، برای نوشتن تو آی سی از این کد :
i2c_start();برای خوندن هم از این کد:
i2c_write(0x0000);
i2c_write(0x0000);
i2c_write(0x07);
i2c_stop();
delay_ms(10);
ولی رو LCD همش عدد 255 رو نشون میده :question:
i2c_start();
i2c_write(0x0000);
i2c_write(0x0000);
i2c_start();
i2c_write(0x0000 | 1);
data = i2c_read(0);
i2c_stop();
delay_ms(10);
lcd_gotoxy(0,0);
sprintf(buffer,"%d",data);
lcd_puts(buffer);
من از 24C512 دارم استفاده میکنمA-Hosseini
دیدگاه
-
پاسخ : eeprom & codvision
سلام دوست عزیز
کتابخونه مطلب خاصی نداره
تنها چیزی که ممکنه کمی گیج کننده باشه define های اول برنامه هستش
برای ارسال هر دستوری ابتدا باید یک مکث کوتاه کرد بعد کلاک و سلکت رو فعال کنی و فرمان رو بفرستی
دیتاشیت رو بخونی متوجه میشی
اگه با define ها مشکل داری جایگزینشون رو بزار.
رعایت کردن فعال کردن کلاک و سلکت مهمه
این کتابخونه رو هم آقای mostafaka (اگه اشتباه نکنم (ایکیوسان :mrgreen) برای avr gcc نوشتن که به code vision تبدیل شده
از ایشون بپرسین بهتر میتونن جواب بدن
دیدگاه
-
پاسخ : eeprom & codvision
بازهم ازتون ممنونم آقای اکبری ، ولی من به سرم زده خودم یه لایبرری برای کارم بنویسم .
من تو برنامه اولم چند تا اشکال اساسی داشتم که اونارو پیدا کردم ،ولی باز هم عددی که روی ال سی دی نشون میده همون 255 هستش .
این سری برنامم رو اینجوری نوشتم
برای نوشتن تو آی سی :
i2c_start();
i2c_write(0xa0);
i2c_write(0x000);
i2c_write(0x07);
i2c_stop();
delay_ms(10);
و برای خوندن از آی سی از کد :
استفاده کردم .
i2c_start();
i2c_write(0xa0);
i2c_write(0x000);
i2c_start();
i2c_write(0xa1);
data = i2c_read(0);
delay_ms(10);
i2c_stop();
lcd_gotoxy(0,0);
sprintf(buffer,"%u",data);
lcd_puts(buffer);
delay_ms(10);
اشکال اصلیم تو برنامه قبلی درست ست نکردن DEVICE ADDRESS بود که طبق دیتاشیت درستش کردم .
ولی الان شکم تو WORD ADDRESS هستش تو تراشه 24C512 دقیقا از چی باید استفاده میکردم ؟
ممنون میشم اگه کسی جواب بده.A-Hosseini
دیدگاه
-
پاسخ : eeprom & codvision
نوشته اصلی توسط electronet_irممنون آقای اکبری . ولی راستش من چیزی از اون لایبرری سر در نیاوردم (دلیلشم اطلاعاته کم خودمه :redface، الان هم به فکرم افتاده که خودم یکی بنویسم .
حالا یه چیزی نوشتم ولی جواب نمیده ، برای نوشتن تو آی سی از این کد :
i2c_start();برای خوندن هم از این کد:
i2c_write(0x0000);
i2c_write(0x0000);
i2c_write(0x07);
i2c_stop();
delay_ms(10);
ولی رو LCD همش عدد 255 رو نشون میده :question:
i2c_start();
i2c_write(0x0000);
i2c_write(0x0000);
i2c_start();
i2c_write(0x0000 | 1);
data = i2c_read(0);
i2c_stop();
delay_ms(10);
lcd_gotoxy(0,0);
sprintf(buffer,"%d",data);
lcd_puts(buffer);
من از 24C512 دارم استفاده میکنم
توابع i2c و spi خود کدویژن یه روز در میون کار میکنن. شاید هم یه ورژن در میون.
برای اطمینان تو پروتئوس از ابزار i2c debugger استفاده کنید(همون جا که اسیلوسکوپ هست قرار داره.) و ببینید همش علامت سوال داره میاد، یا چیز دیگه. اگه علامت سوال بیاد یا برنامه ایراد داره، یا pullup نداره، یا ....
بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست
دیدگاه
-
پاسخ : eeprom & codvision
نوشته اصلی توسط electronet_irاین کاری که گفتید رو انجام دادم ، ولی من مقاومتهای پول پ رو تو مدار ( هم سخت افزار هم پروتئوس ) گذاشتم ، نمیدونم اشکال از کجاست . میشه نرم افزارمو یه چک کنید ؟ ممنون میشم.
پروتئوس همرو علامت سوال میداد. :question: :question: :question:
البته 512 رو نمیدونم ساپورت کنه یا نه. دیتاشیتش رو ندیدم.
بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست
دیدگاه
-
پاسخ : eeprom & codvision
نوشته اصلی توسط mostafahk
اگه پروتئوس علامت سوال بده که عمرا تو عمل جواب نمیده. مشکل از کدویژنه. این توابع start و stop , send و... که شما استفاده می کنید، همه باگ دارن. از کتابخونه ای که گذاشتن سر در بیارید راحت ترید.
البته 512 رو نمیدونم ساپورت کنه یا نه. دیتاشیتش رو ندیدم.سخته
A-Hosseini
دیدگاه
-
پاسخ : eeprom & codvision
اونقدر هم که فکر میکنی سخت نیست
کافیه پروتکل و سخت افزار این ارتباط رو خوب بخونی و بفهمی
همه این ارتباطات یک واحد تولید کلاک دارن و چند تا رجیستر که باید بدونی ازشون چطور باید استفاده کرد
یه مرجع خوب گیر بیارو بخون
من الان تو ذهنم نیست که توضیح بدم
اون توابع کتابخونه ای که آقای حیدری گذاشتن هم بر همین اساس نوشته شدن
دیدگاه
-
پاسخ : eeprom & codvision
من یه سری مطلب در مورد TWI تو کتابا پیدا کردم ،خوندم . اولین چیزی که رو که نظرمو جلب کرد این بود که حتما باید از پایه های SDA و SCL خود میکرو استفاده کرد . ( این خودش یه محدودیته ) ولی خوب اینم باید مثل پایه های دیگه (TX, RX و...) قبول کرد اولین قدم باید سخت افزارمو عوض کنم. (TWI یکم سخت به نظر اومد :redface: :redface: :redfaceA-Hosseini
دیدگاه
-
پاسخ : eeprom & codvision
TWI رو هم مثل Usart میشه به صورت نرم افزاری پیاده سازی کرد.
حتی از یوزارت هم راحت تر
اما بهتره برای شروع ، بهتره از همون امکانات سخت افزاری ای که میکرو فراهم آورده استفاده کنی
اگه فرصت کردم من هم یه مروری به مطالب گذشته میکنم و کمکت میکنم
هم سرم خیلی شلوغه و هم مشکل اصلیم حافظم هست که دیگه پیر شده :mrgreen:
دیدگاه
دیدگاه