به نام خدایی که جان آفرید، زمین و زمان و مکان آفرید.
در مقاله “بررسی زبان، کامپایلر و محیطهای برنامه نویسی مختلف برای میکروکنترلر 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 میباشد.
آماده سازی محیط توسعه
نصب
فرآیند نصب 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 کلیک کند و منتظر شوید تا نصب پایان یابد.
گام چهارم – بهتر است محیط ویرایشگر را یک بار بسته و مجدداً باز نمایید.
اگر نصب به درستی انجام شده باشد، در نوار کناری VSCode باید آیکون PlatformIO را مطابق عکس زیر مشاهده کنید:
در این مرحله اگر آیکون PlatformIo را در Activity Bar مشاهده نکردید، احتمالاً VSCODE شما نیاز به نصب افزونههای دیگری دارد که از قبل بر روی سیستم شما وجود ندارد. اگر پیام زیر را مشاهده کردید، بر روی دکمه Install All کلیک کنید تا تمام افزونههای مورد نیاز شما نصب گردد.
بهتر است در صفحه نصب افزونه، تب Dependencies را نیز بررسی کرده و آنها را هم نصب کنید.
همچنین اگر علامتی شبیه علامت رفرش را در پایین صفحه مشاهده کردید که در حال گردش است، احتمالاً هنوز کار نصب افزونه شما به اتمام نرسیده است. در آخرین مرحله، یکبار 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 وجود دارند را پاک کنید. به همین راحتی!
اضافه کردن پروگرامر
برای آپلود فایل هگز برنامه نوشته شده بر روی تراشه، میبایست پروگرامر را به ویژوال استودیو کد معرفی کنید. platfomIo از نرم افزار avrdude برای آپلود فایل هگز استفاده میکند. این نرم افزار بهصورت دستوری (کامند) کار میکند. برای پیکر بندی پروگرامر خود در پلت فرم آی او، تکه کد زیر را با توجه به نوع پروگرامر خود ویرایش کرده و سپس به فایل platformio.ini اضافه کنید:
1 2 3 4 5 6 7 8 | upload_protocol = usbasp ; each flag in a new line upload_flags = -C$PROJECT_PACKAGES_DIR/tool-avrdude/avrdude.conf -pm32 -Pusb -cusbasp upload_command = avrdude $UPLOAD_FLAGS -U flash:w:$SOURCE:i |
در نهایت فایل platformio.ini برای این پروژه، کدی شبیه به این خواهد داشت:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | ;PlatformIO Project Configuration File ; ; Build options: build flags, source filter ; Upload options: custom upload port, speed and extra flags ; Library options: dependencies, extra library storages ; Advanced options: extra scripting ; ; Please visit documentation for the other options and examples ; https://docs.platformio.org/page/projectconf.html [env:ATmega32] platform = atmelavr board = ATmega32 upload_protocol = usbasp ; each flag in a new line upload_flags = -C$PROJECT_PACKAGES_DIR/tool-avrdude/avrdude.conf -pm32 -Pusb -cusbasp upload_command = avrdude $UPLOAD_FLAGS -U flash:w:$SOURCE:i |
اگر درایورهای پروگرامر شما با موفقیت نصب شده باشد و آن را به کامپیوتر خود متصل کنید، در مراحل بعد بدون هیچ مشکلی میتوانید برنامه خود را روی آی سی آپلود کنید!
شروع برنامه نویسی برای AVR
از آنجایی که شما میخواهید در ویژوال استودیو کد به زبان C برنامه بنویسید نه با زبان ++C، بر روی فایل main.cpp کلیک راست کرده و آن را پاک کنید. حال روی پوشه src کلیک راست کرده و فایل جدیدی به نام main.c میسازیم تا کدهایمان را درون این فایل بنویسیم.
پس از ساخت فایل main.c، آن را باز کنید تا اولین برنامه را برای AVR بنویسیم.
خوشبختانه کتابخانه (لایبری) های مورد نیاز AVR به طور پیش فرض به IDE ما اضافه شدهاند و شما دیگر لازم نیست آنها را اضافه کنید!
هورااا! یک مرحله جلو افتادیم! ?
کد زیر را به عنوان نمونه درون فایل main.c کپی کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <avr/io.h> #include <util/delay.h> int main() { DDRA = DDRB = DDRC = DDRD = 0xff; PORTA = PORTB = PORTC = PORTD = 0x00; while (1) { _delay_ms(500); PORTA ^= (1 << 1); _delay_ms(500); } } |
به وسیله دکمههای زیر، میتوانید برنامه خود را تست و یا بر روی تراشه بارگذاری کنید!
در ضمن کد خروجی شما توسط کامپایلر استاندارد و متن باز GCC تولید شده است که در مقایسه با کدویژن، از لحاظ بهبود و کارایی بسیار قویتر عمل میکند!
با سلام،
بنده خود افزونه Platform IO رو دانلود و نصب کردم و لازم به ذکر هست که حجمش زیر ۵۰ مگابایت بود ( صرفا خود افزونه ) .
اما برای کار با STM8 و STM32 لازمش داشتم، اقدام به ایجاد اولین پروژه STM8 کردم و طبیعتا نیازمند دانلود کامپایلر و تولچین های مورد نیاز بود، رو دکمه دانلود زدم ، بعد حدود ۲.۵ ساعت انتظار و مصرف بیهوده حدود ۰.۵ گیگ اینترنت، همچنان رو مرحله دانلود گیر کرده بود!
دیگه کلافه شدم و کلا عملیات رو لغو کردم.
ادیتور VS Code رو بخاطر مزایاش خیلی دوست دارم و ترجیح میدم ازش برای پروژه هام استفاده کنم، اما ایجاد ارتباط با کامپایلر مد نظر برام مکافاته.
شما چه روشی رو برام پیشنهاد میکنید که کم دردسر بتونم از VS Code برای STM8 و STM32 استفاده کنم؟؟
همون روز اتفاقی یه افزونه به اسم Em-IDE پیدا کردم، دقیقا همون چیزی بود که میخواستم!
بدون دردسر بین کامپایلر مدنظر و VS Code ارتباط ایجاد میکنه و تا حالا لازم نشده با Make File و … سر و کله بزنم.
از کامپایلر های رایگان SDCC, AVR-GCC, ARM-GCC,Cosmic و کامپایلر های غیر رایگان ARM CC و Keil و IAR پشتیبانی میکنه، به همین خاطر میشه به راحتی باهاش برای AVR , STM8 , STM32 , PIC و انواع میکروکنترلر های ARM برنامه نویسی و حتی دیباگ و پروگرام کرد!
کار کردن باهاش هم خیلی راحت هست،
کافیه افزونه رو نصب کنی و فایل پروژه رو ایجاد کنی ، خودش کامپایلر های نصب شده رو شناسایی میکنه و بسته به نوع میکروکنترلر، میشه کامپایلر رو انتخاب کرد.
بخاطر گذاشتن حق اختیار برای انتخاب کامپایلر ، به نظرم حتی از Platform IO هم بهتر هست!
سلام اموزش عالی بود ❤👍
من همه مراحل نصب رو انجام دادم
ولی کتابخانه های avr نصب نشدن و ارور میده
چکار کنم؟
دقیقا کدام قسمت به مشکل خوردید
ولی ممکنه تحریم شده باشه برخی از دانلودی ها
برای همین توصیه میکنم اول DNS های شکن رو ست کنید و مجددا تست کنید.
سلام وقت بخیر
من میخواستم با استفاده از کد های پایتون
به برد اردینو دستور بدم و کد هارو اجرا کنم
پلتفرم و اینارم نصب کردم
کسی میتونه راهنماییم بکنه ممنون میشم .
ایدی تلگرام : @xode_lucifer
خیلی ممنون از سایت خوبتون
سلام
وقتی اتمل استودیو هست چرا VS CODE ؟
سلیقه است و البته امکانات در اختیار
سلام
نمی دونم چرا platformio دیگه کامپایل نمکنه. از نو نصب کردم vs code دوباره نصب کردم باز هم نشد.
باید به دنبال لاگ خطا باشید و سعی کنید خطا رو برطرف کنید
مفید بود ،خدا قوت
؛)
سلام.
به هر زحمتی اولین برنامه رو بزای atmega32 بدون فریم ورک arduino در vscode به کمک pio نوشتم جواب داد ولی برای بار دوم که وارد vscode شدم و می خواستم برنامه قبلی که برای atmega32 نوشته بودم تغییر بدم و دیباگ کنم متاسفانه دیباگ و ران انجام نشد و error زیر اومد .
Unable to start debugging.The value of miDebuggerPath is invalid
میشه راهنمایی کنید!!!!!
سلام مجدد خوشحالم که کار رو پیش بردید
و خوشحال تر میشم که مقاله ای در این مورد بنویسید و برای ما ارسال کنید تا در اختیار دوستان دیگر قرار دهیم 🙂
خطایی که دریافت میکنید در این خصوص هست که ظاهرا مسیر دیباگر رو پیدا نمی کنه احتمالا path رو چک کنید ببینید دیباگر و پروگرامر در path سیستم هستند یا خیر
سلام و درود مجدد
نماز روزه همگی قبول باشه .
خیلی ممنون از پاسختون .
در مورد این ارور هنوز به نتیجه ای نرسیدم . البته شاید بخاطر این هست که فعلا فقط پروگرامر هاتل رو در دسترس دارم و احتمالا باید با امکانات دیگه ای امتحان کنم .
نکته ای نظرم رو جلب کرد همون طور که گفته بودم بخاطر نداشتن رابط مناسب برای تنظیمات کامپایلر یکم کار کردن با این افزونه گیج کننده هست . بطور مثال وقتی build رو انجام میدم در مورد توابع مربوط به util/delay در ترمینال platformio یک هشدار مبنی بر غیر فعال بودنcompiler optimization میده و به نوعی میگه که تضمینی برای صحیح کار کردن توابع تاخیر وجود نداره .
برای این مسئله آیا راهکاری به نظرتون میرسه؟ اگر هست خوشحال میشم راهنمایی کنید .
و یک مطلب دیگه این که به غیر از حروم کردن ۵ ،۶ گیگ فضای دیسک برای atmel studio که خیلیاشم از نظر من اضافس آیا امکانش هست که avr GCC رو با یک سازوکار ساده تر بشه ازش استفاده کرد ؟ چون ظاهرا platformio برای استفاده کردن نیاز به دانستن جزئیات و اطلاعات نرم افزاری بیشتری داره و به قول معروف داره حاشیه از متن پر رنگ تر میشه ، به جای اینکه به اصل مطلب که برنامه نویسی بپردازیم هی باید بگردیم تو اینترنت و ببینیم این مشکل چطور حل میشه ، اون ارور از چی بود ، اون هشتار چی میگه ….
پیشنهاد میکنم در ابتدای این مقاله ذکر کنید که حتما خوانندگان نظرات کاربران رو مطالعه کنن بعد تصمیم بگیرن که دو سه روز روی platformio وقت بذارن … تا اینجا که برای بنده pio جالب نبوده .
ممنون از وقتی که گذاشتید .
سلام و درود بر شما دوست عزیز 🙂
در خصوص این که برای حل مشکلات باید مدام در اینترنت سرچ کنید البته حق با شماست، اما این هم مثل هر چیزی جدیدی است که اولش تا میایم بهش عادت کنیم باید قلق های مختلفش رو یاد بگیریم و بعد از یادگرفتن اونها عادی میشه مساله
در خصوص 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 اضافه کنیم؟
ممنون میشم راهنمایی بفرمایید ….
سلام
خوب استفاده از کتابخانه های داخل کدویژن ممکن نیست چون که استاندارد نیستن ولی کلی کتابخانه خوب میتونید پیدا کنید که برای 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 رو کنار بگذارم .
ممنون که وقت گذاشتید …
سلام و درود بر شما
خوب من با platformio چندان کار نکردم ولی میدونم برای تنظیمات gui نداره و همه چیز رو باید توی فایل کانفیگ انجام بدید و به شکل تنظیمات متن است
سوال من اینه چرا رفتید سراغ platformio، و به سراغ اتمل استودیو نرفتید (البته فکر کنم الان اسمش یه چیزی دیگه ای شده باشه) این از GCC استفاده میکنه
و فکر میکنم بیشتر تنظیمات رو به شکل gui میشه توش انجام داد
شاید eclipse هم گزینه بدی نباشه 🙂
سلام . چطوری فایل هگز و وردارم ؟
درود بر شما
کنار فایل های پروژتون، داخل \.pio\build
همینطور میتونید خط زیر رو هم به فایل تنظیمات اضافه کنید و مسیر بیلد رو عوض کنید:
build_dir = ..\.pio_build_dir
سلام.
ممنون برای مقاله آموزنده تون
یه سوال
من مراحل بالا را مو به مو انجام دادم . هدف: output کردن PA.2 در atmega8. ولی کلا به DDR و PORT و delay_ms() خطا میگیره . مشکل از چی میتونه باشه ؟
فکر کنم برای این که بتونیم کمک کنیم لازمه متن خطا رو اینجا بذارید 🙂
سلام
atmega8 پورت A نداره. برا همین بهت ایراد گرفته.
برنامه ش خیلی هوشمنده
باسلام
ممنون برای مقالات آموزنده .
اگر امکان داره ، فایل pdf مقالات را هم برای دانلود در انتها قرار بدین .
با تشکر
ممنونم دوست عزیز
بررسی میکنم این پشنهاد رو
با سلام
یک دفعه اومدم به جای atmel studio ادامه برنامه رو توی vs code با platformio بنویسم به یک مشکل برخورد کردم دقیقا همون برنامه توی atmel studio جواب میده ولی تو vs code یه کم مشکل داره فکر کنم مشکل از فلگ های avr-gcc باشه من makefile که خود atmel studio رو درست کرده با فایلی که مال platform io هست رو براتون تو لینک گذاشتم اگر مشیه یه نگاه بکنید راستی ورژن gcc دوتا شون یکی چون خودم مال atmel رو کپی کردم جای platform io
اینم لینک فایل ها
https://drive.google.com/open?id=1KyUQcyAC_RPmGeQA3mGskmcCCPhUjSBG
خوب از اینا نمیشه گفت چرا – توی پلتفرم io موقع کامپایل چه خطایی دریافت میکنید
ای کاش خطایی که میداد رو قرار میدادید – اینطور بهتر میشه به نتیجه رسید
مشکل اینجاست که هیچ خطایی نمیده و کامل کامپایل میکنه ولی فایل hex خروجی تو اجرا روی میکرو درست کار نمیکنه
جالب اینجاست دقیقا برنامه رو کپی پست کردم و هیچ تغیری ندادم ولی تو خروجی اتمل کار میکنه خروجی platformio کار نمیکنه
جاب تری اینکه حجم فایل نهایی تو هر دوتا دقیقا برابره !!
راستی یک سوال دیگه هم داشتم اینکه فایل های COF خروجی codevosion توی دیباگ پروتئوس به درستی اجرا می شد و می شد خط به خط اجراش کرد ولی فایل elf خروجی gcc بعضی وقتا توی پروتئوس تمام خطوط رو اجرا نمی کنه علت چه می تونه باشه؟
فکر میکنم ضعف پروتئوس باشه – چون با استفاده از فایل های elf دیباگرها کار میکنند اگر مشکلی وجود داشته باشه دیباگرها قادر به کارکردن نیستند – گمان میکنم حتی اتمل استودیو هم از همین فایل برای شبیه سازی میکروکنترلر استفاده میکنه
نمیدونم الان مشکلتون رو حل کردید ؟ یا نه ؟
امان از این پروتئوس یک دفعه درست کار میکنه یک دفعه نه مشکل از پروتئوس بود تو عمل درسته.
یادم میآد اون اوایل که اومده بود این لامصب پروتئوس – میخواستم ال سی دی کارکتری رو باهاش راه بندازم
دو روز کامل سر کار بودم تا عملی تست کردم دیدم کدم درسته ! از اون پس دیگه هیچ وقت بهش اعتماد نکردم 😐
با سلام البته تغییر فگ 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
خوب کارکرد فلگ ها رو با یه جستجوی ساده می تونید پیدا کنید.
مثلا -gdwarf-2 یه فرمت خاض برای تولید محتوای دیباگ کد هست بیشتر برای دیباگ کردن برنامه کاربرد داره.
signed-char به کمپایلر میگه به صورت پیش فرض متغییر char از نوع با علامت باشه
اون دوتای آخری رو نمیدونم برای چی هست.
راستی ببخشد یک سوال دیگه هم داشتم شما debugger رو برای avr سراغ دارید که jtag باشه و نقشه و مدار در اینترنت باشه که بتونم خودم بسازم و با Atmel studio 7هم سازگار باشه چون من که گشتم یکی بود که با atmga16 و پورت سریال اسمش هم بود jtag-ice ولی فکر کنم تو نسخه های جدید پیشتیبانی نمیشه از طرفی آماده debugger برای avr هم وجود نداره. اگر هم باشه نسخه ها ی اصل است که خیلی گرونه.
با تشکر
فکر کنم همون jtag ice کار کنه !!!
تا حالا نشده که avr رو دیباگ کنم برای همین زیاد دنبالش نبودم .
سلام
من از 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 همچنان باقی است.
با تشکر
شبیه سازی واقعا دردسرش تو ایکلیپس نسیت به آتمل استودیو خیلی زیاده
خوشحالم که پیگیر هستید و مشکلات رو خودتون دارید حل میکنید اینا میشه تجربه و واقعا کاری در الکترونیک باید کرد همینه
پشتکار
فلگ -Os رو که اظافه کنی حجم خروجی کم میشه و برای سایز اپتیمایز میشه
خطا رو ببینید چه خطایی میده
توضیحات مرویط به کامپایل نشدن رو توی خطا گزارش میکنه
سلام – من خودم توی 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;
}
خروجی به من یک چیز دیگه میده
چیزی که باید مشخص بشه اینه که برای چه پلتفرمی کد رو کامپایل میکنید برای کامپیوتر یا avr یا چی ؟
چون احتمالا اگر avr مدنظرتون باشه برای خروجی و ورودی printf,scanf باید فانکشن های استریمر رو مشخص کنید.
برای کامپیوتر برای مثال تو code blocks این برنامه رو run میکردم یک پنچره باز میشد که عدد رو وارد میکردیم ولی الان توی vs code نمیشه این کارو کرد
خوب توی vs کد شما تنها میتونی ادیت کنی – البته فکر میکنم پلاگین هایی باشن که قابلیت کامپایل کد رو هم بهش میده 🙂
مثلا برای همین avr ما از platform io استفاده کردیم.
با سلام
برای تغییر فیوزبیت ها چیکار باید بکنیم؟
سلام دوست عزیز
برای نوشتن فیوز بیت ها یک راه اینه که از نرم افزار دیگه ای استفاده کنید که فیوز بیت ها رو راحت بتونید تغییر بدید
و یک راه دیگه استفاده از کلید های مربوط به برنامه ریزی پلتفرم هست که توی داکیومنت هاش میتونید مطالعه کنید.
سلام چه جوری میشه از این برنامه فایل hex گرفت؟
سلام – لینک زیر رو مطالعه کنید
https://community.platformio.org/t/where-to-find-a-bin-file/9496/9
بی نظیرید واقعا …
من درحال سوئیچ کردن برروی لینوکس اوبنتو هستم ..
ولی امروز بسیار بااین نرم افزار در ویندوز10 درگیر شدم سرنصب کردن opencv cppکه درنهایت هم موفق نشدم خواهشمندم اگر مقدوره نحوه نصب این کتابخونه رو هم اموزش بدید چون پایتون ازسرعت لازم برا کارهای منو نداره ممنونم (کتابخونهopencv pythonبه راحتی نصب شده و دارم استفاده میکنم)
دوستان برای اجرای کد های سی لازمه که افزونه codeRunnerرو هم نصب کنند..
به نظر من این بهتر از اکلیپس هسش چون اکلیپس برپایه جاوا نوشته شده و یخورده به منابع بیشتری نیاز داره
درود برشما. خیلی ممنون از تجربیاتتون. لینک زیر میتونه به شما در نصب openCV روی VSCODE کمک کنه:
https://stackoverflow.com/questions/51564772/how-to-use-the-opencv-c-with-vscode
مهندس یک کلیپ چینی موجوده که مشکل نصب کردن opencv cpp با ویژوال استودیو کد رو حل کرده اما من طبق همون پیش رفتم به مشکلاتی خوردم (در فایلcmake وغیره) که لینک اونو براتون میفرستم
من opencv cpp رو تا به حال برای VSCODE نصب نکرده ام.
سلام
این نرم افزار خودش کتابخونه هایی برای قطعاتی مثل lcd و… نداره؟
خیر باید از کتابخانه های فروان موجود در سطح اینترنت استفاده کنید
منطقیشم همینه 🙂
سلام و خدا قوت
من می خوام پروگرمر هاتل رو اضافه کنم باید چه نوع پروگرمری رو انتخاب کنم؟ اگه نکات دیگه ای برای کار با پروگرمر هاتل و vs code وجود داره ممنون میشم.
سلام دوست عزیز تا اونجا که اطلاع دارم هاتل از پروتکل usbasp استفاده میکنه و میتونید بگید این پروگرامر به سیستم وصل شده.
به نام خدا
با سلام
مــثال برنامه را کپی و سپس کامپایل کردم برای رفع خطای برنامه چه کارکنم.
1- ” cannot open source file “util/delay.h
2- ” cannot open source file “avr/io.h
در ضمن
تنظیمات پروژه به این صورت می باشد
[env:MIGHTYCORE32]
platform = atmelavr
board = MIGHTYCORE32
سلام.
افزونه به درستی نصب نشده. اگر میتونید پاکش کنید و VSCODE رو مجددا راه اندازی کنید. در صفحه نصب platformIo، قبل از نصب کردن تب Dependences رو باز کنید و پیش نیاز هاش رو هم نصب کنید. موقع نصب، اگر پایین صفحه علامت رفرش رو مشاهده کردید که در حال گردش هست، صبر کنید تا پلت فرم آی او بصورت کامل نصب شود.
یا من اسم هو دواء و ذکر هو شفاء
سلام جمیعا
سیستم را خاموش و فردای آن روز( چهارشنبه )که روشن کردم اول وای فای سیستم را روشن و
سپس برنامه vs code را باز کردم .
برنامه خودکار شروع به اپدیت کردن فایل خود نمود. و پیغام ریستارت داد.
سپس نمونه کد avr را مجدد کامپایل کردم. و هیچگونه خطایی مشاهده نشد. برای اطمینان با برنامه پروتئوس تست شد که کار کرد.
با تشکر.
موفق باشید
سلام.
خیلی ممنون که تجربیاتتون رو بیان کردید.
سلام شماره پورت سریالی که پروگرامر بهش وصله رو از کجا بیارم؟ ممنون
خیلی ساده است اگر از ویندوز استفاده میکنید توی دیوایس منیجر ببینید وقتی پروگرامر رو وصل میکنید چه دستگاه جدیدی اظافه میشه همون میشه پورت پروگرامر
لینوکس هم که دوستان لینوکسی خودشون میتونن مشکل رو حل کنند.
سلام
ممنون
یه مقایسه ای هم با اتمل استدیو بشه بد نیست
اتمل استودیو که یه فاجعه تمام عیاره 😐
کیفیت کد خروجی با این روش فرقی نداره چون هر دو از gcc برای کامپایل کد استفاده می کنند ولی ادیتور اتمل استودیو بسیار سینگینه و حجم خیلی زیادی و میگیره و نیاز به سیستم قوی داره واقعا :/
اما این ویرایشگر واقعا سبکه و لایت هست