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

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

آماده سازی محیط VSCODE برای برنامه نویسی AVR
آماده سازی محیط VSCODE برای برنامه نویسی 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 تولید شده است که در مقایسه با کدویژن، از لحاظ بهبود و کارایی بسیار قوی‌تر عمل می‌کند!

حمایت از Digi Boy

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

پــــســنــدیـده انـد

توجه

Digi Boy
Digi Boy

به دانش فزای و به یزدان گرای، که او باد جان تو را رهنمای (فردوسی)

دیدگاه ها

64 دیدگاه

  • SalarHM
    ۲۱ اردیبهشت ۱۴۰۱

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

  • حامد کاظمی
    ۲۱ فروردین ۱۴۰۱

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

    • Zeus ‌
      Zeus ‌
      ۲۱ فروردین ۱۴۰۱

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

      • حامد کاظمی
        ۲۱ فروردین ۱۴۰۱

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

        • Zeus ‌
          Zeus ‌
          ۲۲ فروردین ۱۴۰۱

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

  • حامد کاظمی
    ۱۹ فروردین ۱۴۰۱

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

    • Zeus ‌
      Zeus ‌
      ۲۰ فروردین ۱۴۰۱

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

      • حامد کاظمی
        ۲۱ فروردین ۱۴۰۱

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

        • Zeus ‌
          Zeus ‌
          ۲۱ فروردین ۱۴۰۱

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

  • علیرضا
    ۲۴ آبان ۱۴۰۰

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

    • Digi Boy
      Digi Boy
      ۲۵ آبان ۱۴۰۰

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

  • m
    ۶ اردیبهشت ۱۳۹۹

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

    • Zeus ‌
      زئوس Zeus
      ۱۳ اردیبهشت ۱۳۹۹

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

    • محمد
      ۲۷ اردیبهشت ۱۴۰۰

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

  • m
    ۶ اردیبهشت ۱۳۹۹

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

    • Zeus ‌
      زئوس Zeus
      ۱۳ اردیبهشت ۱۳۹۹

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

  • علی ترابی
    علی ترابی
    ۲۳ فروردین ۱۳۹۹

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

    • علی ترابی
      علی ترابی
      ۲۳ فروردین ۱۳۹۹
      • Zeus ‌
        زئوس Zeus
        ۲۴ فروردین ۱۳۹۹

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

    • Zeus ‌
      زئوس Zeus
      ۲۴ فروردین ۱۳۹۹

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

      • علی ترابی
        علی ترابی
        ۲۴ فروردین ۱۳۹۹

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

        • علی ترابی
          علی ترابی
          ۲۶ فروردین ۱۳۹۹

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

          • Zeus ‌
            زئوس Zeus
            ۳۰ فروردین ۱۳۹۹

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

            0
        • Zeus ‌
          زئوس Zeus
          ۳۰ فروردین ۱۳۹۹

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

          • علی ترابی
            علی ترابی
            ۳۰ فروردین ۱۳۹۹

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

            0
          • Zeus ‌
            زئوس Zeus
            ۳۰ فروردین ۱۳۹۹

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

            0
          • علی ترابی
            علی ترابی
            ۵ خرداد ۱۳۹۹

            با سلام البته تغییر فگ 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

            0
          • Zeus ‌
            زئوس Zeus
            ۶ خرداد ۱۳۹۹

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

            0
          • علی ترابی
            علی ترابی
            ۵ خرداد ۱۳۹۹

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

            0
          • Zeus ‌
            زئوس Zeus
            ۶ خرداد ۱۳۹۹

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

            0
  • Mohammad Ataie
    mohammad ataie
    ۱۶ فروردین ۱۳۹۹

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

  • علی ترابی
    علی ترابی
    ۹ فروردین ۱۳۹۹

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

    • علی ترابی
      علی ترابی
      ۱۰ فروردین ۱۳۹۹

      جدیدا دارم به یک مشکلی برخورد می کنم چرا بعضی وقت ها با اینکه هیچ ارور و و خطایی وجود نداره و 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);
      }

      • علی ترابی
        علی ترابی
        ۱۰ فروردین ۱۳۹۹

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

        • علی ترابی
          علی ترابی
          ۱۰ فروردین ۱۳۹۹

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

          • Zeus ‌
            زئوس Zeus
            ۱۶ فروردین ۱۳۹۹

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

            0
        • Zeus ‌
          زئوس Zeus
          ۱۶ فروردین ۱۳۹۹

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

      • Zeus ‌
        زئوس Zeus
        ۱۶ فروردین ۱۳۹۹

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

    • Zeus ‌
      زئوس Zeus
      ۱۶ فروردین ۱۳۹۹

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

  • احسان
    ۴ فروردین ۱۳۹۹

    سلام من میخوام توی 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;
    }
    خروجی به من یک چیز دیگه میده

    • Zeus ‌
      زئوس Zeus
      ۵ فروردین ۱۳۹۹

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

      • احسان
        ۶ فروردین ۱۳۹۹

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

        • Zeus ‌
          زئوس Zeus
          ۹ فروردین ۱۳۹۹

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

  • مهدی
    ۱۴ اسفند ۱۳۹۸

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

    • Zeus ‌
      زئوس Zeus
      ۱۶ اسفند ۱۳۹۸

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

  • حاجی فیروز
    ۳ بهمن ۱۳۹۸

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

  • محمدرضاعابدینی
    ۷ دی ۱۳۹۸

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

  • Qwerty
    ۶ دی ۱۳۹۸

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

    • Zeus ‌
      زئوس Zeus
      ۶ دی ۱۳۹۸

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

  • من
    ۳ دی ۱۳۹۸

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

    • Zeus ‌
      زئوس Zeus
      ۴ دی ۱۳۹۸

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

  • دهقان
    ۲۶ آذر ۱۳۹۸

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

    • دهقان
      ۲۶ آذر ۱۳۹۸

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

    • Digi Boy
      Digi Boy
      ۲۷ آذر ۱۳۹۸

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

      • دهقان
        ۲۷ آذر ۱۳۹۸

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

        • Digi Boy
          Digi Boy
          ۲۸ آذر ۱۳۹۸

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

  • محسن
    ۲۶ آذر ۱۳۹۸

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

    • Zeus ‌
      زئوس Zeus
      ۲۷ آذر ۱۳۹۸

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

  • VHD
    ۲۵ آذر ۱۳۹۸

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

    • Zeus ‌
      زئوس Zeus
      ۲۶ آذر ۱۳۹۸

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

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

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

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 9 ماه پیش

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

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

حدود ۷ ماه پیش، مسابقه سوم سیسوگ رو برگزار کردیم و کلی نکته در مورد خواندن رشته‌های ورودی را بررسی کردیم. فکر...

Zeus ‌ Zeus ‌
  • 1 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 2 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک