Logo 150Logo 150Logo 150Logo 150
  • صفحه اصلی
  • میکروکنترلرها
    • میکروکنترلرهای AVR
      • آموزش AVR در CodeVision
      • آموزش Atmel Studio
      • AVR بیسیک
    • میکروکنترلرهای PIC
    • میکروکنترلرهای ARM
      • خانواده STM32
    • میکروکنترلر 8051
    • برنامه نویسی گرافیکی
      • LabView
  • مقالات
    • قطعات و نکات فنی
    • خواندنی ها
    • کتاب-جزوه-مجله
  • نرم افزار
    • کتابخانه آلتیوم
      • Microchip
  • پروژه های آماده
  • خرید پروژه
  • حل تمرینات
  • تماس با ما
  • کانال ها
    • کانال تلگرام
    • اینستاگرام
    • آپارات
    • یوتیوب

كار با EEPROM خارجي و داخلي (قسمت پنجم)

  • صفحه نخست
  • مطالب سایت میکروکنترلرها میکروکنترلرهای AVR AVR بیسیک
  • كار با EEPROM خارجي و داخلي (قسمت پنجم)
آموزش ميكرو كنترلر AVR به زبان بيسيك (قسمت چهارم)
21 بهمن, 1388
نور و رنگ در تلویزیون
21 بهمن, 1388
منتشر شده توسط مدیر در 21 بهمن, 1388
موضوعات
  • AVR بیسیک
برچسب ها
  • EEPROM خارجي
  • EEPROM داخلي
  • i2c
  • Readeeprom
  • Writeeeprom
  • آموزش ميكرو كنترلر AVR
  • پروتکل i2c
  • پروتکل i2c در بیسیک
  • خارجي
  • داخلي
  • زبان بيسيك
  • كار با EEPROM
  • نحوی پیکره بندی i2c در بسکام
  • نحوی پیکره بندی حافطه

بازدیدها: 1656

EEPROM خارجي:
توسط ميكرو كنترلر AVR شما مي توانيد داده هاي خود را در يك حافظه خارجي ذخيره كنيد. كه من در اينجا نحوي پيكره بندي و برنامه نويسي آن را براي آيسي هاي EEPROM با مد سريال I2C خواهم گفت.
در پروتكل I2C ما تنها از دو سيم براي خواندن و نوشتن اطلاعات استفاده مي كنيم كه يك سيم آن به پايه SCL مشهور مي باشد كه روي اين پايه توسط ميكرو ما يك كلاك پالس با فركانس مشخص (بستگي به نوع EEPROM دارد) توليد مي كنيم. اين پايه اين كلاك را به EEPROM مي دهد و كه EEPROM بر اساس اين پالس ساعت داده ها را مي خواند و مي نويسد.
سيم دوم آن SDA مي باشد كه در واقع ما توسط اين پايه اطلاعات خانه هاي حافظه و محتواي داده را به EEPROM مي فرستيم و يا دريافت مي كنيم. از جمله اطلاعات يا شماره خانه حافظه و بعد اطلاعات خواندن و نوشتن و بعد هم فرستادن و يا دريافت كردن اطلاعات مي باشد.

اكنون به پيكره بندي EEPROM در محيط بيسكام مي پردازيم:

تعيين پايه هاي SCL و SDA :
Config Scl= x
Config Sda= x
در اينجا x يكي از پين هاي يك پورت مي باشد. مثلا PORTB.0 , PORTB.1  بستگي به طراحي خودتان دارد.
تعيين نرخ بيتي سريال و فركانس كلاك پالس و …
نرخ بيتي برابر با 9600 بيت بر ثانيه $baud= 9600
اندازه حافظه بافر Config Serialout = Buffered , Size = 254
تعيين كلاك پالس 400 كيلو هرتزي Config I2cdelay = 1
عدد 161 براي خواندن از  EEPROM Const Xeeread = 161
 عدد 160 براي نوشتن در EEPROM Const Xeewrite = 160
توضيح برنامه:
در خط اول من به دلخواه نويسه LCD رو خاموش كردم و بعد هم پاكش كردم.
هدف از اين برنامه نحوي ارسال و دريافت داده به EEPROM هست بنابراين من مي خوام تاريخ امروز كه دارم اينو مي نويسم رو در EEORPM از خانه 20 نوشتم و بعد هم اونو خوندم و رو روي LCD نمايش داد. كه روند كار به صورت زير هست:
Address = 20 : C = 0
While Address < 30
Tmp = Lookup(c , Text)
Aa = High(address)
Bb = Low(address)
Gosub Writeeepromserial
Incr Address
Incr C
Wend
ابتدا به متغيير Address مقدار ثابت 20 رو دادم كه اين عدد ميشه خانه 20 EEPROM و اولين خانه اي كه اولين ديتا درونش نوشته ميشه بعد هم اومدم يه حلقه While ايجاد كردم و براش يه شرط هم گذاشتم يعني گفتم تا زماني كه Address برابر با 30 نشده دستورات توي حلقه رو تكرار كن! حالا عدد 30 چي؟ گفتيم مي خوام اولين خانه شروع 20 باشه و ما هم 10 ديتاي 8 بيتي داريم كه بايد نوشته بشه پس 10+20 ميشه 30.
در خط بعدي ما از جدول Lookup استفاده كرديم يعني ما اون تاريخ رو در جدولي با ليبل Text نوشتيم و بعد هم براي فراخواني اونها از يك شمارنده كه ردون حلقه هست استفاده كرديم به اين صورت كه ابتدا C=0 قرار داديم يعني ميگه اولين ديتاي جدول Text رو بخون و درون متغيير tmp قرار بده حال مي رسيم به دو دستور:
Aa = High(address) , Bb = Low(address)
از اين دستور براي توليد آدرس استفاده مي كنيم كه متغيير آدرس يك داده از نوع WORD مي باشد بنابر اين با قرار دادن آدرس خانه مورد نظر و بالا و پايين كردن آن آدرس ايجاد مي شود. حال ما ديتا را آماده كرديم و آدرس رو هم آماده كرديم و كافي كه اين اطلاعات رو براي EEPROM بفرستيم كه به كمك زير برنامه Writeeepromserial اين كار رو انجام مي ديم. و در خط بعدي هم يك واحد به شمارنده يعني C و يك واحد هم به Address اضافه مي كنيم تا در نوبت بعد ديتاي جديد و آدرس جديد ايجاد شود.
قسمت خوان از EEPROM هم شبيه به نوشتن هست با اين تفاوت كه از زير برنامه Readeepromserial استفاده مي شود.
زير برنامه هاي Readeepromserial و Writeeepromserial تقربيا براي اينگونه استفاده كردن از EEPROM ثابت هستند فقط در قسمت waitms 10 اين 10 ميلي ثانيه تاخير بستگي به نوع EEPROM دارد. ما آيسي هايي داريم كه 1 ميلي ثانيه نياز دارند و بعضي هم 5 و بعضي هم 10 ميلي ثانيه …
EEPROMداخلي:
براي استفاده از EEPROM داخلي از دو دستور زير مي توانيد استفاده نماييد يكي براي خواندن و يكي هم براي نوشتن. نكته: حتما بين هر خوندن و يا نوشتن بايد 5 ميلي ثانيه تاخير بزاريم تا عمليات نوشتن تكميل شود.
Readeeprom Mgh1 , 10 : Waitms 5
Writeeeprom Mgh2 , 10 : Waitms 5
در دستور اولي محتواي خانه 10 از EEPROM داخلي خوانده مي شود و درون متغيير MGH1 ريخته مي شود.
در دستور دومي محتواي متغيير mgh2 در خانه 10 از EEPROM داخلي نوشته مي شود.
Icon

دانلود کار با حافظه داخلی و خارجی با پروتکل I2C

1 file(s) 95.63 KB
Download
Share
78
مدیر
مدیر

مطالب مرتبط

6 فروردین, 1392

پروژه کنترلر دستگاه جوجه کشی


اطلاعات بیشتر
آموزش ساخت تابلو روان به زبان بیسیک
26 مرداد, 1391

آموزش ساخت تابلو روان به زبان بیسیک


اطلاعات بیشتر
پروژه ولت متر دیجیتال 0 تا 25 ولت با AVR به زبان بیسیک
9 اردیبهشت, 1391

پروژه ولت متر دیجیتال 0 تا 25 ولت با AVR به زبان بیسیک


اطلاعات بیشتر

1 Comment

  1. علیرضا نمازیزاده گفت:
    29 دی, 1400 در 19:44

    با سلام.عالی بود .خیلی ممنونم.کاش من هم میتونستم تجربیاتم در اختیار دیگران بزارم.خدا بهتون خیر برکت و از همه مهمتر سلامتی بدهد.

    پاسخ

دیدگاهتان را بنویسید لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

تمامی حقوق مادی و معنوی برای PicPars.com محفوظ است. شماره همراه 09335751032 جهت ارتباط با خرید پروژها در تلگرام و واتساپ