تراشه ها را دوباره برنامه ریزی کنید. برنامه نویسی میکروکنترلر برای مبتدیان: آسان و در دسترس

موضوع طراحی الکترونیکی به طور فزاینده ای محبوب می شود. ما مقاله ای را مورد توجه شما قرار می دهیم که در مورد میکروکنترلرهای مبتدی به شما می گوید.

چه میکروکنترلرهایی وجود دارد؟

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

میکروکنترلرها چگونه برنامه ریزی می شوند؟

برنامه ریزی میکروکنترلرها معمولاً با استفاده از دستگاه های خاصی به نام برنامه نویس انجام می شود. برنامه نویس ها را می توان خریداری کرد یا خانگی. اما هنگام فلش کردن یک میکروکنترلر با استفاده از یک برنامه نویس خانگی، احتمال تبدیل آن به "آجر" بسیار زیاد است. گزینه دیگری وجود دارد که می توان با استفاده از برد آردوینو به عنوان مثال در نظر گرفت. این برد روی میکروکنترلر Atmel اجرا می شود و برای برنامه نویسی میکروکنترلرهای AVR استفاده می شود. این برد از قبل دارای یک بوت لودر از پیش فلش شده و یک پورت USB است که به شما امکان می دهد میکروکنترلر در حال استفاده را با خیال راحت فلش کنید، بدون اینکه کاربر به داده هایی دسترسی داشته باشد که می تواند به همین میکروکنترلر آسیب برساند. برنامه نویسی میکروکنترلرها برای مبتدیان آنقدرها هم که به نظر می رسد دشوار نیست و با کمی مهارت و هوشمندی شما را از نیاز به رفتن به سمت مکانیزم جدید نجات می دهد.

تفاوت های سخت افزاری بین میکروکنترلرهای مختلف

هنگام انتخاب میکروکنترلرها، باید به برخی از تفاوت های سخت افزاری، حتی نه از شرکت های مختلف، بلکه در یکسان توجه کنید. محدوده مدل. ابتدا باید به امکان بازنویسی اطلاعات روی میکروکنترلر توجه کنید. این تابع به شما امکان می دهد یک MK را برای مدت طولانی آزمایش کنید. همچنین به تعداد پین ها با هدف آنها توجه کنید. از فرکانس کاری کریستالی که مدار روی آن کار می کند غافل نشوید: تعداد عملیاتی که میکروکنترلر می تواند در ثانیه انجام دهد به آن بستگی دارد. هنگام بررسی این ویژگی ها و همچنین حافظه MK، در ابتدا ممکن است به نظر برسد که هیچ چیز معنی داری روی میکروکنترلرها نمی توان انجام داد، اما این یک نظر اشتباه است. به یاد داشته باشید که برنامه نویسی میکروکنترلر برای مبتدیان به بیشترین نیاز ندارد بهترین تکنولوژیدر ابتدا، اما شما می توانید چیزی قدرتمندتر را به عنوان ذخیره ذخیره کنید.

زبان های برنامه نویسی میکروکنترلر

دو زبان برای برنامه نویسی میکروکنترلرها استفاده می شود: C/C++ و اسمبلر. هر کدام از آنها مزایا و معایب خاص خود را دارند. بنابراین، اگر ما در مورد اسمبلر صحبت کنیم، این امکان را فراهم می کند که همه چیز را بسیار ظریف و کارآمد انجام دهیم، این امر به ویژه در مواردی که به اندازه کافی وجود ندارد مهم است. حافظه دسترسی تصادفییا ظرفیت عملیاتی (که البته به ندرت اتفاق می افتد). اما مطالعه آن و نوشتن برنامه بر روی آن مستلزم تلاش، وقت شناسی و زمان بسیار زیادی است. بنابراین، برای توسعه مبتنی بر میکروکنترلرها، اغلب از زبان های برنامه نویسی C و C++ استفاده می شود. آنها قابل درک ترند؛ در ظاهر و ساختارشان به گفتار انسان نزدیک هستند، اگرچه آن را با درک کامل نشان نمی دهند. آنها همچنین دارای عملکرد بسیار خوبی هستند که می توانند به راحتی با سخت افزار تعامل داشته باشند، تصور کنید که این فقط یک عنصر برنامه است. با وجود تمام مزایای آشکار، برنامه های حجیم تری در C و C++ نسبت به اسمبلر ایجاد می شوند.

همچنین در برخی موارد که فضای عملیاتی مورد استفاده حیاتی است، می توان این زبان ها را با هم ترکیب کرد. تقریباً تمام محیط های توسعه برای C و C++ این قابلیت را دارند که درج های اسمبلر را در برنامه نصب کنند. بنابراین، اگر مشکلی در یک منطقه بحرانی ایجاد شد، می توانید یک درج اسمبلی بنویسید و آن را در فریمور میکروکنترلر ادغام کنید و خود فریمور یا بهتر بگوییم بیشتر آن را می توان با C یا C++ نوشت. برنامه نویسی میکروکنترلرها در SI آسان تر است، به همین دلیل است که بسیاری از افراد این زبان ها را انتخاب می کنند. اما کسانی که از مشکلات نمی ترسند و می خواهند ویژگی های نحوه عملکرد تجهیزات را درک کنند، می توانند دست خود را در زبان اسمبلی امتحان کنند.

کلمات جدایی

اگر می خواهید با عالی آزمایش کنید. ما فقط می توانیم به شما توصیه کنیم که صبور باشید و پشتکار داشته باشید، و سپس هر هدفی که برای مخترع تعیین شده است، عملی می شود. برنامه نویسی میکروکنترلرها برای مبتدیان و برای افراد با تجربه متفاوت به نظر می رسد: آنچه برای مبتدیان دشوار است، برای افراد با تجربه معمول است. نکته اصلی این است که به یاد داشته باشید هر چیزی که با قوانین فیزیک مغایرت نداشته باشد، امکان پذیر و قابل حل است.



با لحیم کردن یک تراشه دیگر روی تخته دیگر یا بریدن یک مسیر روی برد برای دهمین بار برای ایجاد تغییرات بعدی (اما نه آخرین) در یک دستگاه جدید، شروع به فکر کردن می کنید: "آیا نباید از این کار خسته کننده دست بکشم؟!" دستگاه جدید شما آنطور که می خواهید عمل نمی کند، اما از تغییر مدار و انجام مجدد همه چیز روی برد خسته شده اید.
با ورق زدن مجلات الکترونیکی، به طور فزاینده ای با کلماتی روبرو می شوید: پردازنده، میکروکنترلر، سیستم عامل، برنامه نویسی. اما این کلمات برای شما معنی خاصی ندارند. جایی شنیده اید، و شاید حتی چیزی را در دست گرفته اید که حتی با هیبت به آن فکر می کنید... میکروکنترلرها! چیزی که اندازه دستگاه ها را کاهش می دهد، به آنها قابلیت هایی دست نیافتنی برای شما می دهد... نه، شما به عنوان یک مهندس الکترونیک، ایده های کلی نحوه عملکرد این دستگاه ها را درک می کنید، اما استفاده عملی از آنها در محصولات شما قابل بحث نیست! شما قبلاً چندین بار سعی کرده اید بر میکروکنترلرها مسلط شوید، حتی چند کتاب از مجموعه "... for dummies" خریداری کرده اید و چندین آموزش محبوب را از اینترنت دانلود کرده اید. مدتی گذشت و همه چیز در جالب ترین نقطه متوقف شد: نمودارهای نشان داده شده در کتاب ها برای شما واضح بود، اما روش های ایجاد یک برنامه برای شما یک راز باقی ماند. تایپ چند کاراکتر به زبان انگلیسی (یا یک زبان دیگر) در برنامه مشخص شده در کتاب برای شما مشکلی ندارد. اما ماهیت و روش استفاده از این نمادهای مرموز که دنباله آنها در کتاب برنامه نامیده شده است، مشخص نیست. شما خود را به خاطر احمق بودن سرزنش کردید و ایده تسلط بر میکروکنترلرها را کنار گذاشتید. و چرا؟ شما در حال حاضر یک کار عالی انجام می دهید: تراشه های بسیار زیادی دارید که روی آنها دستگاه های خود را توسعه می دهید ... دستگاه هایی روی بردهای بزرگ که آنها را برای مدت طولانی اشکال زدایی و دوباره کار می کنید ...
اما با مرد همسایه آشنا شوید: او برنامه‌ها را می‌نویسد، آنها را در میکروکنترلر بارگذاری می‌کند، و آنچه را که باید ماه‌ها اشکال زدایی کنید، او در چند روز انجام می‌دهد. شما وحشت می کنید، شروع به جستجوی کتاب های رها شده می کنید و همه چیزهایی را که قبلا خوانده اید به یاد می آورید... او می تواند، اما شما نمی توانید. شما این مرد را بهتر می شناسید و تحت عنوان یک گفتگوی جانبی، شروع به پرسیدن در مورد میکروکنترلرها و قابلیت های آنها می کنید. و با خونسردی می گوید که کنترلرها برای او یک سرگرمی هستند. از او می خواهید در مورد دستگاه خود به شما بگوید. پاسخ های او ساده و بی تکلف است.

میکروکنترلرها میکروکنترلر چیست؟
میکروکنترلر یک کامپیوتر تخصصی کوچک به زبان روسی میکرو کامپیوتر است. علاوه بر این، این میکرو کامپیوتر در یک تراشه، بر روی یک کریستال ساخته شده است. از این رو نام کامل: "ریز کامپیوتر تک تراشه". مانند یک کامپیوتر، میکروکنترلر یک دستگاه الکترونیکی است که عملکرد آن توسط یک برنامه کنترل می شود - دنباله ای از دستورات از پیش بارگذاری شده در حافظه. این دستورات توسط پردازنده اجرا می شوند: نوعی "مگا مغز" که شامل یک ALU - یک واحد حسابی-منطقی است. یعنی پردازشگر می تواند عملیات ریاضی را انجام دهد و عملیات منطقی را روی داده ها انجام دهد.

ظرفیت پردازنده روش های ارائه اطلاعات
هم پردازنده و هم حافظه دستگاه‌های دیجیتالی هستند که سیگنال‌های تنها دو سطح را درک می‌کنند: ولتاژ/جریان وجود دارد و ولتاژ/جریان روی خط وجود ندارد. این دو حالت معمولاً به صورت زیر نوشته می شوند: یک منطقی - "1" و صفر منطقی - "0". دستورات و داده ها مجموعه ای از یک و صفر هستند. یک خط (به نام تخلیه) در دو حالت خود می تواند تنها دو مقدار را منتقل کند. اما با افزایش تعداد ارقام، تعداد مقادیر نیز افزایش می یابد: دو رقم در حال حاضر چهار و هشت رقم در حال حاضر 256 مقدار هستند. یک رقم معمولاً بیت نامیده می شود: یک رقم یک بیت است. و مجموعه ای از هشت بیت یک بایت است: هشت بیت یک بایت است. اما یک بایت فقط 256 مقدار دارد. برای انتقال اطلاعات بیشتر، از چندین بایت به صورت متوالی در حافظه استفاده می شود. دو بایت در حال حاضر 65536 مقدار را منتقل می کنند. سه بایت - 16777216 مقدار! و غیره. متداول ترین پردازنده ها آنهایی هستند که می توانند هشت بیت را در یک عملیات پردازش کنند، به همین دلیل است که به چنین پردازنده هایی هشت بیتی می گویند.

سیستم فرمان پردازنده
هنگامی که یک پردازنده توسعه می یابد، توانایی اجرای دستورات خاصی را در خود جای می دهد. دستوراتی که یک پردازنده معین قادر به اجرای آنهاست مجموعه دستورالعمل نامیده می شود. این دستورات چیست؟ رایج ترین دستورات حسابی و منطقی و همچنین دستورات کار با پورت ها - خطوط ارتباطی بین پردازنده و دنیای خارج. پردازنده با خواندن یک مقدار از یک سلول حافظه یا وضعیت یک پورت در حافظه خود - یک ثبات، می تواند عملیات ریاضی یا منطقی را روی آن انجام دهد. از نظر ریاضی، عملیات برای ما واضح است: جمع، تفریق و غیره. اعمال منطقی به معنای اعمال زیر است: مقایسه - بیشتر، کمتر، برابر. کار بر روی بیت های یک سلول حافظه یا ثبت: صفر کردن یا تنظیم آن، و همچنین عملیات جابجایی بیت ها به چپ یا راست.

حافظه و انواع آن
داده ها را می توان از حافظه خواند. حافظه مکانی است که یک برنامه و/یا داده را می توان برای مدتی ذخیره کرد. آنها را می توان برای مدت کوتاهی - تا زمانی که برق خاموش شود یا برای مدت طولانی - بدون توجه به وجود ولتاژ تغذیه ذخیره کرد. نوع اول حافظه برای ذخیره داده های میانی مورد استفاده در حین اجرا استفاده می شود عملیات های مختلف. به همین دلیل است که به آن "حافظه دسترسی تصادفی" می گویند. نوع دوم حافظه بیشتر برای ذخیره برنامه ها استفاده می شود. انواع مختلفی از حافظه بلند مدت وجود دارد: حافظه یکبار قابل برنامه ریزی، حافظه قابل پاک کردن الکتریکی و حافظه قابل پاک کردن با اشعه ماوراء بنفش یا اشعه ایکس. ساختار فیزیکی و اصل عملکرد حافظه ممکن است متفاوت باشد، اما ماهیت یکسان است: ذخیره داده ها. مفهوم "سلول" برای توصیف یک ذخیره سازی داده استفاده می شود. بنابراین، هر چه تعداد سلول ها بیشتر باشد، داده های بیشتری را می توان ذخیره کرد. هر سلول یک آدرس جداگانه دارد. پردازنده دقیقاً با آدرس آن به مقدار سلول حافظه دسترسی پیدا می کند.

پورت ها حالت های عملکرد بندر
داده ها را می توان از طریق خطوط ارتباطی - پین های میکروکنترلر - از دستگاه های خارجی نیز دریافت کرد. به این خطوط ارتباطی پورت ها یا به طور علمی: دستگاه های ورودی و خروجی داده می گویند. پین‌های پورت می‌توانند ورودی باشند که با استفاده از آن‌ها پردازنده اطلاعات را از خارج از حسگرهای مختلف دریافت می‌کند، یا خروجی‌هایی باشند که سیگنال‌هایی را به آن‌ها کنترل می‌کنند. دستگاه های خارجی. در میکروکنترلرهای مدرن، پایه‌های تقریباً همه پورت‌ها دو طرفه هستند، یعنی می‌توانند هم ورودی و هم خروجی باشند. پورت های جهانی باید پیکربندی شوند - حالت عملکرد را روی ورودی یا خروجی تنظیم کنید. برای این منظور، یک سلول حافظه ویژه وجود دارد - یک ثبت برای کنترل حالت های عملکرد پورت. به عنوان مثال، برای اینکه خروجی (بیت) مورد نیاز پورت به عنوان ورودی باشد، بسته به مدل میکروکنترلر، 1 یا 0 در بیت ثبت کنترل نوشته می شود.

لوازم جانبی.
اما میکروکنترلر نه تنها شامل یک پردازنده و حافظه است. نقش اصلی را دستگاه های به اصطلاح جانبی ایفا می کنند: تایمر، شمارنده، مقایسه کننده آنالوگ، مبدل دیجیتال به آنالوگ و آنالوگ به دیجیتال، دستگاه های ارتباطی سریال (اغلب به نام پورت سریال). اغلب میکروکنترلر تعدادی سلول حافظه غیر فرار (اغلب فلش) دارد که داده های مختلفی را می توان در آنها ذخیره کرد.

خانواده میکروکنترلرها
وجود تمام دستگاه های ذکر شده در میکروکنترلر ضروری نیست. اغلب، یک تولید کننده چندین مدل محصول حاوی دستگاه های جانبی مختلف تولید می کند. میکروکنترلرها با یک نوع پردازنده (و مجموعه ای از کدهای ماشین اجرایی) اما دستگاه های جانبی مختلف، متعلق به یک خانواده هستند. این همان چیزی است که آنها می گویند: میکروکنترلرهای خانواده ATtiny.

چند منظوره بودن پین های میکروکنترلر.
ممکن است این سوال پیش بیاید: اگر اکثر تراشه های یک بسته DIP بیش از 40 پین نداشته باشند، چگونه همه این دستگاه ها با دنیای خارج "ارتباط" می کنند؟ برای حل مشکل کمبود پین، از روشی برای ترکیب عملکرد چندین دستگاه با استفاده از یک پین استفاده می شود. به عنوان مثال، پین های یکی از پورت ها (8 بیت - 8 پین) نیز برای کارکرد مبدل آنالوگ به دیجیتال و پین های یک پورت دیگر به عنوان ورودی مقایسه کننده های آنالوگ، پورت سریال یا برای اتصال سایر گره های داخلی برای کنترل حالت های عملکرد پین ها، از یک رجیستر کنترل حالت عملکرد پورت ویژه استفاده می شود (قبل از توضیح اصول عملکرد پورت در مورد آن صحبت شد). در اکثر میکروکنترلرها، پین ها چندین کارکرد دارند. اگر به مستندات فنی کنترلر مراجعه کنید، در هنگام توصیف عملکرد خروجی، در مورد عملکردهای اصلی و جایگزین یادداشت می شود. این نتیجه گیری. به عنوان مثال: PD0/RX - بیت صفر پورت D نیز ورودی پورت سریال است، PB1/Ain0 - اولین بیت پورت B نیز ورودی مقایسه کننده آنالوگ است.

الگوریتم ها برنامه ها.
دستورات به پردازنده مطابق با الگوریتمی که قبلاً توسعه داده شده است به ترتیب خاصی داده می شود. الگوریتم دنباله ای از اجرا توسط یک پردازنده است. علاوه بر این، دستورات باید برای پردازنده قابل درک باشند، و در عین حال تفسیری بدون ابهام داشته باشند، بدون هیچ گونه استقلالی در اجرای آن. الگوریتم را می توان به صورت شفاهی نوشت. به عنوان مثال: شروع برنامه; بیت صفر پورت را به یک ورودی تبدیل کنید. بیت هفتم پورت را به یک خروجی تبدیل کنید. مقدار بیت صفر پورت را بخوانید. اگر برابر با یک منطقی است، اقدامات زیر را انجام دهید: یک منطقی را در بیت هفتم پورت بارگذاری کنید. بازگشت به ابتدای برنامه اینگونه است که ما الگوریتم عملکرد یک مدار متشکل از یک کلید، یک لامپ (یا بار دیگر) و یک منبع تغذیه را شرح دادیم. نتیجه اجرا به شرح زیر خواهد بود: هنگامی که دکمه را فشار می دهید، ولتاژ به ورودی پورت می رسد، پردازنده برنامه را اجرا می کند - ولتاژ را به خروجی پورت می دهد. و در حالی که کنتاکت ها بسته هستند، ولتاژ در خروجی پورت وجود خواهد داشت.
اما درک چنین نوشته ای بسیار دشوار است. بنابراین، روش هایی برای توصیف گرافیکی الگوریتم توسعه داده شد. در اینجا نمونه ای از ضبط گرافیکی الگوریتم بالا آورده شده است.
برنج. الگوریتم-1. روش گرافیکیتوضیحات الگوریتم

دستورات شاخه: شاخه های شرطی و غیرشرطی.
دستورالعمل های ویژه پردازنده شامل دستورالعمل های پرش شرطی و بدون قید و شرط است. برای درک این موضوع، لازم است مفهوم "نشانگر آدرس فرمان در حال اجرا" توضیح داده شود. پردازنده دارای یک ثبات ویژه است که آدرس دستورالعمل در حال اجرا را ذخیره می کند. هنگامی که برق اعمال می شود، این رجیستر ریست می شود و یک صفر روی آن نوشته می شود. در مرحله بعد، پردازنده شروع به اجرای دستورات ذخیره شده در حافظه می کند و از آدرس صفر شروع می شود - پس از همه، ثبت اشاره گر آدرس فرمان اجرا شده حاوی صفر است. پس از اجرای دستور، این اشاره گر متهم می شود، یعنی مقدار آن افزایش می یابد. پردازنده دستور بعدی را از حافظه در آدرس مشخص شده در اشاره گر می خواند. یعنی دستورات به صورت متوالی اجرا می شوند. با استفاده از دستورات پرش شرطی و بدون قید و شرط می توانید دنباله اجرای برنامه را بشکنید. برای انجام این کار، دستوری در یکی از سلول‌های حافظه ذخیره می‌شود که به پردازنده دستور می‌دهد تا مقدار ثبات نشانگر آدرس دستورالعمل در حال اجرا را تغییر دهد. یک دستور پرش بدون قید و شرط به پردازنده دستور می دهد تا ترتیب اجرای برنامه را تغییر دهد و دستورات ذخیره شده در حافظه را با شروع از آدرس مشخص شده قبلی اجرا کند.
دستور پرش شرطی پیچیده تر است: هنگام اجرا، بررسی می کند که آیا برخی از شرایط برآورده شده است یا خیر. به عنوان مثال، شما باید مقدار دو سلول حافظه را با هم مقایسه کنید. اگر مقدار سلول اول بیشتر است، اجرای برنامه را در آدرس A ادامه دهید، در غیر این صورت (یعنی مقدار سلول اول کمتر است) - به آدرس C بروید.

وقفه ها و انواع آنها اولویت ها را قطع کنید
راه دیگری برای "اجبار کردن" پردازنده برای توقف اجرای متوالی برنامه و شروع اجرای برنامه در یک آدرس خاص وجود دارد - یک "وقفه" را فراخوانی کنید. مفهوم وقفه همراه با اولین پردازنده ها ظاهر شد. موضوع این است که پردازنده دستگاه هایی را کنترل می کند که کندتر از آن هستند. به عنوان مثال، پردازنده باید داده ها را پردازش کند تا زمانی که یک سیگنال خاص ظاهر شود. بیایید یک مثال ساده بیاوریم: پردازنده برنامه ای را برای شمارش تعداد پالس های دریافتی در یکی از پورت های خود اجرا می کند. هنگامی که دکمه را فشار می دهید، پردازنده باید اجرای این برنامه را قطع کند و برنامه دیگری را اجرا کند: برخی از دستگاه ها را روشن کنید (به عنوان مثال، یک منطقی را به یکی از بیت های پورت - "1" اعمال کنید). چگونه این مسئله را می توان حل کرد؟ در خود برنامه می توانید به طور مداوم رقم مورد نیاز پورتی را که دکمه به آن وصل شده است نظرسنجی کنید. اما در عین حال، بخشی از منابع (سرعت) پردازنده عملاً در نظرسنجی پورت هدر خواهد رفت. راه دوم استفاده از وقفه است. پردازنده (و در نتیجه میکروکنترلر) یک پین مخصوص دارد. معمولاً به آن "Int" (به انگلیسی: "Interrupt") گفته می شود. هنگامی که یک سیگنال به پین ​​"Int" اعمال می شود، اقدامات زیر رخ می دهد:
- توقف اجرای برنامه اصلی،
- مقدار ثبات نشانگر آدرس دستور اجرا شده در RAM (محلی که اجرای برنامه قطع می شود) ذخیره می شود.
- پس از آن یک آدرس جدید در همان ثبت بارگذاری می شود (بسته به خواسته سازنده پردازنده)،
- در سلول حافظه با آدرس مشخص شده یک دستور پرش بدون قید و شرط وجود دارد: "برو به آدرس xx"
- در حافظه، از سلول با آدرس xx شروع می شود، برنامه دیگری وجود دارد، بیایید آن را یک برنامه کاربردی بنامیم.

در مورد ما، برنامه ابزار باید یک واحد منطقی به پورت صادر کند و بدین وسیله دستگاه مورد نیاز را روشن کند. و اینجاست که سرگرمی شروع می شود: آخرین دستور برنامه کاربردی دستور "خروج وقفه" است. با دریافت این دستور، پردازنده مقدار ذخیره شده قبلی ثبت اشاره گر آدرس دستورالعمل را از حافظه می خواند و آن را در این ثبات بارگذاری می کند. در نتیجه، پردازنده به اجرای برنامه اصلی از جایی که قطع شده است ادامه می دهد.
اما وقفه می تواند نه تنها توسط سیگنال های خارجی، بلکه توسط دستگاه های داخلی خود میکروکنترلر ایجاد شود: تایمرها، شمارنده ها، پورت های سریال و حتی حافظه غیر فرار. باز هم، این عمدتا برای کاهش تعداد دستورات اجرا شده برای تجزیه و تحلیل وضعیت این دستگاه های جانبی انجام می شود. بیایید مثالی بزنیم: فرآیند نوشتن داده ها در حافظه غیر فرار بسیار طولانی است، در این مدت پردازنده می تواند تعداد بسیار زیادی دستور را اجرا کند. بنابراین، پردازنده برنامه اصلی را اجرا می کند، دستور پاک کردن حافظه غیر فرار را صادر می کند و سپس اجرای برنامه اصلی را ادامه می دهد. به محض اینکه پاکسازی حافظه غیرفرار کامل شد، مدارهای کنترلی یک سیگنال وقفه از این حافظه تولید می کنند. پردازنده اجرای برنامه اصلی را قطع می کند و فرآیند نوشتن داده ها در حافظه آغاز می شود. به این روش انجام یک عمل خارج از برنامه اصلی حالت پس زمینه می گویند. همچنین اغلب گفته می شود: "این قسمت از برنامه در پس زمینه اجرا می شود."
هنگام کار با وقفه ها، باید مراقب باشید: موقعیتی ممکن است که در آن اجرای برنامه و عملکرد کل دستگاه مختل شود. واقعیت این است که میکروکنترلر چندین وقفه دارد. برای کنترل حالت های عملیات وقفه، یک رجیستر کنترل وقفه وجود دارد. هنگام تنظیم حالت های عملیات وقفه، شما اجازه دادید چندین وقفه کار کنند - این یک وضعیت عادی است. اما با دریافت سیگنال وقفه خارجی یا داخلی به برنامه اصلی و اجرای برنامه سرویس وقفه، وقفه ها را غیرفعال نکردید. پردازنده در حال اجرای یک برنامه کاربردی است و در این لحظه سیگنال وقفه دیگری را دریافت می کند. پردازنده اجرای برنامه سرویس را قطع می کند و برنامه را برای پردازش یک وقفه جدید اجرا می کند. تصور اینکه این ممکن است به چه چیزی منجر شود آسان است.
برای حل این مشکل، روشی ایجاد شد که به هر وقفه درجه‌ای از شدت یا «اولویت وقفه» اختصاص می‌دهد. بسته به مدل میکروکنترلر، اولویت وقفه را می توان به طور صلب تنظیم کرد (و برنامه نویس فقط پردازش یک وقفه خاص را مجاز یا غیرفعال می کند)، یا می تواند توسط برنامه نویسان به صورت برنامه ای پیاده سازی شود (یعنی اولویت وقفه به ترجیحات برنامه نویس بستگی دارد و الگوریتم برای اجرای یک کار خاص).

ما پردازنده را کنترل می کنیم. زبانهای برنامه نویسی. مترجمان
کدهای ماشین مونتاژ کننده.
دستورات پردازنده دنباله ای از یک و صفر هستند. غالباً دستورات پردازنده را کدهای ماشین می نامند و تأکید می کنند که این دستورات در اصل برای یک مجری خاص - یک ماشین طراحی شده اند، اما نه یک شخص. به خاطر سپردن دستورات از اعداد (کدهای ماشین) بسیار دشوار است. بنابراین، برای ساده‌تر شدن کار، راهی ابداع شد تا سکانس‌های دیجیتالی با اختصارات نمادین که برای انسان قابل درک‌تر است، جایگزین شوند. به عنوان مثال، برای دستور "بارگذاری داده" آنها با یک مخفف واضح "ld" (انگلیسی "بار" - load)، برای دستور "مقایسه" - "cp" (انگلیسی "مقایسه" - مقایسه) آمدند، و غیره بر. به این روش ثبت نمادین دستورات پردازنده، اسمبلر می گویند. اگر برنامه نویس هنگام کار با کدهای ماشین، دستورات کنترل پردازنده را مستقیماً در حافظه دستگاه وارد کند، هنگام کار با اسمبلر، نوعی واسطه بین برنامه و پردازنده وجود دارد که نمادهای نمادین را به کدهای ماشین تبدیل می کند. برنامه ای که به عنوان یک واسطه عمل می کند مترجم، یعنی مترجم نامیده می شود. اما یک تفاوت کوچک وجود دارد: اسمبلر نه تنها به روش تعیین نمادین دستورالعمل های دیجیتال (کدهای ماشین)، بلکه به یک برنامه مترجم اشاره دارد که به برنامه نویس کمک می کند تا نام های نمادین دستورات را مستقیماً به دستورات ماشین ترجمه کند. بنابراین، اغلب از تکنیک زیر استفاده می شود: وقتی در مورد یک زبان صحبت می کنند، اسمبلر می نویسند، وقتی در مورد یک برنامه صحبت می کنند، به سادگی اسمبلر می نویسند.
اسمبلر یک مزیت بزرگ دارد: برنامه های نوشته شده در اسمبلی خیلی سریع توسط پردازنده اجرا می شوند. واقعیت این است که اسمبلر عملا یک فرمان ماشینی است. اما اسمبلر معایبی نیز دارد: عیب اصلی دشواری نوشتن برنامه ها است، دوم اینکه حتی برنامه های نسبتا ساده نیز دارای مقدار زیادی متن منبع هستند که تجزیه و تحلیل برنامه را دشوار می کند.

ماژولار بودن برنامه ها کارهای تکراری
هر برنامه نویس در طول کار خود تعداد معینی برنامه را جمع آوری کرد. اما بسیاری از برنامه ها شامل اقدامات مشابه هستند. به عنوان مثال، بسیاری از برنامه ها از صفحه کلید نظرسنجی می کنند و دکمه فشرده شده را تجزیه و تحلیل می کنند. یعنی این قسمت از کد برنامه را می توان از یک برنامه به برنامه دیگر منتقل کرد. کتابخانه های برنامه به تدریج از چنین قطعاتی (ماژول ها) شکل گرفتند. برنامه نویسان شروع به "تجسم" یک برنامه از ماژول ها کردند: یعنی ماژول مورد نیاز را در مکان مورد نیاز در برنامه قرار دادند. این رویکرد به دلیل استفاده از ماژول های اشکال زدایی شده، روند نوشتن برنامه را تسریع کرد و قابلیت اطمینان برنامه را به طور کلی افزایش داد. اما از همان روزهای اول، مشکل اشتراک گذاری ماژول ها به وجود آمد: از این گذشته، هر برنامه نویس طبق "استاندارد" خود ماژول ها را نوشت - زیرا در یک زمان برای او راحت تر بود. بنابراین، یک استاندارد (به طور دقیق تر، چندین شروع) برای نوشتن این ماژول ها به تدریج ایجاد شد. آنها ساختار ماژول ها را برای "چسباندن" راحت تر در یک برنامه توصیف کردند.

زبان های برنامه نویسی و تقسیم بندی عملکردی آنها
به تدریج، این استانداردهای متفاوت برای استفاده از ماژول ها چیزی را تشکیل دادند که بعداً "زبان های برنامه نویسی" نامیده شد. مانند زبان های انسانی، یک زبان برنامه نویسی دارای چندین سطح فرعی است که هم نوشتن تک تک کلمات (ماژول ها) و روش های نوشتن آنها و هم قوانین استفاده از آنها را تعیین می کند. با گذشت زمان، زبان های برنامه نویسی تکامل یافته و تغییر کرده اند. به تدریج، همه زبان های برنامه نویسی بسته به "گرایش حرفه ای" خود به چند گروه تقسیم شدند:
- زبان های برنامه نویسی کاربردی (FORTRAN برای ریاضیدانان، FoxPro برای کارگران مالی)؛
- جهانی (پاسکال و پایه)؛
- سیستم (Assembler و C).

کلمات سیستم شروع به نامیده شدن زبان های سطح پایین کردند، یعنی برنامه نویس در سطح پایین تر، نزدیک ترین به پردازنده کار می کند. و زبان هایی که هنگام کار با آن ها برنامه نویس مجبور نیست مستقیماً عملکرد پردازنده را کنترل کند، زبان های سطح بالا (اغلب به عنوان زبان های جاوا نامیده می شوند) شروع شد. این مخفف را با نام زبان جاوا - "جاوا" اشتباه نگیرید.

پخش برنامه. روش های پخش برنامه
مانند اسمبلر، برنامه ای که به هر زبانی نوشته شده است سطح بالا، باید به دستورات قابل فهم برای پردازنده تبدیل شود. در ابتدا، این کار به صورت دستی انجام شد: یک دستور در اسمبلر در یک جدول پیدا شد و در کد ماشین نوشته شد. برای سرعت بخشیدن به فرآیند تبدیل (ترجمه) یک برنامه، برنامه های خاصی نوشته شد - مترجم. دو روش برای ترجمه برنامه وجود دارد: تفسیر و کامپایل. در نتیجه مترجم یا مفسر یا کامپایلر نامیده می شود. هنگام استفاده از مفسر، متن مبدأ برنامه تجزیه و تحلیل می شود و به ترتیب دستور به دستور توسط مفسر اجرا می شود. مفسر شامل ماژول هایی برای همه اقدامات قابل استفاده است. این تبدیل در هر دستورالعمل بسیار کند است. اما این روش یک مزیت بزرگ دارد: می توانید برنامه را متوقف کنید، کد آن را تغییر دهید و به اجرای آن ادامه دهید. این هنگام اشکال زدایی یک برنامه راحت است. همچنین در این صورت ما متن منبع برنامه را داریم و می توانیم آن را بارها ویرایش کنیم.
هنگام استفاده از کامپایلر، متن برنامه تجزیه و تحلیل می شود و فایلی حاوی دستورالعمل های ماشین به نام فایل اجرایی ایجاد می شود. این امر سرعت اجرای بسیار بالای برنامه کامپایل شده را تضمین می کند - به هر حال، تبدیل متن برنامه به کدهای ماشین تنها یک بار در طول کامپایل آن اتفاق می افتد. اما شما نمی توانید برنامه را در لحظه تغییر دهید: باید متن برنامه را تغییر دهید و دوباره آن را کامپایل کنید. اگر کد منبع به دلایلی از دست رفته باشد، کامپایل مجدد برنامه غیرممکن است و تغییر فایل اجرایی بسیار دشوار است.

فرآیند ایجاد یک برنامه. محیط های توسعه برنامه
با ظهور مترجمان، روند ایجاد یک برنامه به شکل زیر شروع شد:
- یک الگوریتم برای برنامه آینده در حال توسعه است،
- الگوریتم کدگذاری شده است (به عنوان مثال در قالب دستورات زبان برنامه نویسی توضیح داده شده است)
- کد به دست آمده در یک ویرایشگر متن نوشته شده است،
- فایل با متن برنامه به مترجم منتقل می شود،
- مترجم دستورات نمادین را به دستورات قابل فهم برای پردازنده تبدیل می کند و آنها را در یک فایل ذخیره می کند.
- این فایل در حافظه بارگذاری می شود.
همانطور که می بینید، برنامه نویس مجبور شد در چندین برنامه کار کند. بیشتر اوقات، همه این برنامه ها توسط سازندگان مختلف نوشته شده بودند، بنابراین سازگاری این برنامه ها با یکدیگر تضمین نمی شد. سازگاری آنها باید با آزمون و خطا تعیین می شد.

محیط توسعه نرم افزار یکپارچه
که در اخیرایک رویکرد جدید ظاهر شده است: "محیط توسعه یکپارچه" (انگلیسی "IDE"). یکپارچه سازی به اجرای کل فرآیند ایجاد یک برنامه در یک برنامه اشاره دارد: پس از نوشتن متن برنامه، برنامه نویس با کلیک ماوس ترجمه متن برنامه را به کدهای ماشین شروع می کند و پس از آن فایل اجرایی به دست آمده به طور خودکار در آن بارگذاری می شود. حافظه دستگاه پردازنده یعنی همه چیز در یک برنامه انجام می شود. این رویکرد سرعت کار برنامه نویس را افزایش می دهد.

اولین مشکلات
تمام فصل های قبلی یک دوره مقدماتی بود که شما را برای درک اطلاعات جدید آماده می کرد. ما در این مسیر مشکلات متعددی داریم.
1. حجم زیادی از اطلاعات متنوع: الکترونیک، طراحی میکروکنترلر، الگوریتم ها، نحو زبان های برنامه نویسی، توضیحات کار با ابزارهای نرم افزاری. و چگونه بنویسیم؟ یکی از خوانندگان مهندس الکترونیک خوب است، اما هرگز برنامه ای ننوشته است، دیگری برنامه نویس است، اما الکترونیک در سطح دایره رادیویی است، سومی چیزی در این بین است...

2. انتخاب MK: اگر همه میکروکنترلرها خوب هستند، پس فرآیند آموزش بیشتر و استفاده عملی از میکروکنترلرها را بر اساس کدام محصول و کدام سازنده قرار دهیم؟
برای انتخاب میکروکنترلر برای آموزش، باید شرایط زیر را رعایت کنیم:
الف) میکروکنترلر انتخاب شده برای آموزش باید در دسترس و ارزان باشد.
ب) باید یک محصول مدرن باشد، اما جدیدترین نباشد.

اکنون در مورد هر نقطه با جزئیات بیشتر.
با نقطه A، همه چیز روشن است: مطالعه محصولی که خرید آن دشوار است یا قیمت آن برای یک مبتدی گزاف است، چه فایده ای دارد.
نقطه B نیاز به توضیح دارد. واقعیت این است که محصولات جدید همیشه ایراداتی دارند. آنها تنها پس از مدتی کشف می شوند، تا زمانی که شخصی به طور تصادفی هنگام کار با این محصول به این مشکل برخورد می کند. اما محصولات جدید بلافاصله به طرح های جدید راه پیدا نمی کنند: نوشتن برنامه برای مدل های جدید زمان می برد. در اینجا یک عامل انسانی وجود دارد: توسعه دهندگان از قبل راه حل های آماده ای برای مدل های قبلی میکروکنترلرها دارند و تغییر به مدل های جدید دشوار است.
همچنین تمامی میکروکنترلرهای جدید فقط دارای توضیحات اختصاصی هستند. و به زبان انگلیسی و با استفاده از اصطلاحات حرفه ای متعدد نوشته شده است: بالاخره برای حرفه ای ها در نظر گرفته شده است! و ما دانشجو هستیم... بعد از مدتی نمونه طرح ها ظاهر می شود، بیشتر توضیحات مفصلبا نظرات و توصیه های متعدد سپس شخصی شروع به ترجمه اسناد به روسی می کند (نه همه چیز، اما حداقل پیچیده ترین یا رایج ترین آنها).
ممکن است هیچ ابزاری برای یک میکروکنترلر جدید وجود نداشته باشد: کامپایلرها، دیباگرها و برنامه نویسان این محصول را نمی فهمند. باز هم منتظر بمانید تا نویسندگان این برنامه ها خلاقیت های خود را به روز کنند...

3. شما باید یک زبان برنامه نویسی را انتخاب کنید، که در نظر داریم برای MK برنامه بنویسیم.
انتخاب زبان برنامه نویسی کار بسیار حساسی است. برای آموزش برنامه نویسی میکروکنترلر، می خواهم از یک زبان برنامه نویسی با یک نحو ساده استفاده کنم: برنامه نویس باید با برنامه سر و کار داشته باشد، اما نه با طراحی آن!
در اینجا لازم است از قبل توضیحی داده شود: در حال حاضر، سه "خانواده" زبان در بین توسعه دهندگان برنامه ها و دستگاه های میکروکنترلر محبوب هستند: C (نوشته شده به عنوان "C")، پاسکال (پاسکال) و BASIC (BASIC) . پاسکال در ابتدا به عنوان ابزاری برای یادگیری برنامه نویسی توسعه داده شد. خود بیسیک از نظر ساختار شبیه پاسکال است، اما نوشتن دستورات ساده شده و الزامات طراحی برنامه بسیار کمتر است. زبان C برای حرفه ای ها در نظر گرفته می شود. شی مانند فلسفه چینی است: نه تنها نماد (فرمان) مهم است، بلکه سبک و رنگ آن نیز مهم است. شوخی به کنار، اما نظر من این است: C یک کابوس است. استفاده از آن تنها در برخی از وظایف بسیار محدود قابل توجیه است. اما وظیفه ما این است که نقاط قوت خود را امتحان کنیم و تا حد امکان برای کارهایی که ارتباط مستقیمی با هدف اصلی ندارند هزینه کنیم.

4. ما به یک محیط توسعه برنامه برای میکروکنترلرها نیاز داریم. انتخاب آن به طور مستقیم به نوع MK مورد استفاده و زبان برنامه نویسی بستگی دارد.
محیط توسعه برنامه برای تسلط موفقیت آمیز بر برنامه نویسی میکروکنترلر بسیار مهم است. نوشتن برنامه ها در یک ویرایشگر متن مانند Notepad امکان پذیر است، اما ناخوشایند است (تست شده!). و فراخوانی کامپایلر در خط فرمان در عصر مبتنی بر پنجره گرافیکی ما یک کار ناسپاس است.
انتخاب محیط توسعه مستقیماً به میکروکنترلری بستگی دارد که قسمت عملی آموزش را بر روی آن می سازیم. علاوه بر هر چیز دیگری، ما باید ابزارهای رایگان داشته باشیم. اما، همانطور که آزمایش چنین برنامه هایی نشان داده است، نرم افزار رایگان اغلب هم از نظر استفاده و هم از نظر یادگیری برنامه نویسی MK کیفیت متوسطی دارد: وجود خطا یا نقص در خود مترجمان مشکلات اضافی ایجاد می کند. و اعتماد به نفس را از فرد سلب می کند.
یک نسخه آزمایشی نیز اگر دارای حداقل محدودیت باشد و حداقل برای نیم سال کار کند - این دقیقاً دوره مورد نیاز برای کسب مهارت در کار با میکروکنترلرها در خانه است.

5. برنامه نویسی که برای بارگذاری برنامه های نوشته شده در حافظه MK استفاده می شود. انتخاب پروگرامر به نوع MK مورد استفاده نیز بستگی دارد. البته برنامه نویسان "جهانی" وجود دارند که به شما امکان می دهند با میکروکنترلرها و تراشه های حافظه مختلف کار کنید، اما گران هستند. بله، و در بیشتر موارد مورد نیاز نیست. بنابراین، تولید چیزی بسیار تخصصی برای این خانواده از MKها آسانتر است.
اما نکته خیلی پیچیدگی مدارهای پروگرامر نیست، بلکه روش اتصال این پروگرامر به کامپیوتر است. در اینجا لازم است توضیح دهیم: یک برنامه نویس یک آداپتور الکترونیکی است که سیگنال های رابط های کامپیوتری (پورت های COM، LPT و USB) را به سیگنال هایی تبدیل می کند که به خروجی های MK برای بارگذاری برنامه در حافظه آن ارائه می شود. آداپتور الکترونیکی توسط یک برنامه رایانه شخصی کنترل می شود که آداپتور را مجبور می کند تا توالی سیگنال های لازم را به پین ​​های MK صادر کند.
اگر یک آداپتور برنامه نویس متصل به رایانه شخصی از طریق درگاه های COM و LPT را می توان در خانه ساخت - "روی زانو"، پس چنین آداپتوری را بسازید، اما به آن متصل است. پورت USB، در حال حاضر تا حدودی مشکل ساز است: قلب چنین آداپتوری اغلب ... یک میکروکنترلر است. یک پارادوکس در اینجا به وجود می آید: برای برنامه ریزی MK باید MK را برنامه ریزی کنیم.
یک سوال منطقی مطرح می شود: چرا یک آداپتور پیچیده بسازید که به USB متصل شود، در حالی که می توانید یک آداپتور ساده بسازید و آن را به پورت LPT یا COM متصل کنید. مسئله این است که بسیاری از (تقریباً همه) رایانه های شخصی مدرن این پورت ها را ندارند. بنابراین، باید آداپتور پیچیده تری برای برنامه نویسی MK بسازید.

مارس 2010

من این سؤالات را در ماه مارس از خودم پرسیدم، و اکنون دیگر اواخر نوامبر است. اما این بار بیهوده نبود: من راهی برای خروج از موقعیت هایی که در بالا توضیح داده شد پیدا کردم و پاسخی برای تمام سؤالاتی که مرا عذاب می داد یافتم. و حالا اول چیزها.

پاسخ سوال شماره 1
اگر مطالب فصول قبل را بتوان به نحوی منطقی نظام مند کرد و گام به گام ارائه کرد، آنگاه مطالب فصل های بعدی به صورت موازی آورده می شوند: یکی بر دیگری دلالت دارد. شاید روش من در ارائه مطالب جدید تا حدودی به نظر شما آشفته باشد، اما من نتوانستم چیزی زیباتر در طراحی ارائه دهم.

پاسخ سوال شماره 2
میکروکنترلر ساخت شرکت ATMEL ATMEGA48. به خوبی توصیف شده است، چندین سال در حال تولید بوده است، برنامه ریزی نشده است که حداقل برای 3 سال دیگر متوقف شود، بهینه است مشخصات فنی.

پاسخ سوالات 3 و 4
محیط برنامه نویسی BASCOM (تولید شده توسط MCS Electronics، نویسنده Mark Alberts) است. زبان برنامه نویسی از نظر سبک و الزامات طراحی متن برنامه مشابه پاسکال است، اما دستور دستور از بیسیک گرفته شده است.
دلایل انتخاب:
- یک نسخه آزمایشی کاملاً کاربردی از کامپایلر (تنها محدودیت: کد تولید شده توسط کامپایلر به اندازه 4 کیلوبایت محدود است)
- تمایل نویسنده برنامه برای همکاری (من پیام های رابط و سیستم کمکی را به روسی ترجمه کردم، او روسی را به این برنامه اضافه کرد)
- وجود یک انجمن روسی زبان برای کاربران این کامپایلر

پاسخ سوال شماره 5
امکان ترکیب سادگی مدار و USB وجود نداشت. تصمیم گرفته شد دو مدل برنامه نویس را توصیف کنیم: یکی به پورت LPT کامپیوتر وصل می شود، دومی به پورت COM. اگر این پورت ها وجود نداشته باشند، نسخه دوم برنامه نویس را می توان با استفاده از مبدل USB-COM به رایانه متصل کرد. به این ترتیب ما یک ترکیب USB-COM-برنامه نویس- میکروکنترلر را بدست می آوریم.
اولین مدل برنامه نویس به نام STK-200/300 شناخته می شود، حاوی یک تراشه بافر حالت سوم و چندین مقاومت است. مدل دوم برنامه نویس معروف USBasp است.

تراشه کارتریج یک فلش کارت کوچک است که تمام اطلاعات مربوط به عملکرد این کارتریج در آن ثبت می شود.

به عنوان مثال، تراشه حاوی اطلاعاتی در مورد نوع کارتریج، تاریخ تولید و شماره سریال آن است. در حین کار چاپگر یا MFP، اطلاعات تکمیلیدر مورد تاریخ نصب آن در دستگاه، شمارنده فعلی چاپ های انجام شده توسط کارتریج و سایر اطلاعات فنی. هنگامی که شمارشگر اثر انگشت کارتریج به مقدار مشخصی می رسد، تراشه کارتریج اطلاعات خالی بودن کارتریج را دریافت می کند. سپس دستگاه به کاربر هشدار می دهد که کارتریج خالی است و باید تعویض شود. بسته به مارک چاپگر یا MFP، تجهیزات یا با چنین هشداری به کار خود ادامه می دهند یا متوقف می شوند.

در این مورد، چندین گزینه وجود دارد:

1. تراشه کارتریج را عوض نکنید

اگر تجهیزات کانن یا اچ پی دارید، تراشه موجود در کارتریج خالی شما عملکرد چاپگر یا MFP را مسدود نمی کند، بلکه دائماً به خالی بودن کارتریج سیگنال می دهد. در این حالت، هنگام پر کردن کارتریج، نمی توانید آن را تغییر دهید و هشدارهای مربوط به خالی بودن کارتریج را نادیده بگیرید.

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

در چاپگرهای سامسونگ و زیراکس، تراشه کارتریج اغلب پس از خالی شدن کارتریج، عملکرد چاپگر را مسدود می کند. برای اینکه کارتریج شارژ شده شروع به کار کند، تراشه دوباره برنامه ریزی می شود. این کار را می توان در کارگاه های ما انجام داد. همچنین می توانید از امکان برنامه ریزی مجدد (صفر کردن) تراشه کارتریج خود مطلع شوید .

3. تراشه را تعویض کنید

اگر تراشه را نمی‌توان دوباره برنامه‌ریزی کرد، هر بار که دوباره پر می‌شود، آن را تغییر می‌دهند یا چاپگر/MFP یک بار دوباره فلش می‌شود. می توانید از نیاز مطلع شوید تراشه را هنگام سوخت گیری در ما تغییر دهیددر ستون یادداشت ها

4. چاپگر را دوباره فلاش کنید

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

اگر به اصطلاح تبلت ها را در نظر بگیریم، خرابی یک کلید یک پدیده بسیار نادر است، و اگر در مورد یک سیستم RFID بدون تماس ساخته شده بر روی کارت هایی صحبت کنیم که از فاصله دور راه اندازی شده اند، بسیار محتمل است.

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

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

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

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

RFID

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

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

  1. با منطقه شناسایی 100-150 میلی متر، فرمت رایج، نوع مجاورت؛
  2. با برد تشخیص تا 1 متر، نوع مجاورت.

با وجود چنین تفاوت هایی در محدوده، همه شناسه ها بر اساس یک طرح ساده کار می کنند.

یک دستگاه مخابره داخل ساختمان با استفاده از کلیدهای این کلاس دارای واحد تشعشع میدان الکترومغناطیسی با شدت کم در ناحیه تماس است. داخل کارت RFID یا جا کلیدی قرار دارد مدار سادهاین شامل یک مدار نوسان القایی، یک آنتن فرستنده مینیاتوری و یک تراشه تشکیل دهنده سیگنال است.

هنگامی که کلید وارد ناحیه تابش می شود، انرژی تولید می شود و مدار الکتریکی داخلی فعال می شود. کارت یا جاکلیدی سیگنال فرکانس رادیویی را ارسال می کند، دستگاه مخابره داخل ساختمان شناسه را می شناسد و در صورت ثبت در حافظه آن قفل در را باز می کند.

به سادگی هیچ راه ساده ای برای برنامه ریزی مجدد کلید اینترکام کلاس RFID برای اکثر انواع محصولات وجود ندارد. شناسه توسط یک تراشه پاشیده شده در کارخانه تشکیل شده است، تعداد ترکیبات منحصر به فرد (کارت ها و فوب های کلید) بسیار زیاد است، تغییراتی در کد ارائه نشده است.

کلید ممکن است به دلیل پیچ خوردگی یا شکستگی مکانیکی خراب شود (در نتیجه آسیب به تراشه یا شبکه آنتن فرستنده رخ می دهد)، یا به دلیل قرار گرفتن در معرض تشعشعات الکترومغناطیسی قوی، از نظر قدرت قابل مقایسه با اجاق مایکروویو.

حافظه لمسی

Touch-Memory تبلت تماسی است که بیشتر مردم با آن آشنا هستند. داخل این کلید یک ریزتراشه نیز وجود دارد.

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

یک کد منحصربفرد که به تبلت متصل شده است، با یکی از کدهایی که در حافظه دستگاه ذخیره شده است، ارسال و بررسی می شود. اگر شناسایی موفقیت آمیز باشد، درب باز می شود.

یک تبلت Touch-Memory می تواند در اثر قرار گرفتن در معرض ولتاژ استاتیک قوی با استفاده از تبلت روی لباس های برق دار آسیب ببیند. انجام این کار بسیار دشوار است، زیرا پالس باید بین نقاط خاصی از صفحه تماس عبور کند، اما این شایع ترین علت خرابی است.

تبلت دارای تراشه بسیار بادوام است، آسیب مکانیکی به آن دشوار است، نکته کلیدی این است که علاوه بر قرار گرفتن در معرض استاتیک، می توان آن را در مایکروویو بسوزاند. Touch-Memory هرگونه تأثیرات دیگر از جمله قوی ترین آهنرباهای نئودیمیم را بدون عواقب تحمل می کند.

راه برنامه نویسی کلیدهای دسترسی برای اینترکام این کلاس استفاده از برنامه نویس مخصوص است. از آن برای ساخت کلون تبلت ها و همچنین کلیدهای اصلی جهانی برای مجموعه ای از اینترکام استفاده می شود.

Touch-Memory به کلاس هایی تقسیم می شود. آنها نه به ساختار داخلی و اصول عملکرد، بلکه به تولید کنندگانی که هر یک از آنها یک مدار داخلی با ویژگی های خاص و روشی برای تولید یک کد منحصر به فرد ایجاد می کنند، بستگی دارند.

انواع زیر به طور گسترده ای از حافظه لمسی استفاده می شود:

  • با علامت گذاری هایی که با DS (دالاس) شروع می شود، در تعداد زیادی از مدل های Vizit، Eltis، C2000 و دیگران استفاده می شود.
  • DC مشخص شده و همچنین Cifral KP-1 - داده های Touch-Memory فقط برای دستگاه های مخابره داخل سیفرال در نظر گرفته شده است.
  • سری K، به طور گسترده ای در سیستم های کنترل دسترسی متاکم و سایر دستگاه های داخلی استفاده می شود.

به طور مشابه، کلاس ها و فرمت های RFID وجود دارد، به عنوان مثال، قدیمی ترین HID، محبوب EM-Marin، و همچنین در کارت های Mifare که از راه دور فعال می شوند، استفاده می شود. بنابراین، قبل از اینکه بفهمید چگونه یک کلید شخصی برای یک دستگاه مخابره داخل در ورودی را برنامه ریزی کنید، ابتدا باید یک فرمت سازگار با حافظه لمسی یا RFID خریداری کنید.

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

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

تکنسین هایی که اینترکام را نصب می کنند ملزم به برنامه ریزی مجدد و تغییر کدهای اصلی کارخانه و سایر اطلاعات سرویس دستگاه هستند.

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

الگوریتم اقدامات

ساده ترین راه این است که بفهمید چگونه کلید دستگاه مخابره داخل ساختمان را از درب ورودی از یک شرکت خدماتی رمزگذاری کنید. برخی از آنها چنین داده هایی را ارائه می دهند.

اما مجموعه ای از اقدامات استاندارد برای اینترکام مارک های رایج وجود دارد.

  1. Rainmann، Raikman - تماس را فشار دهید، 987654 را وارد کنید، سپس سیگنال صوتی— 123456. اگر دعوتنامه P روی صفحه نمایش ظاهر شد، 2 را فشار دهید، تبلت را اعمال کنید، # را فشار دهید،<номер квартиры>، #. ضبط در حافظه با دکمه * انجام می شود.
  2. - شماره -999، بعد از صدای دعوت، کد 1234 را شماره گیری کنید (برای برخی از سری ها - 6767, 0000, 12345, 9999, 3535). پس از این، 3 را فشار دهید، پس از مکث - شماره آپارتمان، کلید را اعمال کنید، #، * را فشار دهید. اگر کد کارخانه (1234 و سایرین) پذیرفته نشود، دستگاه مخابره داخلی یک سیگنال دو رنگ منتشر می کند.
  3. ، - دکمه تماس را نگه دارید تا عکس العملی وجود داشته باشد (صدا، دعوت نامه روی صفحه نمایش)، 1234 را وارد کنید، سپس شماره آپارتمان، تماس بگیرید. در پاسخ به دعوت برای قرار دادن کلید، با فشار دادن دکمه * از منو خارج شوید.

مدرن ترین نسخه های اینترکام سیفرال از مجموعه کدهای نسبتاً پیچیده ای استفاده می کنند. روش رمزگذاری کلید اینترکام از درب ورودی به این صورت است: تماس، 41، تماس، 14102، 70543.

سپس باید منتظر بمانید تا دعوتنامه روی صفحه ظاهر شود، 5 را فشار دهید، شماره آپارتمان را وارد کنید، پس از کتیبه روی صفحه نمایش لمسی، کلید را وصل کنید. سیگنال صوتی ضبط در حافظه را نشان می دهد.

نتیجه

می توانید هر یک از کلیدهای خریداری شده را که به اشتباه به آنها خالی گفته می شود را در حافظه داخلی ضبط کنید. در واقع، این یک مکانیسم کار با کد منحصر به فرد خود است. فقط باید در دستگاه ورودی ثبت شود.

انواع تکنیک های کاربردی کلیدی در دسترس هستند. همان را می توان در چندین اینترکام با یک برند استفاده کرد، مشروط بر اینکه در هر کدام ثبت نام شده باشد. نکته اصلی این است که تبلت Touch-Memory یا کارت RFID یا جا کلیدی باید فرمت سازگار با دستگاه روی در داشته باشد.

ویدئو: نحوه کپی کردن کلید اینترکام

من قاطعانه با این رویکرد مخالفم. معمولاً همه چیز به پایان می رسد - یا با هیچ چیز، یا با انجمن هایی که با درخواست کمک مسدود شده اند. حتی اگر به کسی کمک شود، 90٪ مواقع دیگر هرگز در سایت های الکترونیک ظاهر نمی شود. در 10 درصد باقیمانده، او همچنان به سیل تالارها با التماس ادامه می دهد، آنها ابتدا او را لگد می زنند، سپس به سمت او گل می اندازند. از این 10 درصد، 9 درصد دیگر حذف می شوند. سپس دو گزینه وجود دارد: یا به یک کله احمقانه می رسد و هنوز به ابتدا می رود، یا در انواعی که به خصوص نادیده گرفته شده اند، این سهم اوست که از طرح های دیگران کپی کند، بدون اینکه حتی یک فکر در مورد نحوه کارکرد آن داشته باشد. آردوینیست ها اغلب از دومی متولد می شوند.

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

فقط گرم و نرم را با هم اشتباه نگیرید. اولاً، برای همه قوانین استثنائاتی وجود دارد، من شخصاً افرادی را دیدم که قبلاً هرگز میکروکنترلر را در دست نداشتند، اما در مدت زمان بسیار کوتاهی توانستند از آماتورهای رادیویی باتجربه پیشی بگیرند، ما آنها را در نظر نمی گیریم. ثانیاً، من با افرادی برخورد کردم که با کپی کردن نمودارها شروع کردند و بلافاصله آن را فهمیدند، اما به احتمال زیاد این یک استثنا از قاعده است. ثالثاً، در بین توسعه دهندگان آردوینو، برنامه نویسان با تجربه نیز وجود دارند؛ این فقط یک پلتفرم است، اما این یک استثنا است.

اگر در مورد توده عمومی صحبت کنیم، پس همه چیز دقیقاً همانطور است که در ابتدا توضیح دادم: بی میلی به پرداختن به اصول اولیه، در بهترین حالت، لحظه ای را به تاخیر می اندازد که باید به این مسائل بازگردید. در بدترین حالت، شما به سرعت به سقف دانش خود خواهید رسید و همیشه شخص دیگری را مقصر مشکلات خود می دانید.

2. قبل از حل یک مشکل، آن را تا حد پوچی تجزیه کنید، تا "لحیم کردن یک مقاومت"، این کمک می کند، آزمایش شده است.حل مشکلات کوچک بسیار آسان تر است. وقتی یک کار بزرگ به دسته ای از اقدامات کوچک تقسیم می شود، تنها کاری که باقی می ماند تکمیل آنهاست. من می توانم یک توصیه خوب دیگر به شما بدهم، حتی اگر به نظر شما دیوانه به نظر برسد - یک دفترچه بردارید و هر کاری را که قرار است انجام دهید در آن بنویسید. شما فکر می کنید که من آن را به خاطر خواهم آورد، اما نه. فرض کنید امروز روحیه خوبی دارم و به این فکر می کنم که چگونه تابلو را جمع کنم. یک برنامه عملیاتی بنویسید: بروید یک مقاومت بخرید، سیم ها را آماده کنید، نمایشگر را نصب کنید. آن وقت همه چیز را فراموش می کنی، دفترت را باز می کنی و نگاه می کنی - آره، امروز حال و هوای دیدن و برنامه ریزی دارم، یک بست درست می کنم. یا شما دارید یک برد مونتاژ می کنید و آخرین جزء باقی می ماند تا لحیم شود، اما اینطور نیست، مقاومت ها تمام شده اند، بنابراین باید قبل از لحیم کاری آن را یادداشت می کردم، بعد یادم آمد.

3. حداقل در مراحل اول از تولید کننده کد، ویژگی های غیر استاندارد و سایر ساده سازی ها استفاده نکنید.من می توانم مثال شخصی خود را برای شما بیان کنم. زمانی که من به طور فعال از AVR استفاده می کردم، از کدوژن CAVR استفاده می کردم. من از او کاملاً راضی بودم، اگرچه همه می گفتند او مزخرف است. زنگ‌ها مدام به صدا در می‌آمدند، مشکلاتی در کتابخانه‌ها، نحو، با انتقال وجود داشت، اما کنار گذاشتن آن سخت بود. من متوجه نشدم که چگونه کار می کند، فقط می دانستم کجا و چگونه جعبه ها را بررسی کنم.

با ظهور STM32، سهام به تابوت من رانده شد، لازم بود روی آنها خزیده شوم، و آن زمان بود که مشکلات ظاهر شدند. مشکلات به زبان ساده هستند؛ در واقع، من مجبور شدم از ابتدا به میکروکنترلرها و زبان C تسلط پیدا کنم. اشتباهات گذشته را دوباره تکرار نکردم. باید بگویم که این قبلاً بیش از یک بار مفید بوده است. از آن زمان، من این فرصت را داشتم که با پلتفرم های دیگر کار کنم و هیچ مشکلی را تجربه نکردم؛ این رویکرد خودش را توجیه می کند.

با توجه به تمام پیشرفت ها و ساده سازی ها، یکی بسیار وجود داشت مقایسه خوبکه آنها مانند ویلچرهایی هستند که روی ریل سوار می شوند، می توانی سوار شوی و لذت ببری، اما نمی توانی بلند شوی، جایی که تو را ببرند، به آنجا خواهی رسید.

4. زبان C را یاد بگیرید.آه، چقدر می شنوم که رادیو آماتورهای تازه کار به خود می بالند که رادیو را خوب می شناسند. این برای من غذا شد؛ من همیشه دوست دارم با این گونه افراد صحبت کنم. معمولاً فوراً مشخص می شود که آنها اصلاً زبان را نمی دانند. می توانم بگویم که علیرغم سادگی ظاهری، من افراد زیادی را ندیده ام که واقعاً او را به خوبی بشناسند. اصولاً همه به اندازه ای که برای حل مشکلات لازم است او را می شناسند.

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

بسیاری از مبتدیان از یادگیری زبان بیزار هستند، بنابراین اگر مانند دیگران نباشید، بلافاصله دو پله بالاتر از سایر مبتدیان خواهید بود. همچنین فرقی نمی کند که کجا زبان را مطالعه کنیم. به نظر من میکروکنترلر خیلی برای این کار مناسب نیست. نصب نوعی Visual Studio یا Qt Creator و حل مشکلات در خط فرمان بسیار ساده تر است.

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

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

6. دیتاشیت را بخوانید.بسیاری از توسعه دهندگان این موضوع را نادیده می گیرند. با مطالعه دیتاشیت دو پله بالاتر از آن توسعه دهندگان خواهید بود. انجام این کار بسیار مفید است، اولاً، این منبع اصلی است، مهم نیست چه سایت هایی را می خوانید، در بیشتر موارد آنها اطلاعات را از دیتاشیت تکرار می کنند، اغلب با خطاها و حذفیات. همچنین ممکن است اطلاعاتی در آنجا وجود داشته باشد که اکنون به آنها فکر نمی کنید، اما ممکن است در آینده مفید باشند. ممکن است یک نوع خطا ظاهر شود و یادتان باشد که بله، در این مورد در دیتاشیت گفته شده است. اگر هدف شما تبدیل شدن به یک توسعه‌دهنده خوب است، نمی‌توان از این مرحله اجتناب کرد؛ باید دیتاشیت‌ها را بخوانید؛ هر چه زودتر این کار را شروع کنید، رشد شما سریع‌تر خواهد بود.

7. مردم اغلب درخواست ارسال دیتاشیت به زبان روسی را دارند.دیتاشیت چیزی است که باید به عنوان حقیقت، دقیق ترین اطلاعات تلقی شود. حتی در آنجا، اشتباهات ممکن است. اگر اشتباهات مترجم هم به این اضافه شود، او هم یک انسان است، شاید نه از روی عمد، فقط غلط املایی. یا او دیدگاه خود را دارد، ممکن است چیزی را از دست بدهد که به نظر او مهم نیست، اما شاید برای شما بسیار مهم باشد. این وضعیت به ویژه زمانی خنده دار می شود که شما نیاز به یافتن اسنادی برای اجزای نه چندان محبوب دارید.

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

من آزمایشی انجام دادم: یک دانش آموز، یک دیتاشیت و مترجم گوگل داشتم. آزمایش شماره 1: به دانش آموز یک برگه داده داده شد و به دانش آموز این وظیفه داده شد که به طور مستقل مقادیر مورد نیاز را پیدا کند، نتیجه این است "چگونه می توانم"، "من انگلیسی نمی دانم"، "چیزی پیدا نکردم/من پیدا کردم. "درک" عبارات معمولی است که نشان می دهد او حتی تلاش نکرده است. آزمایش شماره 2: به همان دانش آموز همان دیتاشیت و همان تکلیف داده شد، با این تفاوت که من کنارش نشستم. نتیجه این است که بعد از 5 دقیقه او تمام ارزش های لازم را کاملاً بدون مشارکت من و بدون دانستن زبان انگلیسی پیدا کرد.

8. چرخ را دوباره اختراع کنید.به عنوان مثال، اگر در حال مطالعه چیز جدیدی هستید، مثلاً یک ترانزیستور، عمو هوروویتز با اقتدار از صفحات کتاب خود اعلام می کند که ترانزیستور تقویت می شود، همیشه بگویید - من باور ندارم. ما ترانزیستور را در دستان خود می گیریم، آن را به مدار وصل می کنیم و مطمئن می شویم که واقعاً چنین است. یک لایه کامل از مشکلات و ظرافت ها وجود دارد که در کتاب ها توضیح داده نشده است. فقط زمانی می توانید آنها را حس کنید که آنها را بردارید و سعی کنید آنها را جمع کنید. در عین حال، ما یک سری دانش مرتبط به دست می آوریم و ظرافت ها را یاد می گیریم. علاوه بر این، هر نظریه ای بدون تمرین بسیار سریعتر فراموش می شود.

در مرحله اولیه، یک روش به من کمک زیادی کرد - ابتدا یک مدار را جمع می کنید و می بینید که چگونه کار می کند و سپس سعی می کنید یک دلیل منطقی را در یک کتاب پیدا کنید. در بخش نرم افزار هم همینطور است، وقتی یک برنامه آماده وجود دارد، درک آن راحت تر است و کدهایی که مسئول چه چیزی هستند به هم مرتبط هستند.

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

9. اگر من جای توسعه دهنده بودم، چگونه این کار را انجام می دادم؟آیا می توانم بهتر عمل کنم؟ هر بار این سوالات را از خود بپرسید، این واقعا به شما کمک می کند تا در یادگیری خود پیشرفت کنید. به عنوان مثال، رابط های 1wire، i2c، spi، uart را مطالعه کنید و سپس به تفاوت آنها فکر کنید، آیا می توانست بهتر انجام شود یا خیر، این به شما کمک می کند بفهمید چرا همه چیز به این صورت است و غیر از این نیست. همچنین متوجه خواهید شد که چه زمانی و کدام یک بهتر است استفاده کنید.

10. با تکنولوژی محدود نشوید.مهم است که این توصیه خط بسیار ظریفی داشته باشد. مرحله‌ای در زندگی وجود داشت که از هر دری می‌توانستید «شما باید FPGA را بشناسید»، «اما می‌توانید با FPGA کاری انجام دهید» بشنوید. به طور رسمی، من هیچ هدفی برای مطالعه PLISins نداشتم، اما هیچ راهی وجود نداشت که بتوانم آن را نادیده بگیرم. زمان کمی برای آشنایی با این موضوع در نظر گرفته شد. زمان تلف نشد، من در رابطه با ساختار داخلی میکروکنترلرها چند سوال داشتم و بعد از ارتباط با Plisins بود که پاسخ آنها را دریافت کردم. نمونه های مشابه زیادی وجود دارد؛ تمام دانشی که من به این شکل به دست آوردم دیر یا زود به کارم آمد. من یک مثال بی فایده ندارم.

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

11. اگر از یک آماتور رادیویی تازه کار بپرسید که چه چیزی را بیشتر دوست دارد: برنامه نویسی یا طراحی مدار، با احتمال 99٪ پاسخ برنامه نویسی خواهد بود. در عین حال، این برنامه نویسان بیشتر وقت خود را صرف ساخت تابلو با LUT/photoresist می کنند. دلایل به طور کلی روشن است، اما اغلب اوقات این به نوعی جنون تبدیل می شود که شامل ساختن تخته برای ساخت تخته است.

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

12. توصیه بعدی به خصوص دردناک است؛ من واقعاً نمی خواهم در مورد آن بحث کنم، اما مجبورم.آنها اغلب برای من می نویسند و می گویند که روبل xxx خیلی گران است، از کجا می توانم آنها را ارزان تر تهیه کنم. این یک سوال رایج به نظر می رسد، اما معمولاً بلافاصله از آن رنج می برم، زیرا اغلب به شکایت های بی پایان در مورد کمبود پول تبدیل می شود. من همیشه یک سوال دارم: چرا باسن را پاره نکنیم و سر کار نرویم؟ حتی در همان زمان، حتی برای ساخت و ساز، شما باید یک ماه صبر کنید، اما پس از آن می توانید چند تخته بخرید که برای سال آینده دوام خواهند داشت. بله، می دانم که در شهرهای کوچک و روستاها کار پیدا کردن، مهاجرت به شهرهای بزرگ سخت است. از راه دور کار کنید، به طور کلی باید بچرخید. به سادگی شکایت فایده ای ندارد، راهی برای خروج از وضعیت وجود دارد، هرکس به دنبال آن باشد آن را پیدا می کند.

13. در همان قلک موضوع بسیار دردناک ساز را اضافه می کنم.این ابزار باید به شما امکان دهد تا در سریع ترین زمان ممکن دستگاه ها را توسعه دهید. به دلایلی، بسیاری از توسعه دهندگان برای زمان خود ارزش قائل نیستند. یک مثال معمولی، پرس ارزان برای پایانه ها است که بسیاری از کارفرمایان دوست دارند در آن صرفه جویی کنند. مشکل این است که حتی به درستی چین نمی خورد و باعث می شود سیم ها از بین بروند. شما باید دسته ای از دستکاری های اضافی را انجام دهید و بر این اساس زمان را تلف کنید. اما همانطور که می دانید، یک احمق سه برابر هزینه می دهد، بنابراین قیمت پایینبه دلیل زمان صرف شده و کیفیت پایین چین دادن، کرامپر چندین برابر افزایش می یابد.

من نمی گویم ارزان = بد، نه - همه چیز به موقعیت بستگی دارد. اجازه دهید به مثال crimper برگردم؛ زمانی بود که من آن را با هر چیزی چین می دادم، بنابراین اغلب مشکلات ایجاد می شد. به خصوص زمانی که یک برد را راه اندازی می کنید و کار نمی کند ناخوشایند است، پس از جستجوی طولانی برای یک خطا متوجه می شوید که به دلیل سیم ضعیف است، شرم آور است. از زمانی که چین‌خوردگی معمولی ظاهر شد، چنین مشکلی وجود نداشته است. بله، وزغ داخلی غر می زد و به خاطر هزینه اش خفه می شد، اما من هرگز از این تصمیم پشیمان نشدم. تنها چیزی که می خواهم بگویم این است که بعد از کار با یک ابزار معمولی، نمی خواهید به ابزار بد برگردید، حتی نمی خواهید در مورد آن بحث کنید. همانطور که تمرین نشان می دهد، بهتر است از ابزارها کوتاهی نکنید؛ اگر شک دارید، آن را از کسی آزمایش کنید، بررسی ها، بررسی ها را بخوانید.

14. یک وب سایت راه اندازی کنید، می توانید هر آنچه را که می خواهید در آن بنویسید، درست مانند یادداشت ها.تمرین نشان می دهد که کارفرمایان هنوز آن را نمی خوانند، اما این واقعیت خود تأثیر زیادی دارد.

15. سوال مشکل: پروفایل آموزش عالی، لازمه؟من بیش از یک مورد را می شناسم که در آن افرادی کاملاً بدون تحصیلات کار می کردند و بر اساس تجربه و دانش خود می توانستند به هر متخصص دارای گواهینامه ای توجه کنند. در واقع، من تحصیلات تخصصی ندارم، آیا از این موضوع احساس ناراحتی می کنم؟ تا حدی بله.

در همان ابتدا که میکروکنترلر برای من یک سرگرمی بود، برای سنجش سطحم کمک زیادی به دروس و دیپلم از دانشگاه های مختلف می کردم. به جرات میتونم بگم بدون توجه به اسم دانشگاه سطح عموما پایینه. برای نوشتن چنین دیپلمی نیازی به چندین سال تحصیل نیست. شما خودتان می توانید در مدت زمان بسیار کوتاهی به این هدف برسید. و با این حال، اغلب اوقات وجود داشت که دانش آموزان دروسی را می دانستند که در سال 2-3 می گرفتند، اما من آن را نمی دانستم. اگرچه تمام این دانش با خودآموزی جبران شد، اما بهتر است زمان را برای این کار تلف نکنید.

دانشگاه به خاطر یک تکه کاغذ. می توانم بگویم که موقعیت هایی نیز وجود داشت که به آنها شغلی پیشنهاد شد که نیاز به تحصیلات اجباری داشت و شرم آور بود که در آن لحظه کاغذی وجود نداشت. اما به طور کلی، تاریخ نشان می دهد که اکثر کارفرمایان به مدارک شما اهمیتی نمی دهند.

نکته بعدی اغلب در نظر گرفته نمی شود، این محیط است. فراموش نکنید افرادی که با آنها درس می خوانید نسل شما هستند و ممکن است با آنها کار کنید. تعداد شرکت های فعال در یک صنعت بسیار محدود است. تمرین نشان می‌دهد که حتی در شهرهای بزرگ، همه از یکدیگر تا جزییات صمیمی می‌دانند.

نکته دیگر فرصت هاست. اغلب، دانشگاه ها توانایی های خاص خود را دارند - تجهیزات، شاید برخی از بخش ها، شاید برخی برنامه ها برای کار در خارج از کشور، اگر حتی کوچکترین فرصتی وجود داشته باشد، باید از آن استفاده کرد. اگر در دانشگاهی چشم‌اندازی نمی‌بینید، به دانشگاه دیگری بروید، دنیا فقط به یک دانشگاه ختم نمی‌شود.

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

16. آیا برای شروع برنامه نویسی در 20، 30، 40، 50 سالگی دیر شده است؟رویه افراد دیگر نشان می دهد که سن اصلاً مانعی ندارد. به دلایلی، بسیاری این واقعیت را در نظر نمی گیرند که یک لایه کامل از کار وجود دارد که جوانان به دلیل جاه طلبی های خود نمی خواهند انجام دهند. بنابراین، کارفرمایان ترجیح می دهند کسانی را که آن را حمل می کنند استخدام کنند. این شانس شما برای قلاب شدن است و سپس همه چیز فقط به شما بستگی دارد.

و آخرین توصیهبسیاری از آماتورهای رادیویی بی ارتباط، عصبانی و تحریک پذیر هستند - این را یک ویژگی شغلی در نظر بگیرید. مهربانی و مثبت اندیشی را ساطع کنید، انسان خوبی باشید.

اگر خطایی پیدا کردید، لطفاً یک متن را انتخاب کنید و Ctrl+Enter را فشار دهید.