آموزش آردوینو پروژه های آردوینو

پاک کردن حافظه ی EEPROM در آردوینو

نوشته شده توسط حسین فهیمی

میکروکنترلر روی برد آردوینو Arduino دارای ۵۱۲ بایت EEPROM است. حافظه ای که وقتی برد خاموش است، مقادیر در آن نگهداری می‌شود. (مانند یک دیسک سخت کوچک). این مثال چگونگی تنظیم همه‌ی آن بایت ها به ۰ و دادن مقدار اولیه برای نگهداری اطلاعات جدید با استفاده از تابع ()write از EEPROM را نشان می‌دهد. همانطور که می‌دانید حافظه EEPROM یک حافظه ماندگار می‌باشد که با قطع شدن یا ریست شدن میکرو اطلاعات پاک نمی‌شود. حال ممکن است این اطلاعات ذخیره شده در حافظه EEPROM در برنامه‌های شما تداخل ایجاد کند. به عنوان مثال ممکن است در فلایت کنترل مولتی‌روتر با تغییر در سرعت اسپید کنترل‌ها و آپلود آن در برد تغییرات اعمال نشود که در این مواقع کافی است با این پاک کردن این حافظه به عملکرد دستگاه خود بهبود ببخشید.

 

arduino-uno-r3

 

 

سخت افزار مورد نیاز :

کد زیر از حلقه ()for در چرخه کامل همه ۱۲ بایت از حافظه EEPROM استفاده می کند و در هر کدام به ۰ تنظیم می کند. از آنجا که این نیاز  تنها یک بار اتفاق می افتد ، وقتی که طرح شروع می شود بخش عمده ای از این کد در تابع ()setup قرار می گیرد.

#include <EEPROM.h>

void setup() {
  pinMode(13, OUTPUT);
  for (int i = 0 ; i < EEPROM.length() ; i++) {
    EEPROM.write(i, 0);
  }
  digitalWrite(13, HIGH);
}

void loop() {
}

حالا حافظه ی EEPROM شما خالی هست و میتوانید برنامه های خود را بدون هیچ مشکلی روی برد آردوینو آپلود کنید….

درباره نویسنده

حسین فهیمی

تبادل نظر و رفع عیب با ثبت دیدگاه

۲۷ دیدگاه

  • اینکارو میشه برای ماژول esp هم انجام داد؟؟؟؟ماژول esp هم انجام داد ؟؟ماژول esp رو چطوری باید erase کرد ؟؟

  • زمان آپلود کردن erorre زیر رو نمایش می دهد هیچ برنامه ایی آپلود نمیشه.
    ممکنه برد مشکل پیدا کرده باشه ؟
    روی چند کامپیوتر دیگه هم امتحان کردم ولی باز هم …

    avrdude: verification error, first mismatch at byte 0x0000
    ۰x62 != 0x0c
    avrdude: verification error; content mismatch
    avrdude: verification error; content mismatch

    • با سلام
      ضمن تشکر از توجه شما، این ارور مربوط به پروتکل خواندن و نوشتن STK500 می‌باشد. رفع عیب این حالت کمی زمان بر و نیاز به دقت و حوصله کافی شما دارد. اگر تمایل دارید جهت دریافت جزئیات بیشتر لطفا دستور “upload.verbose=true” را در منو File > Preferences اضافه کنید. مجددا آپلود را انجام دهید. ارورهای دریافتی را از همین طریق اعلام کنید. در غیر این صورت پیشنهاد من تعویض برد است.

  • اگر بخواهیم اطلاعات مربوط به دما سنج را در هر یک ساعت یک بار روی روی eeprom نگه داریم و در زمان لازم از این دیتا ها استفاده کنیم از چه ک هایی برای نوشتن و خواندن باید استفاده کنیم؟

    آیا برای ماژول ساعت ds1307 هم امکان eeprom دارد.؟

    • با سلام
      ضمن تشکر از توجه شما، برای این منظور باید از کتابخانه تایمر و eeprom آردوینو استفاده کنید. سپس تغییرات و شروط لازم را در کدها اعمال کنید. در مورد سوال دوم هم بله میتوانید استفاده کنید.

  • با عرض سلام و خسته نباشید خدمت جناب مهندس طباطبایی
    جناب مهندس من پاک کردن حافظهeeprom
    ب روش بالا رو انجام دادم و انجام شد.ولی بعد از اون هر برنامه ای رو میخام روی بوردم کامپایل کنم کامپایل نمیشه و ارور زیر رو میده:
    Arduino: 1.8.1 (Windows 7), Board: “NodeMCU 1.0 (ESP-12E Module), 80 MHz, Serial, 115200, 4M (3M SPIFFS)”

    mkdir sketch: Access is denied.
    Error compiling for board NodeMCU 1.0 (ESP-12E Module).

    مشکل از چیست مهندس جان؟

    • با سلام
      ضمن تشکر از توجه شما و عذرخواهی بابت تاخیر در پاسخگویی، برای پاک کردن حافظه برد Node MCU باید از نرم افزار nodemcu-flasher استفاده کنید. مشکل حل خواهد شد. کدهای این آموزش برای بردهایی با تراشه اتمل کارایی دارد.

  • سلام و خسته نباشید
    من برد رو امروز خریدم و بعد از اپلود اولین برنامه دیگه دستگاه برنامه ی دیگه ای رو اپلود نمیکنه
    مثلا بعد برنامه نویسی دوباره همان برنامه ی اول رو اجرا میکنه
    با روشی که در پست بالا فرمودید حافظه ی دستگاه رو پاک کردم ولی ارور
    An error occurred while uploading the sketch

    Arduino: 1.8.3 (Windows 8.1), Board: “Arduino/Genuino Uno”

    Sketch uses 764 bytes (2%) of program storage space. Maximum is 32256 bytes.
    Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes.
    avrdude: stk500_recv(): programmer is not responding
    An error occurred while uploading the sketch
    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x95
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x95
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x95
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x95
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x95
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x95
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x95
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x95
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x95
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x95

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    رو میده ممنون میشم راهنمایی کنید.

  • برای رفع این ارور باید چی کار کرد؟
    avrdude: verification error, first mismatch at byte 0x0000
    ۰xff != 0x0c
    avrdude: verification error; content mismatch
    avrdude: verification error; content mismatch

    • با سلام
      از کدام ورژن نرم افزار آردوینو استفاده می‌کنید؟

  • سلام . من یه برنامه روی آردوینو آپلود کردم که موتور را میچرخوند و سرعتش کم و زیاد میشد(اسپید کنترلر) بعد مونده بودم چطور متوقفش کنم و سرچ زدم برنامه شما را پیدا کردم . ممنون از مطلب مفیدتون

  • سلام علت این ارور چیه ؟
    Arduino: 1.8.12 (Windows 10), Board: “Arduino Uno”

    In file included from C:\Users\ERFAN\AppData\Local\Temp\arduino_modified_sketch_720651\sketch_mar07a.ino:2:0:

    C:\Users\ERFAN\Documents\libraries\GLCD/GLCD.h:4:10: fatal error: Adafruit_GFX.h: No such file or directory

    #include

    ^~~~~~~~~~~~~~~~

    compilation terminated.

    exit status 1
    Error compiling for board Arduino Uno.

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    • با سلام
      این ارور مربوط به کتابخانه Adafruit_GFX.h است و با نصب آن مشکل برطرف خواهد شد.

  • سلام من این ارور را دارم می تونید راهنمایی کنید.. In file included from C:\Users\hamid\OneDrive\Documents\Arduino\libraries\DHT_sensor_library\DHT_U.cpp:15:0:

    C:\Users\hamid\OneDrive\Documents\Arduino\libraries\DHT_sensor_library\DHT_U.h:36:10: fatal error: Adafruit_Sensor.h: No such file or directory

    #include

    ^~~~~~~~~~~~~~~~~~~

    • با سلام
      این ارور مربوط به کتابخانه DHT است. کتابخانه را نصب کنید، مشکل برطرف خواهد شد.

  • با سلام
    آیا با این روش میشه حافظه ی ATMEGA2560 و همینطور ESP رو پاک کرد؟
    اگه میشه روشش رو لطفا بگید یا یک پست ایجاد کنید خیلی ممنون میشم
    و اینکه تا یک آردوینو سالمه میشه این کار رو کرد یا برنامه ریزیش محدودیت خاصی داره؟

  • خیلی ممنون از پست خوبتون ولی این روش درست نیس چون مقدار صفر رو شما در حافظه eeprom ذخیره می کنی که این کار درست چون اگه شما در حالت عادی یعنی eeprom را رید کنید (با بسکام ، کدویژن ویا هر نرم افزار دیگع )متوجه میشد مقدارش صفر نیس ۲۵۵یا همون FF هست پس بجای صفر باید مقدار ۲۵۵رو قرار داد
    همه تراشه ها البته تا جایی که من اطلاع دارم ۲۵۵ یا همونFF به معنای خالی بودن eeprom یا فلش میکرو هست

  • سلام..بنده دوتا برد آردینو مگا ۲۵۶۰ دارم..یکیش مگا۲۵۶۰ با چیپ ch340 هست.یکیش هم مگا۲۵۶۹ R3 هستش.چون برنامه های مارلین و رپتییر رو داخلشون ریختم.ولی مثل اینکه جفتشون کلا اشتباه آپدیت شدن..میخوام دوتا برد هارو پاک کنم یعنی خالی بشه..منظورم مثل اینکه تازه برد رو خریداری کنیم..باید چیکار کنم که بردهام خالی بشه پاک بشه ..ممنون میشم راهنمایی کنید..

    • سلام
      برای این مورد باید از طریق رابط ISP روی برد و یک پروگرامر حافظه را کامل پاک کرده و سپس از طریق همین رابط بوت لودر آردوینو را روی برد نصب کنید.

  • سلام
    من با همچین مشکلی مواجه هستم چکار باید کنم avrdude: verification error, first mismatch at byte 0x0000
    ۰x62 != 0x0c
    avrdude: verification error; content mismatch
    avrdude: verification error; content mismatch
    نتونستم با خود اردینو هم بوت لودر روش بزنم لطفا راهنمایی بفرمایید

  • سلام وقت بخیر . من یک آردینو نانو دارم واین ارور را میدهد و الان که این کد را ارسال کردم حدودا همین پیام آمد
    Sketch uses 924 bytes (3%) of program storage space. Maximum is 30720 bytes.
    Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes.
    avrdude: ser_open(): can’t open device “\\.\COM6”: The system cannot find the file specified.

    Problem uploading to board. See https://support.arduino.cc/hc/en-us/sections/360003198300 for suggestions.

    • با سلام
      در متن ارور نوشته شده است که پورت توسط سیستم شناسایی نشده است. مطمئن شوید که درایور آردوینو نصب باشد. مثلا اگر ch340 است بایستی درایور ch340 بر روی سیستم شما نصب باشد.