AVR, توصیه شده, دسته‌بندی نشده, سیسوگیها

راه‌اندازی کتابخانه ff.h

FAT File System چیست؟

بصورت ساده فرض کنید یک  حافظه فلش یا رم …  در اختیار دارید,و قراره از این حافظه جهت ذخیره اطلاعات استفاده کنید, به عنوان یک مهندس الکترونیک میدونید که در حالت عادی میتونید یک بایت یا یک سکتور از اطلاعات را در هر بار تغییر بدید. حالا فرض کنید این اطلاعات لازمه در دسته بندی های مختلف مدیریت بشند و هر بار بتونید اطلاعات جدیدی را به یک دسته اضافه یا حذف کنید و یا بتونید حتی دسته ای را حذف نمایید. برای مدیریت چنین حافظه هایی استانداردهایی وجود دارد که یکی از معروفترین آنها استانداردهایی هست که مایکروسافت ایجاد کرده و برخی از اونها تحت عنوان FAT شناخته میشند, مانند FAT16 FAT32 … در این ساختار  دسته بندی اطلاعات تحت عنوان فایل ذخیره میشه و کلی قابلیت دیگه هم در ساختار FAT دیده شده که به مرور به ورژنهای بالاتر اضافه شده است.

درباره این آموزش – مقدمه

وقتی قراره پروژه الکترونیکی انجام بدید و  قراره مثلا حافظه مموری کارت را به پروژتون اضافه کنید استفاده از یک استاندارد مانند  FAT در مدیریت ذخیره سازی اطلاعات بر روی حافظه میتونه محاسن زیادی را برای شما  رقم بزنه مثلا به راحتی میتونید اطلاعات را با سرعت بالا از کامپیوتر به حافظه و از حافظه به کامپیوتر انتقال بدید و همینطور میتونید مدیریت اطلاعاتتون را تحت یک استاندارد داشته باشید. چندین سال پیش  آقایی به نام Chang در وب سایت شخصی اش کتابخانه ای برای FAT  منتشر کرده که مخصوص میکرو کنترلرهای با سرعت و رم پایین مثل AVR بوده و بسیار هم پرکاربرد  بوده و هست. آموزش زیر توسط مهندس محمد امین حردانی یکی از اعضای فعال گروه تلگرامی چیپکده منتشر شده که سعی میکنه در این آموزش به خوبی نحوه شروع به کار و استفاده از این کتابخانه را آموزش بده  و برای اینکار از شبیه ساز پروتئوس  استفاده کرده که مطمئنا میتونه بسیار مفید و کاربردی باشه.

درباره‌ی راه‌اندازی کتابخانه ff.h

این نوشته آموزشی صرفا برای آشنایی اولیه و راه‌اندازی کتابخانه‌ی ff است و اصلاً به عنوان یک راهنمای کامل و جامع قابل استفاده نیست. برای اطلاعات بیشتر باید به راهنمای کتابخانه که در سایت elm-chang.org مراجعه نمایید. در این پست آموزشی قرار است ما ضمن شبیه سازی برنامه نوشته شده در کدویژن با پروتئوس, حافظه مموری کارت را نیز با برنامه OSFMount که یک برنامه رایگان هست شبیه سازی نماییم.

درباره‌ی کتابخانه‌ها

این سایت منتشر کننده‌ی دو کتابخانه‌ی ff و pff برای کار با سیستم فایل FAT است. کتابخانه‌ی ff برای میکروکنترلرهایی مانند ATMega که حافظه‌ی کافی دارند یا میکروکنترلرهای قوی‌تر ساخته شده در حالیکه کتابخانه pff با کمی امکانات کمتر برای استفاده روی میکروکنترلرهای با حافظه‌ی کمتر مانند ATTiny ساخته شده است. با توجه به مقدار حافظه‌ای که نیاز داریم یکی از این دو کتابخانه را استفاده می‌کنیم.

درباره‌ی نرم‌افزار و سخت‌افزار

سیستم عامل مورد استفاده Windows 10 x64 Version 1703 Build 15063.540 است. مثال مطرح شده توسط برنامه‌ی CodeVisionAVR 3.12 Advanced نوشته و کامپایل شده است. برای شبیه‌سازی نیز از نرم‌افزارهای Proteus 8.5 SP0 Build 22067 برای شبیه‌سازی منطق برنامه و دیدن خروجی و برنامه‌ی OSFMount 1.5 Build 1015 for 64-Bit Windows برای ایجاد فضای شبیه‌سازی شده‌ی فایل‌سیستم FAT و اختصاص فضای شبیه‌سازی خام برای برنامه‌ی Proteus استفاده شده است. لازم به ذکر است که در این پست مثال مطرح شده فقط نرم افزاری  شبیه سازی شده است.     برنامه از 4 قسمت تشکیل شده است که در ادامه معرفی می‌شوند: برنامه نوشته شده با کدویژن
  • کتابخانه‌های مورد استفاده معرفی شده‌اند تا از توابع موجود در آن‌ها در برنامه استفاده کنیم.
  • متغیرها و ساختارهای مورد استفاده که سعی شده نام‌گذاری آن‌ها متناسب با کارکردشان باشد.
  • وقفه‌ی تایمر 0 که در بازه‌های زمانی کوتاه اقدام به فراخوانی تابع disk_timeproc() می‌کند تا MemoryCard به حالت خواب نرود.
  • باقی کدها برای اجرای برنامه
تنظیمات تایمر 0 هم به این شکل انجام شده‌اند. تنظیمات تایمر در کدویژن یادتان باشد این تنظیمات برای شبیه‌سازی انجام شده‌اند و برای واقعیت باید از روی راهنمای کتابخانه محاسبه را انجام دهید. زمان اجرای تابع disk_timeproc() را باید هر 10 میلی‌ثانیه تنظیم کنید تا کارت حافظه فعال بماند.       همچنین از منوی Project  ==>  Configure ==>  C Compiler  ==> Libraries  ==> MMC/SD/SD HC Card تیک هر دو گزینه‌ی موجود را بزنید و باقی تنظیمات رو مطابق عکس انجام دهید.   تنظیمات مموری کارت در کدویژن کدهای کامل برنامه هم در اتمام پست برای دانلود قرار گرفته است.   مدار را مطابق شماتیک زیر در پروتئوس ببندید و تنظیمات قطعات را مطابق عکس‌های زیر انجام دهید (حافظه‌ی مموری کارت 1MB در نظر گرفته شده است تا فایل نهایی پروژه جهت آپلود کم حجم شود):     همچنین از منوی Project  ==> Configure  ==> C Compiler  ==> Libraries  ==> MMC/SD/SD HC Card تیک هر دو گزینه‌ی موجود را بزنید و باقی تنظیمات رو مطابق عکس انجام دهید. کدهای کامل برنامه هم در ادامه‌ی این مقاله و هم در ضمیمه آمده‌اند. مدار را مطابق شماتیک زیر در پروتئوس ببندید و تنظیمات قطعات را مطابق عکس‌های زیر انجام دهید (حافظه‌ی مموری کارت 1MB در نظر گرفته شده است تا فایل نهایی پروژه جهت آپلود کم حجم شود):   راه‌اندازی کتابخانه ff.h   شبیه سازی در پروتئوس   را ه اندازی مموری کارت با کدویژن   بعد از اولین اجرای شبیه‌سازی Proteus پیام‌های خطایی خواهد داد که به دلیل نبودن فایل‌سیستم است! تصویر زیر را ببینید:   شبیه سازی مموری کارت در پروتئوس     راهکار حل مشکل این است که یک بار با استفاده از برنامه‌ی OSFMount فایل Image کارت حافظه که توسط پروتئوس ایجاد شده است را به ویندوز وصل کنیم تا بتوانیم آن را به فرمت FAT تبدیل کنیم. ابتدا برنامه‌ی OSFMount را اجرا کنید و سپس از منوی File گزینه‌ی Mount new virtual disk را بزنید تا پنجره‌ی روبرو باز شود. مطابق شکل مقادیر پنجره را تنظیم کنید و روی OK کلیک کنید. استفاده از OSFMount در پروتئوس حالا باید فایل ما در ویندوز به شکل زیر متصل شده باشد:   شبیه ساز حافظه   همچنین درایور F نیز به صورت زیر دیده شود: شبیه سازی در نرم افزار پروتئوس     برای استفاده از درایو و تبدیل آن به FAT روی آن کلیک راست کرده و گزینه‌ی Format را انتخاب کنید. سپس تنظیمات را با توجه به شکل انجام دهید و سپس عملیات فرمت را Start کنید. پیام‌های هشدار را هم تأیید نمایید. شبیه سازی فت فایل سیستم     چون حجم درایو را 1MB درنظر گرفتیم، فقط می‌توانیم از FAT12 استفاده کنیم؛ در حالیکه اگر حجم درایو را بیشتر می‌کردیم می‌توانستیم FAT16 و FAT32 رو هم توی گزینه‌ها ببینیم و با آن‌ها فرمت کنیم. کار ما با درایو مجازی تمام شد! به برنامه OSMount برگردید و روی دکمه‌ی Dismount all & Exit کلیک کنید. با اجرای برنامه‌ی شبیه‌سازی شده در Proteus می‌بینید که ایندفعه برنامه به خوبی کار می‌کند و تا انتها پیش می‌رود. با Mount مجدد فایل SDcard می‌توانیم فایل ایجاد شده در فایل سیستم را هم ببینیم.   راه اندازی کتابخانه ff.h Fat file System با AVR         دانلود فایل آموزشی بصورت PDF CodeVision-ff-MMC-library-Virtualization.pdf دانلود سورس پروتئوس و کدویژن SD_Card-Virtualization.zip    

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

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

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

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

20 دیدگاه در “راه‌اندازی کتابخانه ff.h

  1. علی ن گفت:

    سلام
    من خیلی تلاش کردم که جواب بگیرم. از نظر سخت افزاری دقیقا مطابق چیزی که هست انجام دادم.
    ولی هر کاری میکنم جواب نمیده.
    این جمله فکرم رو خیلی در گیر کرده… که جمله نکته ی هست و ازش غافل شدم.!!
    “یادتان باشد این تنظیمات برای شبیه‌سازی انجام شده‌اند و برای واقعیت باید از روی راهنمای کتابخانه محاسبه را انجام دهید.”
    میشه یه نفر پیدا بشه مشکل من حل بشه الان سه ماه در گیرشم.
    ممنون

    1. زئوس Zeus زئوس Zeus گفت:

      سلام
      راه اندازی این سخت افزار واقعا چیز پیچیده ای نداره از چه میکروکنترلر و نرم افزاری استفاده میکند اگر از میکروکنترلر ۵ ولت دارید استفاده میکنید از چه روشی منطق ۳.۳ رو ایجاد میکنید ؟

      1. علی ن گفت:

        سلام
        ممنون از پاسخگویتون.
        من از ATmega32 و نرم افزار Codevision استفاده میکنم.

        1. زئوس Zeus زئوس Zeus گفت:

          خوب وقتی دارید از کدویژن استفاده میکنید – دیگه حتی نمیشه شک کرد که برنامه مشکل داره – احتمالا یه جایی یه چیزی کوچیکی رو در نظر گرفتید

      2. علی ن گفت:

        سلام
        من از ماژول آماده استفاده میکنم داخل خودش رگولاتور داره.

        1. زئوس Zeus زئوس Zeus گفت:

          میشه بگید از کدوم پین های میکرو استفاده کردید + لینک ماژولی که دارید رو بدید ببینم ملاحضه خاصی داره

  2. علی گفت:

    سلام
    من این برنامه رو داخل پروتئوس قرار میدم به خوبی جواب میده.
    ولی تو عمل نمی تونم ازش جواب بگیرم!!!

    1. زئوس Zeus زئوس Zeus گفت:

      برنامه قبلا تست شده و فکر میکنم مشکل شما بیشتر سخت افزاری باشه و باید بگردید و علت اون رو پیدا کنید

      1. علی گفت:

        سلام
        سخت افزار رو چند بار چک کردم.
        یه برنامه به یه زبان دیگه داشتم روی میکرو ریختم جواب داد.
        فقط یه نکته من از مموری 4 گیگ دارم استفاده میکنم.مشکلی نداره؟؟(چون 1 گیگ نداشتم)
        ممنون

        1. زئوس Zeus زئوس Zeus گفت:

          اگه مطمئن هستید که سخت افزارتون با برنامه دیگه ای جواب میده – احتمالا باید پایه ای چیزی رو اشتباه تعریف کرده باشید توی این پروژه از کتابخانه های کدویژن استفاده شده است که احتمالا نباید مشکلی داشته باشند.
          و این مقوله به ظرفیت حافظه هم ربطی نداره من با مموری ۱۶ گیگ هم تست کردم و مشکلی نداشتم پس از این بابت خیااتون راحت
          ببنید توایع یه کد خطا بر میگردونن که معانی متفاتی دارند – اون کد خطا رو چک کنید بهتر میتونید به نتیجه برسید.

  3. علی ن گفت:

    سلام
    آیا میشه یه عدد مثلا دما رو ذخیره کرد و در کامپیوتر به صورت TEXT مشاهده کرد؟؟
    ممنون

    1. زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز
      بله میشه

  4. علی گفت:

    برای آردوینو کتابخونه ی اس دی مناسب وجود نداره؟؟؟؟
    البته منظورم اون کتابخونه ی داخل خود کامپایلر آردوینو نیست منظورم یه کتابخونه ی کم حجمه که بتونه میکرو های کوچیک تر مثل atmega8 سازگار باشه…
    ممنون میشم راهنمایی کنید

  5. محمد گفت:

    درود
    من این کتابخونه رو روی میکرو arm اجرا کردم با رم microsd 4GB و FAT32… موقعی که برنامه اجرا میشه ارور 5 که بمعنی fr_no_file هستش رو میده در حالی که فایل با همون اسم داخل sd card هستش و ظاهرا مثل اینکه فایل رو پیدا نمیکنه.

    1. Sisoog Os Sisoog Os گفت:

      سلام
      سخته در مورد این مشکل صحبت کنیم
      با FAT16 هم یه تستی بزنید
      شخصا این لایبرری را روی سخت افزار تست کردم و مشکلی نبوده
      در ضمن مطمئن باشید که f_mount تونسته درست مموری و FAT را شناساییی کنه یعنی مقادیر برگشت را تست کنید
      Return Values
      FR_OK, FR_INVALID_DRIVE, FR_DISK_ERR, FR_NOT_READY, FR_NOT_ENABLED, FR_NO_FILESYSTEM

      1. محمد گفت:

        update: با فرمت کردن microsd مشکل به کلی حل شد …
        تابع f_mount هم مقدار برگشتی اش از اول FR_OK بود و کارت بخوبی شناسایی شده بود ولی با فرمت کارت و اضافه کردن فایل جدید به رم، تابع f__open هم مقدار fr_ok رو برگردوند و عکس مورد نظر روی ال سی دی نمایش داده شد از روی رم microsd .
        ممنون از پاسخگویی تون . Like

  6. Amir گفت:

    جالب بود
    سایت شما بنظر من جز 5 سایت برتر آموزش الکترونیک ایران هست .
    امیدوارم ادامه دار باشه …

    1. Sisoog Os Sisoog Os گفت:

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