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

Colonel II



نماد کاربر
پست ها

6611

تشکر کرده: 1670 مرتبه
تشکر شده: 8142 مرتبه
تاريخ عضويت

سه شنبه 26 آذر 1387 16:20

آرشيو سپاس: 11653 مرتبه در 2024 پست

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

توسط sinaset » جمعه 5 شهریور 1395 11:21

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

در این تاپیک به امید خدا آموزش کار کردن با حافظه 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



نماد کاربر
پست ها

6611

تشکر کرده: 1670 مرتبه
تشکر شده: 8142 مرتبه
تاريخ عضويت

سه شنبه 26 آذر 1387 16:20

آرشيو سپاس: 11653 مرتبه در 2024 پست

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

توسط sinaset » يکشنبه 7 شهریور 1395 13:30

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


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

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

مدل ها

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

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

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

مدل های AT24C01 و AT24C02 و AT24C04  و AT24C08 و AT24C16

این مدل ها جزو،مدل های کم ظرفیت و قیمت ارزانتر سری ایسی ها EEPROM می باشد.

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

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

عدد بعد از 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 میلی ثانیه دارد!
ظرفیت این مدل ایسی:
AT24C512 ، عد 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



نماد کاربر
پست ها

6611

تشکر کرده: 1670 مرتبه
تشکر شده: 8142 مرتبه
تاريخ عضويت

سه شنبه 26 آذر 1387 16:20

آرشيو سپاس: 11653 مرتبه در 2024 پست

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

توسط sinaset » سه شنبه 16 شهریور 1395 08:33

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

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

این ایسی همانجور که در ابتدا گفته شده ،با ارتباط 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



نماد کاربر
پست ها

6611

تشکر کرده: 1670 مرتبه
تشکر شده: 8142 مرتبه
تاريخ عضويت

سه شنبه 26 آذر 1387 16:20

آرشيو سپاس: 11653 مرتبه در 2024 پست

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

توسط sinaset » چهارشنبه 14 مهر 1395 16:11

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

رابط ایسی 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



نماد کاربر
پست ها

6611

تشکر کرده: 1670 مرتبه
تشکر شده: 8142 مرتبه
تاريخ عضويت

سه شنبه 26 آذر 1387 16:20

آرشيو سپاس: 11653 مرتبه در 2024 پست

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

توسط sinaset » دوشنبه 19 مهر 1395 16:04

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


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

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

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

آدرس در کدویژن ==> project/configure/c compiler/Libraries/I2C

در این قسمت باید پایه کلاک SCL و پایه دیتا DATA که به میکرو اتصال پیدا کرده اند را مشخص کنید. (به مانند تصویر بالا)

در ادامه،بعد از مشخص کردن پایه ها، باید همراه به کتابخانه لازم،کتابخانه، i2C را معرفی کنیم
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


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

کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


همانجور که می ببینید مقدار EEPROM_BUS_ADDRESS (آدرس سخت افزاری برای شناسایی ایسی و برای نوشتن بر روی آیسی نیز استفاده میشود)برابر با 160 دسیمال می باشد! که به باینری میشود 10100000 ، همان مقداری که در پست بالا بطور مفصل تر توضیح دادیم
و در یک شناسه دیگر EEPROM_REED_ADDRESS برابر با 161 دسیمال می باشد که به باینری 10100001 می باشد، همان مقداری که در اخر پست قبل ان را توضیح دادیم، مقداری که زمانی که برای ایسی فرستاده شود،می توان مقداری را از ایسی خواند!

اما در ادامه کارهای مهم ، وارد تابع main  می شویم ، در انجا ابتدا باید، i2c را مقدار دهی اولیه کنیم.
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


اکنون میکروکنترولر خود را اماده کرده است تا به ایسی ارتباط برقرار کند.
برای شروع ابتدا به کمک دستور زیر (که مربوط به تابع i2c می باشد ) بیت شروع را برای ایسی ارسال می کنیم( بیت شروع را در پست قبل توضیح دادیم)
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


بعد از فرستادن دستور شروع، آدرس سخت افزاری ایسی را به کمک دستور ()i2c_write برای ایسی ارسال می کنیم:
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

همانجور که می ببینید، بین دستور i2c_write ، شناسه آدرس سخت افزاری (که 160 یا 10100000 می باشد) برای ایسی ارسال می شود،تا بعد از صحیح بودن ادرس، ایسی خود را برای دستور بعدی ما،خود را اماده کند!

اما در ادامه،باید، آدرس خانه حافظه،برای ذخیر شدن اطلاعات در ایسی را ارسال کنیم، (همانجور که در پست گذشته گفتیم،آدرس خانه ها ،مجموعه دو بایت می باشد!) چون ما قصد داریم،در آدرس 0،دیتا را ذخیر کنیم،هر دو بایت را برابر با 0 قرار میدهیم:
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


اکنون که ادرس را برای ایسی فرستاده ایم،باید دیتا را بفرستیم،که ما قصد داریم حرف A را ذخیر کنیم برای این منظور،کد زیر را ارسال می کنیم:
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


خوب کار تمام است و اطلاعات بر روی ایسی ذخیر شده است! ولی هنوز ارتباط i2c برقرار است!برای همین باید دستور stop (که همان بیت stop می باشد) را برای ایسی ارسال کنیم
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


و در پایان باید 5 میلی ثانیه تاخیر نیز لحاظ شود (حافظه eeprom سرعت پایین در ذخیر سازی دارد،که در حدود چند میلی ثانیه می باشد، برای همین بعد از ذخیره سازی هر دیتا،یک تاخیر 5 میلی ثانیه باید لحاظ باید بشود)

-----
اما برای خواندن دیتا از ایسی:
ابتدا بیت start ارسال می کنیم
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


سپس آدرس سخت افزاری ایسی را ارسال می کنیم
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


سپس آدرس خانه حافظه را از ارسال می کنیم (چون دیتا در ادرس 0 صفر می باشد، آدرس هردو بایت 0 قرار میدهیم)

کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


اما در ادامه،باید یک بار دیگر بیت شروع را از دوباره بفرستیم!
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


در ادامه،باید آدرس سخت افزاری،برای خواندن اطلاعات را ارسال کنیم (که در واقع همان آدرس سخت افزاری ایسی می باشد! با این تفاوت که فقط بیت اخر،که مربوط به نوشتن و خواندن می باشد، 1 میشود)
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


حال به کمک دستور زیر،دیتا را می خوانیم و د متغیر مدنظرمان  میریزیم
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


دیتا به درون متغیر data ریخته میشود!
اکنون دیگر همه چیز اماده است و می توانیم دیتا را بر روی LCD نمایش بدهیم !

کدهایی برنامه:
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد برنامه و شبیه ساز.

باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

mppezhvak از این پست سپاسگزاري کرده است

Colonel II

Colonel II



نماد کاربر
پست ها

6611

تشکر کرده: 1670 مرتبه
تشکر شده: 8142 مرتبه
تاريخ عضويت

سه شنبه 26 آذر 1387 16:20

آرشيو سپاس: 11653 مرتبه در 2024 پست

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

توسط sinaset » يکشنبه 12 شهریور 1396 14:37

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


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

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

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


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

کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


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

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

تابع نوشتن :


کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


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

تابع خواندن:


کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


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

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

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

کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


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

کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


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

کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد برنامه و پرتئوس

باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

Colonel II

Colonel II



نماد کاربر
پست ها

6611

تشکر کرده: 1670 مرتبه
تشکر شده: 8142 مرتبه
تاريخ عضويت

سه شنبه 26 آذر 1387 16:20

آرشيو سپاس: 11653 مرتبه در 2024 پست

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

توسط sinaset » جمعه 31 شهریور 1396 09:37

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


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

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

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

این برنامه بیشتر یک تابع اصلی دارد،که به کمک ان اطلاعات خواند و سپس بروی ال سی دی نمایش داده میشود.
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


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

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

کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

*برای خواندن از حافظه یک عدد بیشتر باید اعمال شود


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

کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 



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

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


 


  • موضوعات مشابه
    پاسخ ها
    بازديدها
    آخرين پست

چه کسي حاضر است ؟

کاربران حاضر در اين انجمن: بدون كاربران آنلاين و 2 مهمان