آموزش کار با حافظه EEPROM خارجی(خواندن و نمایش عکس!بررویLCD)

در اين بخش مي‌توانيد آموزش و مثال‌های مرتبط با میکروکنترلرهای AVR را مشاهده بفرمایید

مدیران انجمن: SAMAN, sinaset, شوراي نظارت

Colonel II
Colonel II
نمایه کاربر
پست: 7545
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9280 بار
سپاس‌های دریافتی: 22029 بار

آموزش کار با حافظه EEPROM خارجی(خواندن و نمایش عکس!بررویLCD)

پست توسط sinaset » جمعه 5 شهریور 1395, 12:21 pm

بنام خداوند بخشنده و مهربان
باسلام

در این تاپیک به امید خدا آموزش کار کردن با حافظه EEPROM خارجی داده میشود.
تصویر
این حافظه کم حجم! و کم سرعت، ولی بسیار ارزان قیمت،می تواند نزدیک به 100 سال!!! اطلاعات را درون خود نگه دارد! این حافظه در بیشتر مدل ها می تواند تا 1 میلیون بار اطلاعات خود را حذف ! بدون انکه حافظه از کار بی افتاد!

*لازم به ذکر است حافظه های فلش،از همین مدل حافظه EEPROM الگوبرداری کرده است!

قیمت این ایسی از 200 تومان! تا چندین هزارتومان می باشد و همچنین حجم حافظه های که بیشتر در دسترس هستن از چند صد بایت تا چند مگابیت(و بیشتر) می باشد.

در این تاپیک سعی خواهیم کرد،ایسی ها EEPROM خارجی معرفی شود و همچنین انواع مثال ها به ان زده شود ..
تصویر
حافظه EEPROM با بسته بندی DIP
تصویر
حافظه EEPROM با بسته بندی SMD

فهرست آموزش ها تاپیک:


صفحه اول:
شرکت سازنده.
مدل ها
-مدل های AT24C01 و AT24C02 و AT24C04 و AT24C08 و AT24C16
-مدل های AT24C32 و AT24C64
-مدل های AT24C128 و AT24C256
-مدل AT24C512
-مدل AT24C1024
ارتباط با میکروکنترولر
پایه ها در ایسی هایی EEPROM
اما چطور باید با این ارتباط برقرار کرد.
اما نحویه برنامه نویسی و پرتئوس!
خواندن دیتا از ایسی
ارتباط با 4 ایسی EEPROM !
خواندن و نمایش عکس از حافظه EEPROM بر روی LCD!
..
باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.
با عرض پوزش،دیگر در انجمن حضور ندارم،که به پیام ها پاسخ بدم.

Colonel II
Colonel II
نمایه کاربر
پست: 7545
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9280 بار
سپاس‌های دریافتی: 22029 بار

Re: آموزش کار با حافظه EEPROM خارجی

پست توسط sinaset » یک شنبه 7 شهریور 1395, 2:30 pm

بنام خدا
باسلام


اما در ادامه..
شرکت سازنده.

ما در این تاپیک،ایسی ها EEPROM شرکت ATMEL( سازنده میکروکنترولرهای AVR) را بررسی خواهیم کرد .(بدیل اینکه می توان انها را در بازار پیدا کرد و همچنین به کمک پرتئوس انها را شبیه سازی کرد)

مدل ها

شرکت ATMEL ایسی ها EEPROM از ظرفیت 128 بایت تا 256 کیلوبایت را تولید می کند.
ایسی های که ما می خواهیم در این تاپیک بررسی کنیم،با واحد I2C (دوسیم ) می تواند کار کنند.

اما این ایسی ها در ویژگی ها و مشخصات باهم دیگر تفاوت های نیز دارند،که ما بصورت دسته دسته انها را معرفی می کنیم

*قبل از شروع،میزان حافظه ها EEPROM را بیت مشخص می کنند! به عنوان مثال 1024 بیت! که برای انکه متوجه بشویم،چند باید می باشد،باید ان را تقسیم بر 8 کنیم .(این نکته همیشه بخاطره داشته باشیم)

مدل های AT24C01 و AT24C02 و AT24C04 و AT24C08 و AT24C16
تصویر
تصویر
این مدل ها جزو،مدل های کم ظرفیت و قیمت ارزانتر سری ایسی ها EEPROM می باشد.

این مدل ها می توانند با فرکانس 100 کیلو هرتز (با ولتاژ 2.7 ) و 400 کیلوهرتز (با ولتاژ 5 ) کار و فعالیت کنند.

چرخه ایسی ها برای نوشتن نیاز به یک زمان 5 میلی ثانیه دارد!(همان تاخیری که در پست اول به ان اشاره شد)

[HIGHLIGHT=#00b050]عدد بعد از AT24cXX میزان حافظه EEPROM به معنی کیلو بیت می باشد .
 
که اینطور می باشند :

AT24C01 ، عد 1 به معنی 1024 بیت می باشد پس برای مشخص شدن ظرفیت به بایت 1024 تقسیم بر 8 میشود 128 بایت.
AT24C02 ، عد 2 به معنی 2024 بیت می باشد پس برای مشخص شدن ظرفیت به بایت 2048 تقسیم بر 8 میشود 256 بایت.
AT24C04 ، عد 4 به معنی 4096 بیت می باشد پس برای مشخص شدن ظرفیت به بایت 4096 تقسیم بر 8 میشود 512 بایت.
AT24C08 ، عد 8 به معنی 8192 بیت می باشد پس برای مشخص شدن ظرفیت به بایت 8192 تقسیم بر 8 میشود 1024 بایت.(که برای کیلو بایت 1024 تقسیم بر 1024 میشود،که نتیجه 1 کیلوبایت ظرفیت میشود)
AT24C16 ، عد 16 به معنی 16384 بیت می باشد پس برای مشخص شدن ظرفیت به بایت 16384 تقسیم بر 8 میشود 2024 بایت.(که برای کیلو بایت 2024 تقسیم بر 1024 میشود،که نتیجه 2 کیلوبایت ظرفیت میشود)

می توان اطلاعات درون این ایسی ها را تا 1 میلیون بار نوشت و از دوباره پاک کرد!( چرخه کامل)
این ایسی ها می توانند تا 100 سال ! اطلاعات را درون خودشان نگه دارند .

مدل های AT24C32 و AT24C64

تصویر
  مدل از ایسی ها EEPROM می تواند به فرکانس 100 کیلوهرتز (با ولتاژ 1.8 و 2.5 و 2.7 ) و فرکانس 400 کیلوهرتز(با ولتاژ 5) کار    ایسی ها برای نوشتن نیاز به یک زمان 10 میلی ثانیه دارد! 

ظرفیت ایسی ها:

AT24C32 ، عد 32 به معنی 32,768 بیت می باشد پس برای مشخص شدن ظرفیت به بایت 32,768 تقسیم بر 8 میشود 4096 بایت.(که برای کیلو بایت 4096 تقسیم بر 1024 میشود،که نتیجه 4 کیلوبایت ظرفیت میشود)
AT24C64 ، عد 64 به معنی 65,536 بیت می باشد پس برای مشخص شدن ظرفیت به بایت 65,536 تقسیم بر 8 میشود 8192 بایت.(که برای کیلو بایت 8192 تقسیم بر 1024 میشود،که نتیجه 8 کیلوبایت ظرفیت میشود)

می توان اطلاعات درون این ایسی ها را تا 1 میلیون بار نوشت و از دوباره پاک کرد!( چرخه کامل)
این ایسی ها می توانند تا 100 سال ! اطلاعات را درون خودشان نگه دارند .

مدل های AT24C128 و AT24C256
تصویر
  مدل از ایسی ها می توانند با فرکانس 100 کیلوهرتز (در ولتاژ 1.8) و 400کیلوهرتز(در ولتاژ 2.5 و 2.7) و 1 مگاهرتز( در ولتاژ 5 ) کار کند.   ایسی ها برای نوشتن نیاز به یک زمان 5 میلی ثانیه دارد! 
ظرفیت ایسی ها:

AT24C128 ، عد 128 به معنی 131,072 بیت می باشد پس برای مشخص شدن ظرفیت به بایت 131,072 تقسیم بر 8 میشود 16384 بایت.(که برای کیلو بایت 16384 تقسیم بر 1024 میشود،که نتیجه 16 کیلوبایت ظرفیت میشود)
AT24C256 ، عد 256 به معنی 262,144 بیت می باشد پس برای مشخص شدن ظرفیت به بایت262,144 تقسیم بر 8 میشود 32768 بایت.(که برای کیلو بایت 32768 تقسیم بر 1024 میشود،که نتیجه 32 کیلوبایت ظرفیت میشود)

می توان اطلاعات درون این ایسی ها را تا 1 میلیون بار نوشت و از دوباره پاک کرد!( چرخه کامل)
این ایسی ها می توانند تا 40 سال اطلاعات را درون خودشان نگه دارند .

مدل AT24C512
تصویر
  مدل از ایسی ها می توانند با فرکانس 100 کیلوهرتز (در ولتاژ 1.8) و 400کیلوهرتز(در ولتاژ 2.7) و 1 مگاهرتز( در ولتاژ 5 ) کار کند.   ایسی ها برای نوشتن نیاز به یک زمان 5 میلی ثانیه دارد!   این مدل ایسی:   ، عد 512 به معنی 524,288 بیت می باشد پس برای مشخص شدن ظرفیت به بایت 524,288 تقسیم بر 8 میشود 65536 بایت.(که برای کیلو بایت65536 تقسیم بر 1024 میشود،که نتیجه 64 کیلوبایت ظرفیت میشود)   توان اطلاعات درون این ایسی ها را تا 100هزار بار نوشت و از دوباره پاک کرد!( چرخه کامل)
این ایسی ها می توانند تا 40 سال اطلاعات را درون خودشان نگه دارند .  مدل AT24C1024 
تصویر
این مدل از ایسی ها می توانند با فرکانس 400کیلوهرتز(در ولتاژ 2.7) و 1 مگاهرتز( در ولتاژ 5 ) کار کند.

  ایسی ها برای نوشتن نیاز به یک زمان 5 میلی ثانیه دارد!  ظرفیت این مدل ایسی:  AT24C512 ، عد 1024 به معنی 1,048,576 بیت می باشد پس برای مشخص شدن ظرفیت به بایت 1,048,576 تقسیم بر 8 میشود 131,072 بایت.(که برای کیلو بایت 131,072 تقسیم بر 1024 میشود،که نتیجه 128 کیلوبایت ظرفیت میشود)   توان اطلاعات درون این ایسی ها را تا 100هزار بار نوشت و از دوباره پاک کرد!( چرخه کامل)
این ایسی ها می توانند تا 40 سال اطلاعات را درون خودشان نگه دارند . 
  مدل های معروفی شده،تقریبا معروفترین مدل های ایسی های EEPROM شرکت ATMEL می باشد .انشالله در پست های اینده نحویه ارتباطت با ایسی بیشتر توضیح داده خواهد شد.  . 
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.
با عرض پوزش،دیگر در انجمن حضور ندارم،که به پیام ها پاسخ بدم.

Colonel II
Colonel II
نمایه کاربر
پست: 7545
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9280 بار
سپاس‌های دریافتی: 22029 بار

Re: آموزش کار با حافظه EEPROM خارجی

پست توسط sinaset » سه شنبه 16 شهریور 1395, 9:33 am

بنام خدا
باسلام

ارتباط با میکروکنترولر

این ایسی همانجور که در ابتدا گفته شده ،با ارتباط I2C (یا همون ارتباط دوسیمه) می تواند به میکروکنترولر ارتباط برقرار کنند. همانطور که مستحضر هستید،در ارتباطه I2C یک سیم برای Clock و یک سیم دیگر برای DATA های ما می باشد.
تصویر
تصویر از ایسی at25c64 :
در ایسی بالا،پایه Scl و Sda به میکروکنترولر اتصال پیدا کرده است
همانجور که می ببینید مقاومت ها پول آپ انها نیز اتصال پیدا کرده است
 *در ارتباط I2C همیشه باید مقاومت پول آپ بر روی پایه ها (SDA (DATA و(SCL(CLOCK اتصال پیدا کند. 

پایه ها در ایسی هایی EEPROM

پایه ها در ایسی ها EEPROM همگی شبیه به هم می باشند! فقط در بعضی مدل ها یک یا دو پایه (ادرسی دهی ) کمتر دارند!

تصویر
 پایه 1 یا AD1 تا پایه 3 یا AD3 برای آدرسی دهی ایسی می باشند!(برای زمانی که شما قصد داشته باشید،چندین ایسی EEPROM را در یک خط i2C،مورد استفاده قرار دهید) و در صورتی که می خواهید فقط از یک ایسی EEPROM استفاده کنید باید هر سه پایه را به GND اتصال دهید (در آموزش های اینده با اتصال چند ایسی eeprom با میکرو بیشتر آشنا خواهید شد)  پایه 4 ایسی، پایه GND یا منفی می   پایه 5 SDA یا همان دیتا می باشد (برای I2C)  پایه 6 SCL یا همان کلاک می باشد(برای I2C)  پایه 7، WP برای زمانیست،که ما قصد نداشته باشیم،بر روی ایسی چیزی بنویسیم!و فقط قصد داشته باشیم، از روی ایسی بخوانیم! (در صورتی که بخواهید بر روی ایسی هم بنویسید و هم بخوانید باید پایه WP را به GND اتصال دهید)(این پایه در واقع یک نوع محافظ برای از بین نرفتن اطلاعات مهم،در طرح های خاص می باشد)  پایه 8 VCC یا مثبت ایسی می باشد.  ---------  نکته:   آدرسی دهی در مدل های مختلف ایسی ها،متفاوت می باشد! ولی هر چقدر حجم و ظرفیت ایسی ها بالاتر می رود،معمولا تعداد پایه ها ادرس دهی نیز کمتر میشود! 
در ایسی at24c32
سه پایه برای آدرس دهی(A0 و A1 و A2)
(که جمعا میشود 8 ایسی از این مدل را، در ارتباط i2c به میکروکنترولر معرفی کرد)
تصویر
در ایسی At24c256
دو پایه برای آدرسی دهی (A0و A1)
(که جمعا میشود 4 ایسی از این مدل را، در ارتباط i2c به میکروکنترولر معرفی کرد)
پایه NC نیز باید به GND اتصال پیدا کند
تصویر
 
در ایسی At24c1024
یک پایه برای آدرسی دهی (A0)
(که جمعا میشود 2 ایسی از این مدل را، در ارتباط i2c به میکروکنترولر معرفی کرد)
دو پایه NC نیز باید به GND اتصال پیدا کند
تصویر
 
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.
با عرض پوزش،دیگر در انجمن حضور ندارم،که به پیام ها پاسخ بدم.

Colonel II
Colonel II
نمایه کاربر
پست: 7545
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9280 بار
سپاس‌های دریافتی: 22029 بار

Re: آموزش کار با حافظه EEPROM خارجی

پست توسط sinaset » چهار شنبه 14 مهر 1395, 4:11 pm

بنام خدا
باسلام
اما در ادامه نحویه برقراری ارتباط با ایسی توضیح داده میشود

رابط ایسی I2C می باشد،که همین عمر باعث شده کار ما نیز راحتر بشود! کتابخانه کار با این ایسی نیز وجود دارد،و کافیست فقط ان را از طریق کدویژن تنظیم کنید.

اما چطور باید با این ارتباط برقرار کرد.

بعد از انکه مدار را طبق پست قبلی با ایسی حافظه تنظیم کردیم .حال باید به سراغ برگه اطلاعاتی ایسی برویم،تا ببینیم چطور باید با این ایسی ارتباط برقرار کرد!

در رابطه I2c همیشه بایت اول مربوط به آدرس سخت افزاری می باشد، پس ما برای شروع ارتباطه با ایسی ابتدا باید هشت بایت حاوی آدرس سخت افزاری ایسی را ارسال کنیم

آدرس سخت افزار ایسی at24c32 باید چنین باشد (طبق دیتاشیت حافظه)
تصویر
بیت اول از سمت چپ،مربوط به بیت شروع کار می باشد،که به ان بیت Start نیز گفته میشود،که با 1 شود. وقتی 1 شود،باقی بیت بعد از نیز خوانده میشود (اگر 1 نشود،باقی بیت ها خوانده نمی شود(که البته تصویر بالا دیده نمی شود، و در تصویر پایین تر می توانید آن را ببینید)

بعد از ان چهار بیت وجود دارد،که معمولا باید به دیتاشیت هر ایسی مراجعه کنید،تا ببینید چه چیزی می باشد! (ولی معمولا و اکثر همین می باشد ! یعنی 1010)
بعد از ان چهار بیت،سه بیت دیگر وجود دارد،که بستگی دارد شما پایه ها A0 , A1 , A2 ایسی را در چه وضعیتی قرار داده باشید! (که ما در این پروژه همه را GND یا صفر کرده ه ایم، پس وضعیت انها همگی صفر می باشد 000)
بیت آخر نیز خواندن و نوشتن بر روی ایسی می باشد،اگر قصد داشته باشیم، اطلاعاتی بر روی ایسی ذخیره کنیم،آن را در وضعیت صفر قرار میدهیم، و اگر قصد داشته باشیم،اطلاعاتی از ایسی بخوانیم باید آن را 1 کنیم .

اما بطوری کلی برای اینکه،بخواهیم اطلاعاتی بر روی ایسی ذخیره کنیم،باید اطلاعات را اینطوری برای ایسی بفرستیم (طبق دیتاشیت ایسی)
تصویر
  که در توضیحات عکس نیز دیده میشود، ابتدا بیت شروع،سپس بایت آدرس،سپس *دو بایت آدرس خانه ذخیری سازی حافظه EEPROM ،سپس دیتا(بایت) ما،و در پایان نیز بیت توقف و پایان ارتباط.  *آدرس خانه ذخیر سازی،محلی از حافظه Eeprom است که دیتا در انجا به صورت بایت،ذخیر میشود.هر بایت،از حافظه Eeprom با یک شماره مشخص شده،و می توانیم به انها دسترسی داشته باشیم.حافظه مورد استفاده ما یعنی AT24C32 مجموعا 8192 بایت خانه حافظه دارد،که ما می توانیم به کمک دوبایت آدرس این 8192 بصورت بایت بابیت دسترسی داشته باشیم.  اما برای خواند اطلاعات،باید به مانند شکل زیر عمل کنیم (طبق دیتا شیت) 
تصویر
 ،بیت شروع 1 باید    باید بایت وضعیت آدرس سخت افزاری نوشته شود (که تفاوتی با وضعیت بایت نوشتن قبلی ندارد!)   باید دو بایت آدر خانه سخت افزاری ایسی نوشته    یک بار دیگر بیت start یک شود!   بیت آدرس از دوباره ذکر شود (با این تفاوت که بیت اخر که مربوط به خواندن و نوشتن می باشد،در وضعیت خواند یعنی 1 قرار بگیرید!)   دیتا خوانده    بیت Stop ارسال شود.  در پست بعدی نحویه ارسال اطلاعات به کمک کدیژن بیان میشود..  . 
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.
با عرض پوزش،دیگر در انجمن حضور ندارم،که به پیام ها پاسخ بدم.

Colonel II
Colonel II
نمایه کاربر
پست: 7545
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9280 بار
سپاس‌های دریافتی: 22029 بار

Re: آموزش کار با حافظه EEPROM خارجی

پست توسط sinaset » دو شنبه 19 مهر 1395, 4:04 pm

بنام خدا
باسلام


اما نحویه برنامه نویسی و پرتئوس!

همانجور که در پست قبل گفتیم ما از ایسی at24C32 استفاده کرده ایم .
تصویر
اکنون می خواهیم،در برنامه شبیه ساز ، حرف "A" رو بر روی خانه 0 ایسی eeprom ذخیره کنیم،سپس بعد از ذخیر سازی،ان را بر روی LCD لود کنیم !

قبل از هر چیز،در برنامه کدویژن باید در قسمت configure، تنظیمات مربوط به I2c را مشخص کنیم،

آدرس در کدویژن ==> project/configure/c compiler/Libraries/I2C
تصویر
در این قسمت باید پایه کلاک SCL و پایه دیتا DATA که به میکرو اتصال پیدا کرده اند را مشخص کنید. (به مانند تصویر بالا)

در ادامه،بعد از مشخص کردن پایه ها، باید همراه به کتابخانه لازم،کتابخانه، i2C را معرفی کنیم
Please Login or Register, to see this code
سپس در مرحله بعد،برای راحتی کارهای ما در برنامه،دو شناسه ،مربوط به آدرس سخت افزاری ایسی و آدرس سخت افزاری برای زمان که قصد خواندن از حافظه EEPROM را تعریف می کنیم
Please Login or Register, to see this code
همانجور که می ببینید مقدار EEPROM_BUS_ADDRESS (آدرس سخت افزاری برای شناسایی ایسی و برای نوشتن بر روی آیسی نیز استفاده میشود)برابر با 160 دسیمال می باشد! که به باینری میشود 10100000 ، همان مقداری که در پست بالا بطور مفصل تر توضیح دادیم
و در یک شناسه دیگر EEPROM_REED_ADDRESS برابر با 161 دسیمال می باشد که به باینری 10100001 می باشد، همان مقداری که در اخر پست قبل ان را توضیح دادیم، مقداری که زمانی که برای ایسی فرستاده شود،می توان مقداری را از ایسی خواند!

اما در ادامه کارهای مهم ، وارد تابع main می شویم ، در انجا ابتدا باید، i2c را مقدار دهی اولیه کنیم.
Please Login or Register, to see this code
اکنون میکروکنترولر خود را اماده کرده است تا به ایسی ارتباط برقرار کند.
برای شروع ابتدا به کمک دستور زیر (که مربوط به تابع i2c می باشد ) بیت شروع را برای ایسی ارسال می کنیم( بیت شروع را در پست قبل توضیح دادیم)
Please Login or Register, to see this code
بعد از فرستادن دستور شروع، آدرس سخت افزاری ایسی را به کمک دستور ()i2c_write برای ایسی ارسال می کنیم:
Please Login or Register, to see this code همانجور که می ببینید، بین دستور i2c_write ، شناسه آدرس سخت افزاری (که 160 یا 10100000 می باشد) برای ایسی ارسال می شود،تا بعد از صحیح بودن ادرس، ایسی خود را برای دستور بعدی ما،خود را اماده کند!

اما در ادامه،باید، آدرس خانه حافظه،برای ذخیر شدن اطلاعات در ایسی را ارسال کنیم، (همانجور که در پست گذشته گفتیم،آدرس خانه ها ،مجموعه دو بایت می باشد!) چون ما قصد داریم،در آدرس 0،دیتا را ذخیر کنیم،هر دو بایت را برابر با 0 قرار میدهیم:
Please Login or Register, to see this code
اکنون که ادرس را برای ایسی فرستاده ایم،باید دیتا را بفرستیم،که ما قصد داریم حرف A را ذخیر کنیم برای این منظور،کد زیر را ارسال می کنیم:
Please Login or Register, to see this code
خوب کار تمام است و اطلاعات بر روی ایسی ذخیر شده است! ولی هنوز ارتباط i2c برقرار است!برای همین باید دستور stop (که همان بیت stop می باشد) را برای ایسی ارسال کنیم
Please Login or Register, to see this code
و در پایان باید 5 میلی ثانیه تاخیر نیز لحاظ شود (حافظه eeprom سرعت پایین در ذخیر سازی دارد،که در حدود چند میلی ثانیه می باشد، برای همین بعد از ذخیره سازی هر دیتا،یک تاخیر 5 میلی ثانیه باید لحاظ باید بشود)

-----
[HIGHLIGHT=#76923c]اما برای خواندن دیتا از ایسی: 
ابتدا بیت start ارسال می کنیم
Please Login or Register, to see this code
سپس آدرس سخت افزاری ایسی را ارسال می کنیم
Please Login or Register, to see this code
سپس آدرس خانه حافظه را از ارسال می کنیم (چون دیتا در ادرس 0 صفر می باشد، آدرس هردو بایت 0 قرار میدهیم)
Please Login or Register, to see this code
اما در ادامه،باید یک بار دیگر بیت شروع را از دوباره بفرستیم!
Please Login or Register, to see this code
در ادامه،باید آدرس سخت افزاری،برای خواندن اطلاعات را ارسال کنیم (که در واقع همان آدرس سخت افزاری ایسی می باشد! با این تفاوت که فقط بیت اخر،که مربوط به نوشتن و خواندن می باشد، 1 میشود)
Please Login or Register, to see this code
حال به کمک دستور زیر،دیتا را می خوانیم و د متغیر مدنظرمان میریزیم
Please Login or Register, to see this code
دیتا به درون متغیر data ریخته میشود!
اکنون دیگر همه چیز اماده است و می توانیم دیتا را بر روی LCD نمایش بدهیم !

کدهایی برنامه:
Please Login or Register, to see this code [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]برنامه و شبیه ساز.

باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.
با عرض پوزش،دیگر در انجمن حضور ندارم،که به پیام ها پاسخ بدم.

Colonel II
Colonel II
نمایه کاربر
پست: 7545
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9280 بار
سپاس‌های دریافتی: 22029 بار

Re: آموزش کار با حافظه EEPROM خارجی(ارتباط چندگانه،بزودی..)

پست توسط sinaset » یک شنبه 12 شهریور 1396, 3:37 pm

بنام خدا
باسلام


ارتباط با 4 ایسی EEPROM !
 تصویر 
در این طرح جالب،ما با 4 ایسی EEPROM با حجم 32 کیلوبیت ،بر روی دو سیم،ارتباط برقرار می کنیم و بر روی هر کدام یکی از ایسی حافظه یک حروف الفبا را ابتدا ذخیره سازی می کنیم،سپس ان را بارگزاری می کنیم و به روی LCD نمایش میدهیم.

مراحل سخت افزاری !

برای اینکه،هر ایسی را به صورت جداگانه فراخوانی کنیم،باید به صورت سخت افزار برای هرکدام،کدی را مشخص کنیم.!

 تصویر
همانجور که در تصویر بالا می ببینید،
ایسی اول U1 را برابر با 000 (هر سه پایه زمین)
ایسی دوم U2 را برابر با 001 (پایه اول Vcc باقی پایه ها زمین)
ایسی سوم U3 را برابر با 010 (پایه اول زمین ، پایه دوم VCC پایه سوم زمین)
ایسی چهارم U4 را برابر با 100 (پایه سوم VCC و باقی پایه ها زمین)    هر ایسی یک کد مشخص دارد و برای فراخوانی هر ایسی کافیست،کد مربوط به ان را ارسال کنید،تا ارتباط I2C بین میکرو و ایسی حافظه برقرار شود.  کدنویسی و باقی مراحل.   راحتی کار،در ابتدا برنامه،به کمک چند متغیر شناسه ی(Define) ، کدهای شناسه ای هر ایسی را تعریف می کنیم. 
Please Login or Register, to see this code

*سه بیت اول، مروبوط به کد شناسه ی سخت افزاری هر ایسی می باشد!

برای نوشتن و خواندن بر روی ایسی ها، از دو تابع استفاده می کنیم.!

تابع نوشتن :


Please Login or Register, to see this code

باید به این تابع علاوه بر بایت برای نوشتن شدن، ایسی(اول یا دوم یا سوم یا چهارم) برای ذخیره سازی نیز داده شود.(این تابع برای راحتی کار نوشته شده است)

تابع خواندن:


Please Login or Register, to see this code

در این تابع ،باید ایسی و ادرس خانه بایت (حافظه برای خواندن)، مشخص شود.

برنامه و تابع اصلی

در حلقه اصلی برنامه، ابتدا،ایسی به نوبت فراخوانی میشود و بر روی هر کدام به ترتیب A و B و C و D (کد اسکی) ذخیره سازی میشود!

Please Login or Register, to see this code

در پایان نیز، ایسی ها تک تک فراخوانی میشوند و اطلاعات ذخیره شده بر انها، خوانده و نمایش داده میشود.

Please Login or Register, to see this code

کل کدهایی برنامه:

Please Login or Register, to see this code

[لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]برنامه و پرتئوس

باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.
با عرض پوزش،دیگر در انجمن حضور ندارم،که به پیام ها پاسخ بدم.

Colonel II
Colonel II
نمایه کاربر
پست: 7545
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9280 بار
سپاس‌های دریافتی: 22029 بار

Re: آموزش کار با حافظه EEPROM خارجی(ارتباط چندگانه با 4 ایسی

پست توسط sinaset » جمعه 31 شهریور 1396, 9:37 am

بنام خداوند بخشنده و مهربان
باسلام


خواندن عکس از حافظه EEPROM و نمایش به روی ال سی دی گرافیکی(nokia5110)
تصویر
برای اینکه بتوانیم،عکسی را از حافظه EEPROM بخوانیم،نیاز به سرعت بالایی داریم! برای همین نمی توانیم از طریق کتابخانه I2C که به صورت مجازی واحد I2C را میسازد استفاده کنیم!چون سرعت ان بسیار پایین می باشد.!برای همین باید از خود واحد I2C میکرو (که به TWI معرفی میشود)،کار کنیم و اطلاعات را بخوانیم.

در این طرح،ما از LCD nokia5110 و حافظه 512Kb EEPROM استفاده کرده ایم .(32 کیلوبایت).

در این طرح،دو عکس در سایز 84 و 48 برای ایسی eeprom اماده شده است،این عکس ها حدود 1014 بایت از حافظه ایسی را اشغال می کنند(که البته بسیار خوب و کم حجم شده است) (بطور کلی شاید با این روش بتوان حدود 90 خورده ای عکس(برای LCDnokia 812) را در یک حافظه 512 کیلوبیتی جایی داد.)

این برنامه بیشتر یک تابع اصلی دارد،که به کمک ان اطلاعات خواند و سپس بروی ال سی دی نمایش داده میشود.
Please Login or Register, to see this code
وظیفه این تابع نوشته شده(که کمی دشوار نیز بود)،خواندن اطلاعات و بلافاصله نمایش بایت دریافتی بر روی LCD می باشد. این تابع،تقریبا تمام کارها را راحت کرده است! چراکه در برنامه فقط باید شماره ادرس شروع عکس (در حافظه eeprom) را به تابع داد،تا تابع خودش عکس را به روی LCD نمایش بدهد!

به عنوان مثال ،ما دو عکس در فایل BIN برنامه داریم که از ادرس 0 و 509 شروع میشود! پس انها را اینطور وارد می کنیم.
Please Login or Register, to see this code *برای خواندن از حافظه یک عدد بیشتر باید اعمال شود


کدهایی برنامه:
Please Login or Register, to see this code

[لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] سورس،شبیه ساز،فایل Bin.برای ایسی حافظه
*فایل Bin به نام Edit.bin می باشد،برای پروگرام کردن اطلاعات از یک پروگرام استفاده کنید(بعضی مدل ها پروگرام ها مثل پروگرام ها ECA داری جایگاه پروگرام اطلاعات برروی حافظه EEPROM از انها نیز استفاده کنید)

**استفاده و فروش و .. کدها حرام می باشد! اینها کدها،جنبه اموزشی و .. دارد
باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.
با عرض پوزش،دیگر در انجمن حضور ندارم،که به پیام ها پاسخ بدم.

New Member
پست: 1
تاریخ عضویت: چهار شنبه 30 دی 1388, 1:26 pm
سپاس‌های ارسالی: 1 بار
سپاس‌های دریافتی: 2 بار

Re: آموزش کار با حافظه EEPROM خارجی(ارتباط چندگانه با 4 ایسی

پست توسط Ehsan_ne0 » چهار شنبه 5 اردیبهشت 1397, 9:30 pm

sinaset نوشته شده:بنام خداوند بخشنده و مهربان
باسلام


خواندن عکس از حافظه EEPROM و نمایش به روی ال سی دی گرافیکی(nokia5110) تصویر برای اینکه بتوانیم،عکسی را از حافظه EEPROM بخوانیم،نیاز به سرعت بالایی داریم! برای همین نمی توانیم از طریق کتابخانه I2C که به صورت مجازی واحد I2C را میسازد استفاده کنیم!چون سرعت ان بسیار پایین می باشد.!برای همین باید از خود واحد I2C میکرو (که به TWI معرفی میشود)،کار کنیم و اطلاعات را بخوانیم.

در این طرح،ما از LCD nokia5110 و حافظه 512Kb EEPROM استفاده کرده ایم .(32 کیلوبایت).

در این طرح،دو عکس در سایز 84 و 48 برای ایسی eeprom اماده شده است،این عکس ها حدود 1014 بایت از حافظه ایسی را اشغال می کنند(که البته بسیار خوب و کم حجم شده است) (بطور کلی شاید با این روش بتوان حدود 90 خورده ای عکس(برای LCDnokia 812) را در یک حافظه 512 کیلوبیتی جایی داد.)

این برنامه بیشتر یک تابع اصلی دارد،که به کمک ان اطلاعات خواند و سپس بروی ال سی دی نمایش داده میشود.
Please Login or Register, to see this code

وظیفه این تابع نوشته شده(که کمی دشوار نیز بود)،خواندن اطلاعات و بلافاصله نمایش بایت دریافتی بر روی LCD می باشد. این تابع،تقریبا تمام کارها را راحت کرده است! چراکه در برنامه فقط باید شماره ادرس شروع عکس (در حافظه eeprom) را به تابع داد،تا تابع خودش عکس را به روی LCD نمایش بدهد!

به عنوان مثال ،ما دو عکس در فایل BIN برنامه داریم که از ادرس 0 و 509 شروع میشود! پس انها را اینطور وارد می کنیم.

Please Login or Register, to see this code
*برای خواندن از حافظه یک عدد بیشتر باید اعمال شود


کدهایی برنامه:

Please Login or Register, to see this code


[لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] سورس،شبیه ساز،فایل Bin.برای ایسی حافظه
*فایل Bin به نام Edit.bin می باشد،برای پروگرام کردن اطلاعات از یک پروگرام استفاده کنید(بعضی مدل ها پروگرام ها مثل پروگرام ها ECA داری جایگاه پروگرام اطلاعات برروی حافظه EEPROM از انها نیز استفاده کنید)

**استفاده و فروش و .. کدها حرام می باشد! اینها کدها،جنبه اموزشی و .. دارد
باتشکر.


خیلی خیلی خوب بود مرسی فقط یه سوال با چه برنامه یا روشی عکس رو به فایل bin تبدیل کردی
با تشکر

Colonel II
Colonel II
نمایه کاربر
پست: 7545
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9280 بار
سپاس‌های دریافتی: 22029 بار

Re: آموزش کار با حافظه EEPROM خارجی(خواندن و نمایش عکس!برروی

پست توسط sinaset » چهار شنبه 5 اردیبهشت 1397, 9:44 pm

سلام بر شما
خواهش میکنم،تشکر از نظرتون ..

از نرم افزار bmp2h_conv (در اینترنت همین را جستجو کنید،تا فایل ها دانلود را ببینید)

نیاز به تنظیمات نیز دارد! باید مقداری روی ان کار کنید!

باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.
با عرض پوزش،دیگر در انجمن حضور ندارم،که به پیام ها پاسخ بدم.

New Member
پست: 4
تاریخ عضویت: سه شنبه 20 تیر 1391, 6:47 pm

Re: آموزش کار با حافظه EEPROM خارجی(خواندن و نمایش عکس!بررویLCD)

پست توسط mfazl22 » شنبه 20 بهمن 1397, 9:21 pm

سعی کردم با آموزش های شما یه متغیر int v رو بنویسم و بخونم ولی نتونستم میشه یه مثال بزارین

 

Colonel II
Colonel II
نمایه کاربر
پست: 7545
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9280 بار
سپاس‌های دریافتی: 22029 بار

Re: آموزش کار با حافظه EEPROM خارجی(خواندن و نمایش عکس!بررویLCD)

پست توسط sinaset » شنبه 20 بهمن 1397, 9:31 pm

سلام بر شما

لطفا قید کنید،منظور شما کدام،پست و چه قسمتی از ان می باشد.. و توضیح بهتر و صحیح تر بفرمایید.

باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.
با عرض پوزش،دیگر در انجمن حضور ندارم،که به پیام ها پاسخ بدم.

New Member
پست: 4
تاریخ عضویت: سه شنبه 20 تیر 1391, 6:47 pm

Re: آموزش کار با حافظه EEPROM خارجی(خواندن و نمایش عکس!بررویLCD)

پست توسط mfazl22 » شنبه 20 بهمن 1397, 10:23 pm

sinaset نوشته شده:
شنبه 20 بهمن 1397, 9:31 pm
سلام بر شما

لطفا قید کنید،منظور شما کدام،پست و چه قسمتی از ان می باشد.. و توضیح بهتر و صحیح تر بفرمایید.

باتشکر.
من با آموزش های شما eeprom رو به صورت ارسال و دریافت بایت راه اندازی کردم راه افتاد و تمام
مشکل اینجاست که وقتی از متغیر int استفاده می کنم یا مثلا عدد 257 که بیشتر از یک بایت هست رو ارسال کنم ارسال نمی شود
چون نمی دونم چطور تابع براش بنویسم که بتونم متغیر های int و غیره رو ارسال یا دریافت کنم
تونستم خوب توضیح بدم

ارسال پست

بازگشت به “آموزش و مثال‌ها AVR”