AVR, برنامه نویسی, توصیه شده, مقاله های سیسوگ, میکروکنترلر

آماده سازی محیط VSCODE برای برنامه نویسی AVR

آماده سازی VS CODE برای AVR - سیسوگ

به نام خدایی که جان آفرید، زمین و زمان و مکان آفرید.

در مقاله “بررسی زبان، کامپایلر و محیط‌های برنامه نویسی مختلف برای میکروکنترلر AVR” برخی از محیط‌ها و زبان‌های مورد استفاده برای میکروکنترلر AVR بررسی شد. در انتها یکی از پیشنهادها این بود که از یک محیط توسعه خوب، به همراه کامپایلر GCC استفاده کنید. یکی از این محیط‌های برنامه نویسی بسیار قوی و در عین حال ساده، محیط ویژوال استودیو کد می‌باشد. این نرم افزار همچون ++Notepad برای نصب و اجرا به فضا و سیستم بسیار قوی نیاز ندارد و شما تقریباً می‌توانید آن را روی هر سیستمی راه اندازی نمایید. در این مقاله، شما می‌آموزید که چگونه محیط این نرم افزار را برای برنامه نویسی بر روی میکروکنترلر AVR و بسیاری از برد های دیگر آماده و شروع به برنامه نویسی کنید.

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

 

VSCODE

آیکون نرم افزار ویژوال استادیو کد

VSCODE مخفف عبارت Visual Studio Code (ویژوال استادیو کد) می‌باشد. VSCODE یک CodeEditor یا محیط ویرایشگر کد است که به‌صورت رایگان از گیت‌هاب قابل دریافت می‌باشد. این کد ادیتور برای سیستم عامل‌های مختلفی، از جمله ویندوز، مک و لینوکس ارائه شده است و زبان‌های برنامه نویسی مختلفی از جمله پایتون، سی پلاس پلاس، جاوا و … را پشتیبانی می‌کند. حال، می‌خواهیم با افزودن کامپایلر و ابزارهای مرتبط به این ویرایشگر کد، آن را به یک IDE یا محیط یکپارچه توسعه برای AVR با زبان ++C/C تبدیل کنیم.

 

از ویژگی های VSCODE

  • سبک بودن و اجرای روان
  • کراس پلت فرم بودن – اجرا بر روی انواع مختلف سیستم عامل‌ها
  • پشتیبانی از GCC و Clang به خوبی کامپایلر ++C ماکروسافت
  • ابزار های آنالیز و بررسی کد های ++C
  • خطایاب و دیباگر (Debugger) اختصاصی
  • پشتیبانی از گیت
  • قابلیت multi-monitor به منظور مدیریت و سازماندهی بهتر
  • نوآوری ها و امکانات جدید در زبانهای #C و Visual Basic

 

رتبه و جایگاه در میان دیگر رقبا

در تصویر زیر، همان‌گونه که مشاهده می‌کنید، پلت فرم خاصی انتخاب نشده است و مقایسه به‌طور کلی میان کد ادیتور ها صورت گرفته است. نکته‌ای که در این تصویر وجود دارد، بالاتر بودن جایگاه ویژوال استودیو کد، حتی نسبت به ابزارهای رایگانی مثل ++Notepad و Sublime Text می‌باشد.

مقایسه برترین IDE یا محیط های برنامه نویسی در سال 2018

 

آماده سازی محیط توسعه

نصب

فرآیند نصب VS Code به سادگی دانلود فایل نصب و چند بار کلیک کردن بر روی دکمه Next صورت می پذیرد!

تبدیل VSCODE به IDE سخت افزار نویسی

اگر بخواهید از طریق افزودن کامپایلر GCC به VSCODE، آن را برای برنامه نویسی روی AVR آماده کنید، باید مراحل زیادی را طی کنید:

نصب Extension یا افزودنی ++C/C برای VSCODE

ایجاد تغییرات در فایل Json افزونه برای برنامه نویسی روی AVR

ساخت ورک اسپیس و فولدر جدید برای پروژه

افزودن و کانفیگ کامپایلر GCC به ویژوال استودیو کد

افزودن کتابخانه (لایبری) های مورد نیاز برنامه نویسی AVR به پروژه

مراحل و دردسر های ساخت make file

افزودن کامند های avrdude برای پروگرام کردن

و…

با توجه به طولانی و پیچیده بودن مراحل فوق، ممکن است برای کسانی که در مراحل اولیه برنامه نویسی هستند مشکلات زیادی را به وجود بیاورد. چه بسا شخصی فقط به خاطر ماندن در مراحل اولیه نصب، از آموختن برنامه نویسی به طور کلی پشیمان شود! اما راهکار بسیار ساده و کارآمدتری وجود دارد. این راهکار نه تنها بسیار ساده و روان‌تر است، بلکه حالت یک تیر و چند نشان نیز دارد. یعنی شما تنها یک بار با انجام این مراحل قادر خواهید بود تا محیط ویرایشگر ویژوال استودیو کد را نه تنها برای AVR، بلکه برای خیلی از بردهای الکترونیکی دیگر از جمله ARM و آردوینو نیز آماده سازید.

نصب افزونه PlatformIO بر روی ویژوال استودیو کد

افزونه متن باز و رایگان PlatformIO، به ویژوال استودیو این امکان را می‌دهد که بتوانید به‌صورت یکجا ابزارهای لازم برای برنامه نویسی روی AVR،ARM، آردوینو و بسیاری از بردهای الکترونیکی دیگر را داشته باشید. قبلاً در سیسوگ مقاله‌ای با عنوان “ویرایشگر حرفه‌ای ویژوال استودیو کد با طعم آردوینو” منتشر شد و در آن اتصال این افزونه به ویژوال استودیو، برای ایجاد یک پروژه آردوینو آموزش داده شد. حال، در این آموزش قصد دارم تا با استفاده از همین افزونه، پروژه AVR نیز بنویسم. PlatformIO در واقع یک اکوسیستم کامل و نسل جدید برای طراحی و توسعه سیستم‌های IOT (چیز نت) است. PlatformIO نزدیک به 600 دستگاه و برد IOT را پشتیانی می‌کند. بردهای آردینو نیز از این جمله بردها هستند.

برای نصب PlatformIO کافی ست تا مراحل زیر را انجام دهید:

گام اول – در نرم افزار VSCode (ویژوال استودیو کد) به قسمت Package Manager بروید.

گام دوم – عبارت platformio-ide را جستجو کنید.

گام سوم – بر روی کلید Install کلیک کند و منتظر شوید تا نصب پایان یابد.

گام چهارم – بهتر است محیط ویرایشگر را یک بار بسته و مجدداً باز نمایید.

آموزش نصب PlatfromIO در ویژوال استودیو کد

اگر نصب به درستی انجام شده باشد، در نوار کناری VSCode باید آیکون PlatformIO را مطابق عکس زیر مشاهده کنید:

در این مرحله اگر آیکون PlatformIo را در Activity Bar مشاهده نکردید، احتمالاً VSCODE شما نیاز به نصب افزونه‌های دیگری دارد که از قبل بر روی سیستم شما وجود ندارد. اگر پیام زیر را مشاهده کردید، بر روی دکمه Install All کلیک کنید تا تمام افزونه‌های مورد نیاز شما نصب گردد.

افزودنی های مورد نیاز vscode

 

بهتر است در صفحه نصب افزونه، تب Dependencies را نیز بررسی کرده و آن‌ها را هم نصب کنید.

افزونه های مورد نیاز نصب platformIo

همچنین اگر علامتی شبیه علامت رفرش را در پایین صفحه مشاهده کردید که در حال گردش است، احتمالاً هنوز کار نصب افزونه شما به اتمام نرسیده است. در آخرین مرحله، یکبار VSCODE را بسته و مجدداً باز کنید.

ساخت اولین پروژه آردوینو با ویژوال استودیو کد

برای ساخت پروژه ابتدا به صفحه خانه (Home) در PlatfromIO بروید و بر روی کلید New Project کلیک کنید.

 

بعد از فشردن کلید New Project پنجره‌ای ظاهر می‌شود که لازم است نوع سخت افزار و اسم پروژه و البته فریمورک مورد استفاده را در آن مشخص کنید.

ایجاد پروژه جدید در پلت فرم آی او

1- نامی برای پروژه خود انتخاب کنید.

> همیشه سعی کنید برای پروژه هایتان یک محل مشخص، با آدرس دهی و نام گذاری منطقی استفاده کنید.

> هر چند این نام گذاری دلخواه است، اما توصیه می‌کنم همیشه نام پروژه را با حروف کوچک و بدون فاصله وارد کنید. کاراکتر آندراسکور “_” را نیز سعی کنید تنها در میان دو کلمه‌ای که معنی متفاوت از هم دارند بکار ببرید. برای مثال framework یک کلمه است و لازم نیست میان frame و work فاصله بیندازید.

2- برد دلخواهتان را انتخاب کنید. در این پروژه، به عنوان نمونه تراشه میکروکنترلر AVR ATmega32 انتخاب شده است.

3- چارچوب برنامه نویسی (Framework) خود را انتخاب کنید. همان‌طور که می‌بینید، در این لیست برای AVR تنها فریمورک آردوینو قابل انتخاب است. اگر شما می‌خواهید با زبان C برای این میکروکنترلر برنامه بنویسید، نگران نباشید. در ادامه تغییری ایجاد می‌کنیم تا بتوانید مستقیماً با C برای AVR کد بنویسید.

4- دکمه‌ی پایان را فشار دهید.

حال، کمی منتظر بمانید تا محیط برنامه نویسی برای شما آماده شود:

آماده سازی اولیه برنامه نویسی پلت فرم آی او

 

پس از ایجاد پروژه، شما می‌توانید با فریمورک آردوینو، بدون هیچ مشکلی برای تراشه‌های مختلف AVR مثل ATmega32 و… برنامه نویسی کنید. برای این کار تنها کافی است تا فایل main.cpp را انتخاب کرده و شروع به کد نویسی کنید. قبلاً در پست “ویرایشگر حرفه‌ای ویژوال استودیو کد با طعم آردوینو” روش آپلود و تست برنامه آردوینو به همراه مثال عملی توضیح داده شده است.

 

برنامه نویسی برای AVR، بدون فریمورک آردوینو و با زبان C

از میان فایل‌های پروژه، platformio.ini را برای ویرایش باز کنید. حال خطوطی که در آن framework = arduino وجود دارند را پاک کنید. به همین راحتی!

حذف پلت فرم آردوینو از VSCODE برای avr

 

اضافه کردن پروگرامر

برای آپلود فایل هگز برنامه نوشته شده بر روی تراشه، می‌بایست پروگرامر را به ویژوال استودیو کد معرفی کنید. platfomIo از نرم افزار avrdude برای آپلود فایل هگز استفاده می‌کند. این نرم افزار به‌صورت دستوری (کامند) کار می‌کند. برای پیکر بندی پروگرامر خود در پلت فرم آی او، تکه کد زیر را با توجه به نوع پروگرامر خود ویرایش کرده و سپس به فایل platformio.ini اضافه کنید:

توضیح خط اول
در مقابل = upload_protocol نوع پروگرامر خود را وارد کنید. با توجه به لیست بزرگ پروگرامر های پشتیبانی شده، احتمال اینکه پروگرامر شما در این لیست باشد، بسیار زیاد است. ابتدا اسم پروگرامر خود را از این لیست پیدا کرده، سپس آن را کپی کنید و به جای مقدار usbasp قرار دهید. توجه داشته باشید که برخی پروگرامرها چند مدل دارند، مثل stk500. پس باید دقت داشته باشید که دقیقاً پروگرامر خودتان را انتخاب کنید. پروگرامر مورد استفاده در این آموزش usbasp می‌باشد.

*****

توضیح خط پنجم
خط پنجم، نوع میکروکنترلر را مشخص می‌کنید. میکروکنترلر مورداستفاده در این آموزش ATmega32 است که مقدار آن m32 است. پس در خط پنجم عبارت pm32- پارامتر شناسایی این میکروکنترلر خواهد بود. نوع میکرو کنترلر خود را از این لیست می‌توانید انتخاب نمایید.

*****

توضیح خط ششم

پارامتر بعدی پورت است که مقدار آن در اینجا USB قرار داده شده است. اگر پروگرامر شما سریال بود، این پارامتر را پاک کرده و در انتها، کدهای زیر را اضافه کنید:

SERIAL_PORT_HERE: شماره پورت سریالی که پروگرامر شما به آن متصل شده را به جای این مقدار قرار دهید.

115200 حداکثر سرعت انتقال اطلاعات از طریق پورت سریال است. شما می‌توانید این مقدار را با سرعت‌های استاندار عوض کنید.

 

*****

توضیح خط هفتم

در این قسمت مجدداً با استفاده از پارامتر c-، نوع پروگرامر خود را به avrdude معرفی کرده‌ایم.

*****

در نهایت فایل platformio.ini برای این پروژه، کدی شبیه به این خواهد داشت:

 

اگر درایورهای پروگرامر شما با موفقیت نصب شده باشد و آن را به کامپیوتر خود متصل کنید، در مراحل بعد بدون هیچ مشکلی می‌توانید برنامه خود را روی آی سی آپلود کنید!

 

شروع برنامه نویسی برای AVR

از آنجایی که شما می‌خواهید در ویژوال استودیو کد به زبان C برنامه بنویسید نه با زبان ++C، بر روی فایل main.cpp کلیک راست کرده و آن را پاک کنید. حال روی پوشه src کلیک راست کرده و فایل جدیدی به نام main.c می‌سازیم تا کدهایمان را درون این فایل بنویسیم.

ایجاد فایل جدید در پروژه VSCODE

 

پس از ساخت فایل main.c، آن را باز کنید تا اولین برنامه را برای AVR بنویسیم.

لایبری های از قبل اضافه شده به AVR

خوشبختانه کتابخانه (لایبری) های مورد نیاز AVR به طور پیش فرض به IDE ما اضافه شده‌اند و شما دیگر لازم نیست آن‌ها را اضافه کنید!

هورااا! یک مرحله جلو افتادیم! ?

کد زیر را به عنوان نمونه درون فایل main.c کپی کنید.

 

به وسیله دکمه‌های زیر، می‌توانید برنامه خود را تست و یا بر روی تراشه بارگذاری کنید!

کامپایل و آپلود روی میکروکنترلر

 

در ضمن کد خروجی شما توسط کامپایلر استاندارد و متن باز GCC تولید شده است که در مقایسه با کدویژن، از لحاظ بهبود و کارایی بسیار قوی‌تر عمل می‌کند!

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

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

71 دیدگاه در “آماده سازی محیط VSCODE برای برنامه نویسی AVR

  1. Avatar for محمدرضا محمدرضا گفت:

    سلام اموزش عالی بود ❤👍
    من همه مراحل نصب رو انجام دادم
    ولی کتابخانه های avr نصب نشدن و ارور میده
    چکار کنم؟

    1. Avatar for Zeus ‌ Zeus ‌ گفت:

      دقیقا کدام قسمت به مشکل خوردید
      ولی ممکنه تحریم شده باشه برخی از دانلودی ها
      برای همین توصیه میکنم اول DNS های شکن رو ست کنید و مجددا تست کنید.

  2. Avatar for متین متین گفت:

    سلام وقت بخیر
    من میخواستم با استفاده از کد های پایتون
    به برد اردینو دستور بدم و کد هارو اجرا کنم
    پلتفرم و اینارم نصب کردم
    کسی میتونه راهنماییم بکنه ممنون میشم .
    ایدی تلگرام : @xode_lucifer
    خیلی ممنون از سایت خوبتون

  3. Avatar for ابوالفضل ابوالفضل گفت:

    سلام
    وقتی اتمل استودیو هست چرا VS CODE ؟

    1. Avatar for Zeus ‌ Zeus ‌ گفت:

      سلیقه است و البته امکانات در اختیار

  4. Avatar for فاضل فاضل گفت:

    سلام
    نمی دونم چرا platformio دیگه کامپایل نمکنه. از نو نصب کردم vs code دوباره نصب کردم باز هم نشد.

    1. Avatar for Zeus ‌ Zeus ‌ گفت:

      باید به دنبال لاگ خطا باشید و سعی کنید خطا رو برطرف کنید

  5. Avatar for SalarHM SalarHM گفت:

    مفید بود ،خدا قوت
    ؛)

  6. Avatar for حامد کاظمی حامد کاظمی گفت:

    سلام.
    به هر زحمتی اولین برنامه رو بزای atmega32 بدون فریم ورک arduino در vscode به کمک pio نوشتم جواب داد ولی برای بار دوم که وارد vscode شدم و می خواستم برنامه قبلی که برای atmega32 نوشته بودم تغییر بدم و دیباگ کنم متاسفانه دیباگ و ران انجام نشد و error زیر اومد .
    Unable to start debugging.The value of miDebuggerPath is invalid
    میشه راهنمایی کنید!!!!!

    1. Avatar for Zeus ‌ Zeus ‌ گفت:

      سلام مجدد خوشحالم که کار رو پیش بردید
      و خوشحال تر میشم که مقاله ای در این مورد بنویسید و برای ما ارسال کنید تا در اختیار دوستان دیگر قرار دهیم 🙂
      خطایی که دریافت می‌کنید در این خصوص هست که ظاهرا مسیر دیباگر رو پیدا نمی کنه احتمالا path رو چک کنید ببینید دیباگر و پروگرامر در path سیستم هستند یا خیر

      1. Avatar for حامد کاظمی حامد کاظمی گفت:

        سلام و درود مجدد
        نماز روزه همگی قبول باشه .
        خیلی ممنون از پاسختون .
        در مورد این ارور هنوز به نتیجه ای نرسیدم . البته شاید بخاطر این هست که فعلا فقط پروگرامر هاتل رو در دسترس دارم و احتمالا باید با امکانات دیگه ای امتحان کنم .
        نکته ای نظرم رو جلب کرد همون طور که گفته بودم بخاطر نداشتن رابط مناسب برای تنظیمات کامپایلر یکم کار کردن با این افزونه گیج کننده هست . بطور مثال وقتی build رو انجام میدم در مورد توابع مربوط به util/delay در ترمینال platformio یک هشدار مبنی بر غیر فعال بودنcompiler optimization میده و به نوعی میگه که تضمینی برای صحیح کار کردن توابع تاخیر وجود نداره .
        برای این مسئله آیا راهکاری به نظرتون میرسه؟ اگر هست خوشحال میشم راهنمایی کنید .
        و یک مطلب دیگه این که به غیر از حروم کردن ۵ ،۶ گیگ فضای دیسک برای atmel studio که خیلیاشم از نظر من اضافس آیا امکانش هست که avr GCC رو با یک سازوکار ساده تر بشه ازش استفاده کرد ؟ چون ظاهرا platformio برای استفاده کردن نیاز به دانستن جزئیات و اطلاعات نرم افزاری بیشتری داره و به قول معروف داره حاشیه از متن پر رنگ تر میشه ، به جای اینکه به اصل مطلب که برنامه نویسی بپردازیم هی باید بگردیم تو اینترنت و ببینیم این مشکل چطور حل میشه ، اون ارور از چی بود ، اون هشتار چی میگه ….
        پیشنهاد میکنم در ابتدای این مقاله ذکر کنید که حتما خوانندگان نظرات کاربران رو مطالعه کنن بعد تصمیم بگیرن که دو سه روز روی platformio وقت بذارن … تا اینجا که برای بنده pio جالب نبوده .
        ممنون از وقتی که گذاشتید .

        1. Avatar for Zeus ‌ Zeus ‌ گفت:

          سلام و درود بر شما دوست عزیز 🙂
          در خصوص این که برای حل مشکلات باید مدام در اینترنت سرچ کنید البته حق با شماست، اما این هم مثل هر چیزی جدیدی است که اولش تا میایم بهش عادت کنیم باید قلق های مختلفش رو یاد بگیریم و بعد از یادگرفتن اونها عادی میشه مساله
          در خصوص pio من خودم باهاش راحت نیستم، بگذارید اول من راه حل خودم رو بگم، من برای کار با avr مدت زیادی از makefile استفاد میکردم و به خوبی هم کار می‌کرد و هر تنظیمی که لازم داشتم رو به ساده ترین شکل ممکن توی makefile اعمال میکردم
          خوب کارکردن با makefile به سادگی کار کردن با gui نیست باید نوشتن (حالا نوشتن هم نه ولی تغییر ) makefile رو بدونید.
          بعد از حدود ۵ سال رفتم سراغ eclipse که خیلی عالی بود و gui هم داشت برای تنظیمات اما متاسفانه افزونه ای که برای avr ارائه شده بود آپدیت نشد و الان با نسخه های آخر eclipse همخوانی نداره و درست کار نمی‌کنه، برای همین شد که من الان خودم به شخصه از cmake استفاده میکنم و هر ادیتور دلخواهی ، ولی در نهایت استفاده از GCC بسیار خوبه بعد از این که بهش عادت کردید من فکر میکنم دنیا تغییر خواهد کرد.

  7. Avatar for حامد کاظمی حامد کاظمی گفت:

    سلام و خدا قوت خدمت شما .
    سوال بنده این هست که حالا که قصد داریم بجای codevision از vscode با افزونه platformio استفاده کنیم چطور میتونیم از کتابخانه های معروف codecvision مثل LCD کاراکتری یا PFF برای اتصال sdcard و غیره استفاده کنیم ؟
    البته نمیخواهیم از فریم ورک arduino در پروژمون استفاده کنیم.
    یعنی چطور کتابخانه LCD کاراکتری و… برای avr GCC به platformIO اضافه کنیم؟
    ممنون میشم راهنمایی بفرمایید ….

    1. Avatar for Zeus ‌ Zeus ‌ گفت:

      سلام
      خوب استفاده از کتابخانه های داخل کدویژن ممکن نیست چون که استاندارد نیستن ولی کلی کتابخانه خوب میتونید پیدا کنید که برای GCC نوشتن و کدویژن اونها رو برداشته برای خودش تغییر داده مثلا برای SD که شما PFF رو مثال میزنید در واقع یه پروژه متن بازه که لینک اصلی پروژه رو در لینک زیر میتونید ببینید
      Petit FAT File System
      توصیه من استفاده از کتابخانه های متن باز هست که به پروژه خودتون اضافه کنید.

      1. Avatar for حامد کاظمی حامد کاظمی گفت:

        سلام مجدد .
        ممنون از پاسخ قبلی .
        حالا سوال دیگه بنده این هست که چون ما از فریم ورک آردوئینو استفاده نمیکنیم پس باید به یک شکلی بتونیم یه تنظیمات avr GCC دسترسی داشته باشیم . توی platformio من GUI مناسبی ندیدم که مثلا باهاش بشه مدل حافظه کامپایلر رو مشخص کرد یا پیشنهاد هایی برای optimize کردن کد و تعیین برنامه حافظه application یا boot رو برای avr GCC تعریف کرد ، همچنین نفهمیدم چطوری میشه تو این افزونه vscode کتابخونه تعریف کرد یا استفاده کرد (هم سورس c و هم هدرفایل) که خطایی نده .میشه راهنمایی کنید چطور این کارها با platformio انجام میشه ؟
        توضیحات توی اینترنت اغلب با این پیشفرض که ما داریم از فریم ورک arduino برای avr استفاده میکنیم نوشته شدن اما فعلا قصد بنده جایگزین کردن کامل codevision هست وگر نه آردوئینو رو با خود arduino IDE به راحتی میشه کار کرد .
        اگر تمام این مسائل پلتفرم io راه حلی به سادگی codevision داشته باشن میتونم با خیال راحت codevision رو کنار بگذارم .
        ممنون که وقت گذاشتید …

        1. Avatar for Zeus ‌ Zeus ‌ گفت:

          سلام و درود بر شما
          خوب من با platformio چندان کار نکردم ولی میدونم برای تنظیمات gui نداره و همه چیز رو باید توی فایل کانفیگ انجام بدید و به شکل تنظیمات متن است
          سوال من اینه چرا رفتید سراغ platformio، و به سراغ اتمل استودیو نرفتید (البته فکر کنم الان اسمش یه چیزی دیگه ای شده باشه) این از GCC استفاده میکنه
          و فکر میکنم بیشتر تنظیمات رو به شکل gui میشه توش انجام داد
          شاید eclipse هم گزینه بدی نباشه 🙂

  8. Avatar for علیرضا علیرضا گفت:

    سلام . چطوری فایل هگز و وردارم ؟

    1. Avatar photo Digi Boy گفت:

      درود بر شما
      کنار فایل های پروژتون، داخل ‎\.pio\build
      همین‌طور میتونید خط زیر رو هم به فایل تنظیمات اضافه کنید و مسیر بیلد رو عوض کنید:
      build_dir = ..\.pio_build_dir

  9. Avatar for m m گفت:

    سلام.
    ممنون برای مقاله آموزنده تون
    یه سوال
    من مراحل بالا را مو به مو انجام دادم . هدف: output کردن PA.2 در atmega8. ولی کلا به DDR و PORT و delay_ms() خطا میگیره . مشکل از چی میتونه باشه ؟

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

      فکر کنم برای این که بتونیم کمک کنیم لازمه متن خطا رو اینجا بذارید 🙂

    2. Avatar for محمد محمد گفت:

      سلام
      atmega8 پورت A نداره. برا همین بهت ایراد گرفته.
      برنامه ش خیلی هوشمنده

  10. Avatar for m m گفت:

    باسلام
    ممنون برای مقالات آموزنده .
    اگر امکان داره ، فایل pdf مقالات را هم برای دانلود در انتها قرار بدین .
    با تشکر

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

      ممنونم دوست عزیز
      بررسی میکنم این پشنهاد رو

  11. Avatar for علی ترابی علی ترابی گفت:

    با سلام
    یک دفعه اومدم به جای atmel studio ادامه برنامه رو توی vs code با platformio بنویسم به یک مشکل برخورد کردم دقیقا همون برنامه توی atmel studio جواب میده ولی تو vs code یه کم مشکل داره فکر کنم مشکل از فلگ های avr-gcc باشه من makefile که خود atmel studio رو درست کرده با فایلی که مال platform io هست رو براتون تو لینک گذاشتم اگر مشیه یه نگاه بکنید راستی ورژن gcc دوتا شون یکی چون خودم مال atmel رو کپی کردم جای platform io

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

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

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

      ای کاش خطایی که میداد رو قرار میدادید – اینطور بهتر میشه به نتیجه رسید

      1. Avatar for علی ترابی علی ترابی گفت:

        مشکل اینجاست که هیچ خطایی نمیده و کامل کامپایل میکنه ولی فایل hex خروجی تو اجرا روی میکرو درست کار نمیکنه
        جالب اینجاست دقیقا برنامه رو کپی پست کردم و هیچ تغیری ندادم ولی تو خروجی اتمل کار میکنه خروجی platformio کار نمیکنه
        جاب تری اینکه حجم فایل نهایی تو هر دوتا دقیقا برابره !!

        1. Avatar for علی ترابی علی ترابی گفت:

          راستی یک سوال دیگه هم داشتم اینکه فایل های COF خروجی codevosion توی دیباگ پروتئوس به درستی اجرا می شد و می شد خط به خط اجراش کرد ولی فایل elf خروجی gcc بعضی وقتا توی پروتئوس تمام خطوط رو اجرا نمی کنه علت چه می تونه باشه؟

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

            فکر میکنم ضعف پروتئوس باشه – چون با استفاده از فایل های elf دیباگرها کار میکنند اگر مشکلی وجود داشته باشه دیباگرها قادر به کارکردن نیستند – گمان میکنم حتی اتمل استودیو هم از همین فایل برای شبیه سازی میکروکنترلر استفاده میکنه

        2. Avatar for زئوس Zeus زئوس Zeus گفت:

          نمیدونم الان مشکلتون رو حل کردید ؟ یا نه ؟

          1. Avatar for علی ترابی علی ترابی گفت:

            امان از این پروتئوس یک دفعه درست کار میکنه یک دفعه نه مشکل از پروتئوس بود تو عمل درسته.

          2. Avatar for زئوس Zeus زئوس Zeus گفت:

            یادم میآد اون اوایل که اومده بود این لامصب پروتئوس – میخواستم ال سی دی کارکتری رو باهاش راه بندازم
            دو روز کامل سر کار بودم تا عملی تست کردم دیدم کدم درسته ! از اون پس دیگه هیچ وقت بهش اعتماد نکردم 😐

          3. Avatar for علی ترابی علی ترابی گفت:

            با سلام البته تغییر فگ avr-gcc بی تاثیر نبود من که فعلا از کاربرد همه این فلگ سر در نمیارم خوب ولی log اتمل استدیو موقع build کردن و حتی editor خود Proteus که به avr-gcc وصل میشه یک سری فلگ ها موقع build داشت که برنامه با اونا درست کار میکرد خوب من این فلگ ها رو با فلک های پیشفرض platform io که در این آدرس هست عوض کردم.
            “C:\Users\(username)\.platformio\platforms\atmelavr\builder\frameworks\_bare.py”

            تغیرات هم درون این عکس گزاشتم اگر ممکن بود در مورد این فلگ ها یک توضیحی مختصری به من بدهید.
            لینک
            http://s12.picofile.com/file/8398175500/1.jpg

          4. Avatar for زئوس Zeus زئوس Zeus گفت:

            خوب کارکرد فلگ ها رو با یه جستجوی ساده می تونید پیدا کنید.
            مثلا -gdwarf-2 یه فرمت خاض برای تولید محتوای دیباگ کد هست بیشتر برای دیباگ کردن برنامه کاربرد داره.
            signed-char به کمپایلر میگه به صورت پیش فرض متغییر char از نوع با علامت باشه
            اون دوتای آخری رو نمیدونم برای چی هست.

          5. Avatar for علی ترابی علی ترابی گفت:

            راستی ببخشد یک سوال دیگه هم داشتم شما debugger رو برای avr سراغ دارید که jtag باشه و نقشه و مدار در اینترنت باشه که بتونم خودم بسازم و با Atmel studio 7هم سازگار باشه چون من که گشتم یکی بود که با atmga16 و پورت سریال اسمش هم بود jtag-ice ولی فکر کنم تو نسخه های جدید پیشتیبانی نمیشه از طرفی آماده debugger برای avr هم وجود نداره. اگر هم باشه نسخه ها ی اصل است که خیلی گرونه.
            با تشکر

          6. Avatar for زئوس Zeus زئوس Zeus گفت:

            فکر کنم همون jtag ice کار کنه !!!
            تا حالا نشده که avr رو دیباگ کنم برای همین زیاد دنبالش نبودم .

  12. Avatar for mohammad ataie mohammad ataie گفت:

    سلام
    من از VSC برای کد نویسی در ESP8266 استفاده میکنم
    یک سوال : چگونه میشود کاری کرد که کنابخانه ها هم در پوشه پروژه ذخیره بشه تا در آینده بشه از اونها استفاده کرد؟
    و سوال دیگه اینه که موقع اضافه کردن کتابخانه ، تنظیمات خاصی باید انجام بشه؟

  13. Avatar for علی ترابی علی ترابی گفت:

    با سلام vscode خیلی سبک و روان هست ولی اصلی ترین مشکلش اینکه سری avr رو به جز تعداد محدودی که اونم atmega های معمول نیست اصلا دیباگ نمیکنه..
    جناب زئوس لطفا یک آموزش راه اندازی eclipse برای avr بزارید فقط همین سوال رو جواب بدید که شما آیا از افزونه avr برای eclipseکه سال هاست بروز نشده یا نه شیوه دیگری برای برنامه نویسی برای avr دارید.

    1. Avatar for علی ترابی علی ترابی گفت:

      جدیدا دارم به یک مشکلی برخورد می کنم چرا بعضی وقت ها با اینکه هیچ ارور و و خطایی وجود نداره و avr-gcc به کلی یک تابع رو کامپایل نمی کنه یا بخشی رو بیخیال میشه؟ الآن مشکل این تابع چیه که به هیچ دلیلی اصلا کاماپل نمیشه؟
      uint8_t bcdbin(uint8_t bcd)
      {
      uint8_t bcda,bcdb;
      bcda=bcdb=bcd;
      bcdb=(bcdb&15);
      bcda=(10*(bcda>>4));
      return (bcda+bcdb);
      }

      1. Avatar for علی ترابی علی ترابی گفت:

        به نظر قضیه اینکه کامپایلر خودش بهینه میکنه چون وقطه بهینه سازی رو گزاشتم رو none -O0درست شد ولی حجم کد خیلی زیاد شد به طوری که از 6Kbyte رسید به 12Kbyteچون من هنوز کامل مسلط نیستم آیا چیزی وجود دارد که با نوشتم اون کامپایلر از بهینه سازی این بخش صرف نظر کنه.؟

        1. Avatar for علی ترابی علی ترابی گفت:

          مشکل حل شد ولی اگه می شد یه قابلیتی میزاشتید تا پیام هایی که هنوز تایید نشده اند رو بشه ویرایش کرد یا حذف کرد.
          ولی مشکل شبیه ساز eclipse برای avr gcc همچنان باقی است.
          با تشکر

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

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

        2. Avatar for زئوس Zeus زئوس Zeus گفت:

          فلگ -Os رو که اظافه کنی حجم خروجی کم میشه و برای سایز اپتیمایز میشه

      2. Avatar for زئوس Zeus زئوس Zeus گفت:

        خطا رو ببینید چه خطایی میده
        توضیحات مرویط به کامپایل نشدن رو توی خطا گزارش میکنه

    2. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام – من خودم توی vs کد از افزونه platfom io استفاده میکنم و مشلی باهاش ندارم
      و اما در مورد کار کردن با eclipse همونطور که اشاره کردید یک راهش استفاده از پلاگین دوره پارینه سنگیه که فکر میکنم با ورژن های جدید eclipse مشکل هم داشته باشه و
      اما راه دوم استفاده از پروژه های مبتنی بر makefile هستش

  14. Avatar for احسان احسان گفت:

    سلام من میخوام توی vs code با زبان c برنامه بنویسیم ولی خروجی نمیگیرم برای مثال مینویسیم #include

    int main()
    {
    int a , b ,c ;
    printf(“please inter an integer :\n”);
    scanf(“%d”,a);

    printf(“please inter another integer:\n”);
    scanf(“%d”,b);

    c = a+b;
    printf(“%d + %d = %d “,a ,b ,c);

    return 0;
    }
    خروجی به من یک چیز دیگه میده

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

      چیزی که باید مشخص بشه اینه که برای چه پلتفرمی کد رو کامپایل میکنید برای کامپیوتر یا avr یا چی ؟
      چون احتمالا اگر avr مدنظرتون باشه برای خروجی و ورودی printf,scanf باید فانکشن های استریمر رو مشخص کنید.

      1. Avatar for احسان احسان گفت:

        برای کامپیوتر برای مثال تو code blocks این برنامه رو run میکردم یک پنچره باز میشد که عدد رو وارد میکردیم ولی الان توی vs code نمیشه این کارو کرد

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

          خوب توی vs کد شما تنها میتونی ادیت کنی – البته فکر میکنم پلاگین هایی باشن که قابلیت کامپایل کد رو هم بهش میده 🙂
          مثلا برای همین avr ما از platform io استفاده کردیم.

  15. Avatar for مهدی مهدی گفت:

    با سلام
    برای تغییر فیوزبیت ها چیکار باید بکنیم؟

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

      سلام دوست عزیز
      برای نوشتن فیوز بیت ها یک راه اینه که از نرم افزار دیگه ای استفاده کنید که فیوز بیت ها رو راحت بتونید تغییر بدید
      و یک راه دیگه استفاده از کلید های مربوط به برنامه ریزی پلتفرم هست که توی داکیومنت هاش میتونید مطالعه کنید.

  16. Avatar for حاجی فیروز حاجی فیروز گفت:

    سلام چه جوری میشه از این برنامه فایل hex گرفت؟

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

      سلام – لینک زیر رو مطالعه کنید
      https://community.platformio.org/t/where-to-find-a-bin-file/9496/9

  17. Avatar for محمدرضاعابدینی محمدرضاعابدینی گفت:

    بی نظیرید واقعا …
    من درحال سوئیچ کردن برروی لینوکس اوبنتو هستم ..
    ولی امروز بسیار بااین نرم افزار در ویندوز10 درگیر شدم سرنصب کردن opencv cppکه درنهایت هم موفق نشدم خواهشمندم اگر مقدوره نحوه نصب این کتابخونه رو هم اموزش بدید چون پایتون ازسرعت لازم برا کارهای منو نداره ممنونم (کتابخونهopencv pythonبه راحتی نصب شده و دارم استفاده میکنم)
    دوستان برای اجرای کد های سی لازمه که افزونه codeRunnerرو هم نصب کنند..
    به نظر من این بهتر از اکلیپس هسش چون اکلیپس برپایه جاوا نوشته شده و یخورده به منابع بیشتری نیاز داره

    1. Avatar photo Digi Boy گفت:

      درود برشما. خیلی ممنون از تجربیاتتون. لینک زیر میتونه به شما در نصب openCV روی VSCODE کمک کنه:
      https://stackoverflow.com/questions/51564772/how-to-use-the-opencv-c-with-vscode

      1. Avatar for محمدرضاعابدینی محمدرضاعابدینی گفت:

        مهندس یک کلیپ چینی موجوده که مشکل نصب کردن opencv cpp با ویژوال استودیو کد رو حل کرده اما من طبق همون پیش رفتم به مشکلاتی خوردم (در فایلcmake وغیره) که لینک اونو براتون میفرستم

        1. Avatar photo Digi Boy گفت:

          من opencv cpp رو تا به حال برای VSCODE نصب نکرده ام.

  18. Avatar for Qwerty Qwerty گفت:

    سلام
    این نرم افزار خودش کتابخونه هایی برای قطعاتی مثل lcd و… نداره؟

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

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

  19. Avatar for من من گفت:

    سلام و خدا قوت
    من می خوام پروگرمر هاتل رو اضافه کنم باید چه نوع پروگرمری رو انتخاب کنم؟ اگه نکات دیگه ای برای کار با پروگرمر هاتل و vs code وجود داره ممنون میشم.

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

      سلام دوست عزیز تا اونجا که اطلاع دارم هاتل از پروتکل usbasp استفاده میکنه و میتونید بگید این پروگرامر به سیستم وصل شده.

  20. Avatar for دهقان دهقان گفت:

    به نام خدا
    با سلام
    مــثال برنامه را کپی و سپس کامپایل کردم برای رفع خطای برنامه چه کارکنم.
    1- ” cannot open source file “util/delay.h
    2- ” cannot open source file “avr/io.h

    1. Avatar for دهقان دهقان گفت:

      در ضمن
      تنظیمات پروژه به این صورت می باشد
      [env:MIGHTYCORE32]
      platform = atmelavr
      board = MIGHTYCORE32

    2. Avatar photo Digi Boy گفت:

      سلام.
      افزونه به درستی نصب نشده. اگر میتونید پاکش کنید و VSCODE رو مجددا راه اندازی کنید. در صفحه نصب platformIo، قبل از نصب کردن تب Dependences رو باز کنید و پیش نیاز هاش رو هم نصب کنید. موقع نصب، اگر پایین صفحه علامت رفرش رو مشاهده کردید که در حال گردش هست، صبر کنید تا پلت فرم آی او بصورت کامل نصب شود.

      1. Avatar for دهقان دهقان گفت:

        یا من اسم هو دواء و ذکر هو شفاء
        سلام جمیعا
        سیستم را خاموش و فردای آن روز( چهارشنبه )که روشن کردم اول وای فای سیستم را روشن و
        سپس برنامه vs code را باز کردم .
        برنامه خودکار شروع به اپدیت کردن فایل خود نمود. و پیغام ریستارت داد.
        سپس نمونه کد avr را مجدد کامپایل کردم. و هیچگونه خطایی مشاهده نشد. برای اطمینان با برنامه پروتئوس تست شد که کار کرد.
        با تشکر.
        موفق باشید

        1. Avatar photo Digi Boy گفت:

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

  21. Avatar for محسن محسن گفت:

    سلام شماره پورت سریالی که پروگرامر بهش وصله رو از کجا بیارم؟ ممنون

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

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

  22. Avatar for VHD VHD گفت:

    سلام
    ممنون
    یه مقایسه ای هم با اتمل استدیو بشه بد نیست

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

      اتمل استودیو که یه فاجعه تمام عیاره 😐
      کیفیت کد خروجی با این روش فرقی نداره چون هر دو از gcc برای کامپایل کد استفاده می کنند ولی ادیتور اتمل استودیو بسیار سینگینه و حجم خیلی زیادی و میگیره و نیاز به سیستم قوی داره واقعا :/
      اما این ویرایشگر واقعا سبکه و لایت هست

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

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