سلام اقا این مقدار eeprom میکرو وقتی erase میکنیم همه میشه 1 (FF)چطوری میشه کاری کرد هنگام پروگرام کردن همشون بشه 0 اخه من تو برنامم سطری گزاشتم اگه مقدار متغیر اپرام 0 بود و یه متغیر دیگه از اپرام بیشتر بود متغیرو بریزه تو اپرام و... اما با این حالت اپرام هیچ گاه مقادیر نگهداری نمیشه و اگر بخواهم اول برنامه مقدار اپرام رو 0 کنم هر بار که میکرو روشن میشه مقدار قبلی که نگهداری می کرده می پره چیکار کنم!!!! :nerd: :nerd: :nerd: :cry2:
اطلاعیه
Collapse
No announcement yet.
صفر کردن تمام بیتهای eeprom
Collapse
X
-
پاسخ : صفر کردن تمام بیتهای eeprom
کسی پیدا نمیشه بگه چطوری ؟؟؟؟
Dim Km As Eram Byte
حالا اینو چطوری مقدار دهی اولیه کنم که فقط بار اول مقدار دهی شه تو برنامه مقدار جدید دادم میکرو خاموش شد بار بعد مقدار تو برنامه رو فراخوانی کنم. نه مقداری که اینجا برای اولیه دادم !!!!کم باش اصلا هم نگران کم بودنت نباش!!!
اونی که اگر کم باشی گمت میکنه, همونیه که اگر زیاد باشی حیفت میکنه!!
فقط خوب باش. خوب بودن به اندازه کافی متفاوتت میکنه.
دیدگاه
-
پاسخ : صفر کردن تمام بیتهای eeprom
اول از همه اینو اینجا میگم چون از دوستی تو نت یاد گرفتم که هرچی بلدی یا میتونی راهنمایی کن یا اگه به نتیجه رسیدی سوال که طرح کردی رو همینجوری ول نکن جوابشو بنویس تا دیگران گیرشون رفع شه و زکات علم رو هم داده باشی خودش میشه منبع برای رجوع دوستانی که بعدا" تو این مسیر حرکت میکنن
برای حل مشکل بعد یا قیل تعریف متغیر از نوع eram کافیه این 3 خط رو بنویسیم یا اصلا" تو یه پروژ خالی منویس و فایل *.eep که تولید میشه رو با برنامه مریوطه پروگرام کن رو میکرو . روند کار اینجوریه :
یه فایل با پسوند eep. درست میشه اونم وقت پروگرام کردن میکرو بریزید تو حافظه اپرام برای بار اول این مقادیر در میکرو هست تا مقدار جدید تو برنامه رونویسی کنی واین مقادیر هنگام پرو گرام فقط رووش بوده و یهد خاموش روشن رونویسی نمیشه تا توی برنامه رونویسی شه و برای همیشه از بین میره و حالا این مورد کجا کاربرد داره شما یه رمز مثلا" تو میکرو میریزی نیاز نیست تو کد برنامه رمز اولیه رو بنویسی فقط رجوع میدی به متغیر و مقدار اولیه تو متغیر هنگام پروگرامریخته شده.
$eeprom
Data 1 , 285 , 3 , 4
$data
حالا از کجا بفهمیم چطوری مقدار دهی اولیه هر متغیر رو انجام بدیم :
مقدار دیتا 1 در خانه 1 و مقدار 285 در خانه 2 و مقدار هاا تا اخرین بایت اپرا رو میشه مقدار دهی اوله کرد حالا از کجا بفهمم مقدار متغیر 4 اپرام که تعریف کردیم چطوری مقدار اولیه بدم کافیه از اول برنامه به ترتیب تعریف چندمین متغیر از نوع اپرام هست همون عدد رو در دیتا مقدار دلخواه بدیم مثلا" برنامه زیر من میخواهم اپرام
3 متغیرو مقدار اولیه بدیم
اینجا a مقدار 0 و b مقدار 255 و c مقدار 78 اون t,s هم تعریف کردم که یعنی به ترتیب اپرام از بالا میشه نه به ترتیب تعرف متقیر و... (اینو برا خودم گفتم که اماتورم )جسارت نشه.
$regfile = "m8def.dat"
$crystal = 8000000
$eeprom
Data 0 , 255 ,78
$data
Dim a As Eram Byte
Dim b As Eram Byte
Dim S As word
Dim T As Byte
Dim c As Eram Byte
do
.
.
.
..
.
loop
end
تذکر:
اگر مقدار متغیر اپرام byte تعریف کردی 1 خانه جلوی خط data , برابر 1 بایته اگر integer یا word بود مقدار 2 خانه پشت هم میشه مقدار متغیر و اگر long یا single بود 4 خانه پشت هم میشه مقدار متغیر اینجا من یک خانه یک خانه چلو رفتم چون همه متغیر هام byte بود و هر خانه هم چلوی خطdata x1,x2,x3 برابر بایت بود :nice: :nice: :applause: :applause:کم باش اصلا هم نگران کم بودنت نباش!!!
اونی که اگر کم باشی گمت میکنه, همونیه که اگر زیاد باشی حیفت میکنه!!
فقط خوب باش. خوب بودن به اندازه کافی متفاوتت میکنه.
دیدگاه
-
پاسخ : صفر کردن تمام بیتهای eeprom
توی c فقط اونجا که متغیر رو تعریف می کنید بهش مقدار اولیه بدید مثلا توی avr-gcc
چون میخواهیم از eeprom استفاده کنیم اول برنامه هدر eeprom رو اینکلود میکنیم به صورت زیر :
کد:[ltr] #include <avr/eeprom.h> [/ltr]
کد:[ltr] uint32_t EEMEM counter_eeprom=0; [/ltr]
تو کامپایلرهای دیگه هم به همین شکل هست، البته توی iar یه سری تنظیمات رو انجام داده باشید که اون فایل eeprom را تولید کند.
دیدگاه
-
پاسخ : صفر کردن تمام بیتهای eeprom
من تو codevision مینویسم
من اول اومدم به متغیرم مقدار دادم مثلا 0 ،بعد برنامه کامپایل کردم فایل با پسوند .eep را ریختم تو eeprom بعد اومدم مقدار متغیرما پاک کردم که هر بار برنامه بهش مقدار نده بعد دوباره برنامه را کامپایل کردم این دفعه فلشا پروگرام کردم شد(البته دیگه میکرو را erase نمیکنم که eeprom پاک بشه) :biggrin:
خیلی ممنون
دیدگاه
دیدگاه