فهرست مطالب:

استفاده مجدد از پین رابط ATtiny84/85 SPI: 6 مرحله
استفاده مجدد از پین رابط ATtiny84/85 SPI: 6 مرحله

تصویری: استفاده مجدد از پین رابط ATtiny84/85 SPI: 6 مرحله

تصویری: استفاده مجدد از پین رابط ATtiny84/85 SPI: 6 مرحله
تصویری: Using Digispark Attiny85 Mini Arduino boards: Lesson 108 2024, جولای
Anonim
استفاده مجدد از پین رابط ATtiny84/85 SPI
استفاده مجدد از پین رابط ATtiny84/85 SPI

این دستورالعمل پیگیری دستورالعمل "ATtiny84/85 Debugging with Serial Output" است و این پیکربندی سخت افزاری و نرم افزاری را برای رفع مشکل استفاده مجدد از پین های بارگیری برنامه توسط برنامه برنامه کاربردی گسترش می دهد. به طور کلی ، بین این قسمت و قسمت 1 قابل آموزش ، موضوعات زیر مورد بحث/نشان داده شده است:

موضوع ATtiny84 ATtiny85
ارتباط سریال با استفاده از کلاس SoftwareSerial ایکس ایکس
اشتراک گذاری پین های دستگاه بین برنامه و بارگیری ایکس ایکس
وقفه تغییر پین ایکس
وقفه خارجی ایکس
خوابیدن در حالت POWER_DOWN ؛ بیدار شدن در وقفه ایکس
حل مشکل پیوند بردار وقفه "با تعریف چندگانه" مربوط به SoftwareSerial ایکس
اصلاح ، بارگیری ، اشکال زدایی ، … چرخه توسعه در دستگاه برای دستگاه های ATtiny ایکس ایکس

افزودن یک جزء سخت افزاری ورودی/خروجی به یکی از پین های اختصاص داده شده به رابط برنامه نویسی SPI گاهی اوقات خوب است ، گاهی اوقات نه. به عنوان مثال ، افزودن یک LED به MISO فقط باعث می شود که LED هنگام بارگیری چشمک بزند و سپس برای برنامه در دسترس باشد. با این حال ، افزودن یک زنگ پیزو به MISO منجر به صدای جیغ کشیدن وحشتناک و به دنبال آن بارگیری نمی شود.

این دستورالعمل نحوه استفاده از مالتی پلکسر 4x2: 1 را برای "بازیابی" استفاده از پین های اختصاص داده شده به رابط SPI MISO ، MOSI و سیگنال های SCK با محافظت از آنها در حین بارگیری توضیح می دهد. استفاده مجدد از پین RESET نیاز به تغییر فیوز دارد و شامل این روش نمی شود. تعیین دو پین با استفاده از مالتی پلکسر برای تغییر بین ورودی های برنامه و برنامه نویسی بسته به اینکه بارگیری در حال انجام است یا خیر ، انجام می شود. کد و شماتیک برای هر دو ATtiny84 و ATtiny85 گنجانده شده است. پیکربندی ATiny84 ابتدا مورد بررسی قرار می گیرد زیرا دارای دو درگاه ورودی/خروجی است و می تواند برای نشان دادن برخی مشکلات/راه حل های دیگر مورد استفاده قرار گیرد. پس از بحث tiny84 ، سناریوهای مشابهی برای ATtiny85 مورد بحث قرار می گیرد.

مرحله 1: سخت افزار مورد نیاز

تصویر
تصویر

اکثر سخت افزارهای مورد نیاز در قسمت 1 قابل ذکر بود ، بنابراین فقط سخت افزار جدید در زیر ذکر شده است.

نام منبع احتمالی چگونه استفاده می شود
مولتی پلکسر 4x2: 1 موزر شامل چهار سوئیچ 2 ورودی ؛ 1 خروجی است که مکانیزمی است که سیگنال های رابط SPI و برنامه های ورودی/خروجی را به اشتراک می گذارند.
سوئیچ SPST هر نوع سوئیچ (لحظه ای یا قفل شده) کار می کند. سوئیچ برای نشان دادن اشتراک گذاری پین برای ورودی برنامه استفاده می شود.
مقاومت 10K مقاومت سوئیچ را برای سوئیچ SPST بکشید تا از ورودی شناور جلوگیری شود
تصویر
تصویر
تصویر
تصویر

مالتی پلکسر کلید جداسازی استفاده از بارگیری پین از کاربرد برنامه است. عملکرد کلی مولتی پلکسر 4x2: 1 تقریباً مستقیم است که از 2 سیگنال کنترل و 4 کلید عملکرد یکسان تشکیل شده است. رفتار هر پین مالتی پلکسر در زیر مورد بحث قرار گرفته است:

سنجاق کردن نام عملکرد
15 G همانطور که در جدول حقیقت نشان داده شده است ، مالتی پلکسر تنها زمانی کار می کند که پین فعال G کم باشد. از آنجا که ما هرگز نمی خواهیم مالتی پلکسر را کاملاً غیرفعال کنیم ، پین 15 مستقیماً به زمین متصل می شود.
2-4; 5-7; 9-11;12-14 A (ورودی) ، B (ورودی) ، Y (خروجی) چهار ورودی 2 وجود دارد. سوئیچ های 1 خروجی با هر گروه 3 پین به ترتیب متوالی به ترتیب A (ورودی) ، B (ورودی) ، Y (خروجی) به عنوان مثال برای سوئیچ 1 ؛ پین 2 = 1A ؛ پین 3 = 1B ؛ پین 4 = 1Y
1 انتخاب کنید هنگامی که Select کم است ، ورودی سوئیچ A به پین خروجی سوئیچ مربوطه متصل می شود ، Y. هنگامی که انتخاب زیاد است ، به جای آن ورودی B به خروجی متصل می شود. سوئیچ ها به طور همزمان توسط سیگنال Select کنترل شده و عملکرد یکسانی دارند.
8 GND زمین IC چند پلکسر
16 VCC قدرت IC چندگانه

مرحله 2: مروری بر موارد آزمایش

تصویر
تصویر
تصویر
تصویر

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

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

  1. مورد خروجی: خروجی LED از پین ATtiny84 4 (SCK) با استفاده از سوئیچ مالتی پلکسر 2 جدا شده است

    • پین مالتی پلکسر 2A را به زمین وصل کنید
    • پین مالتی پلکسر 2B را به پین ATtiny85 وصل کنید 4
    • خروجی 2Y را به آند LED وصل کنید

      • نتایج مورد انتظار:

        • LED هنگام بارگیری از زمان اتصال به 2A ، زمین خاموش است
        • LED پس از بارگیری از طریق 2B به پین خروجی برنامه 4 متصل می شود و شروع به چشمک زدن می کند
  2. مورد ورودی: ورودی سوئیچ SPST به ATtiny84 پین 6 (MOSI) با استفاده از سوئیچ مالتی پلکسر 3 جدا شده است

    • سیم سرب MOSI از سربرگ AVR Programmer به 3A منتقل می شود
    • سوئیچ ورودی 3B به خروجی SPST متصل است
    • خروجی 3Y به پین 6 ATtiny84 متصل است

      • 3A ، MOSI ، هنگام بارگیری به پین 6 متصل می شود
      • 3B ، خروجی SPST ، پس از بارگیری به پین 6 متصل می شود

مورد 1 موفقیت آمیز است اگر LED هنگام بارگیری برنامه چشمک نزند و سپس هر دو ثانیه پس از بارگیری طبق انتظار برنامه تحت کنترل چشمک بزند. بدون انزوا ، LED هنگام بارگیری چشمک می زند ، زیرا مستقیماً به سیگنال SCK متصل است ، که حالت را به دریافت/انتقال داده ساعت تغییر می دهد.

مورد 2 موفقیت آمیز است اگر سیگنال MOSI در حین بارگیری به ATtiny84 ارسال شود ، یعنی بارگیری انجام نمی شود ، و LED به روشن/خاموش شدن SPST پس از بارگیری پاسخ می دهد. مورد 2 از شکست احتمالی بارگیری جلوگیری می کند. سوئیچ SPST بدون انزوا در صورت 1) استفاده از سوئیچ قفل شده و 2) سوئیچ در هنگام بارگیری در حالت روشن قرار می گیرد. هنگامی که سوئیچ توسط مالتی پلکسر جدا می شود ، تحت هیچ شرایطی نمی تواند باعث خرابی شود. برای ما پیرها کمی سخت است ، اما آرامش بخش است.

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

مرحله 3: ATtiny84 مورد 1 - خروجی برنامه را جدا کنید

تصویر
تصویر

این مرحله نحوه به اشتراک گذاری پین خروجی برنامه با سیگنال بارگیری را توضیح می دهد. نمونه ای که استفاده می شود LED متصل به پین 4 (SCK) است. استفاده از LED موجود به عنوان مثال اجازه می دهد تا بر افزودن مالتی پلکسر به محیط سخت افزاری و نرم افزاری قسمت 1 تأکید شود.

  • سخت افزار

    • مالتی پلکسر را به تخته نان در محل نسبی نشان داده شده در نمودار سرخی بالا اضافه کنید. مالتی پلکسر به سمت مرکز قرار گرفته است تا جایی برای سوئیچ SPST مورد نیاز در مورد 2 ایجاد شود.
    • با افزودن سیم سربی (پیشنهاد رنگ زرد) از پین 11 ATtiny84 به پایه 1 مالتی پلکسر ، سیگنال RESET را به مالتی پلکسر گسترش دهید.
    • تنظیمات سخت افزاری باقی مانده در مرحله 2 آمده است

      • پین مولتی پلکسر 2A را مستقیماً به زمین وصل کنید
      • پین 2B را به پین 4 ATtiny84 وصل کنید
      • خروجی 2Y را به آند LED وصل کنید

        • نتایج مورد انتظار:

          • در حین بارگیری 2Y به زمین (2A) متصل می شود بنابراین LED خاموش می ماند
          • پس از بارگیری 2Y به ATtiny84 pin 4 - کنترل LED برنامه متصل می شود
  • نرم افزار

    • کد قسمت 1 مجدداً استفاده می شود. از قسمت 1 موجود است و نه قابل تکرار در اینجا
    • برنامه قسمت 1 را در Arduino IDE بارگذاری و کامپایل کنید
    • برنامه نویس Tiny AVR را به پورت USB رایانه وصل کنید
    • کابل USB Adafruit را به Serial به درگاه USB دوم وصل کنید

      • یک پورت COM ایجاد می شود و به طور خودکار در لیست پورت IDE در دسترس قرار می گیرد
      • پنجره COM را اجرا کنید
    • کد کامپایل شده را در ATtiny84 بارگیری کنید

نتایج برنامه کاربردی همانند قسمت 1 است زیرا تنها تغییر در انتقال LED به محل "محافظت شده" بود: LED در فواصل 2 ثانیه چشمک می زند. خروجی سریال یکسان است تنها تفاوتی که باید رخ دهد این است که LED در حین بارگیری دیگر چشمک نمی زند ، زیرا در آن زمان ، از طریق پین 2A مولتی پلکسر به زمین متصل می شود.

تصویر
تصویر

مرحله 4: ATtiny84 مورد 2 - ورودی برنامه را جدا کنید

تصویر
تصویر

این مرحله بر اساس تنظیمات مورد جداسازی خروجی قبلی است. تغییرات سخت افزاری شامل اتصال سوئیچ SPST به ATtiny84 پین 6 (MOSI) از طریق مالتی پلکسر است. بنابراین تغییرات سخت افزاری حداقل است اما چندین تغییر نرم افزاری وجود دارد که به سوئیچ SPST اجازه می دهد LED را با استفاده از وقفه تغییر پین کنترل کند. کد به روز شده در انتهای این بخش قرار داده شده است. کد باید در Arduino IDE کپی شود. پیشنهاد می کنیم آن را با نام Multiplexer_Input ذخیره کنید. (من از طولانی شدن این بخش عذرخواهی می کنم ، اما این قلب هدف آموزنده است و فکر می کنم به عنوان یکپارچه بهتر از وارد کردن وقفه های مصنوعی خوانده می شود.)

به روز رسانی محل هدف
شامل کلاس "هک شده" SoftwareSerial باشد شامل بخش LED اکنون توسط سوئیچ SPST از طریق وقفه تغییر پین کنترل می شود. کلاس SoftwareSerial باید اصلاح شود زیرا در غیر این صورت تمام بردارهای وقفه تغییر پین را اختصاص می دهد. این باعث ایجاد خطای پیوند "تعریف چندگانه" برای بردار (پورت 0) اختصاص داده شده به سوئیچ SPST می شود. نسخه هک شده SoftwareSerial باید در همان دایرکتوری برنامه قرار گیرد تا فقط بر این برنامه تأثیر بگذارد.
تعریف پین ورودی SPST شامل/بخش تعریف اختصاص ورودی SPST به پین دستگاه. پین مخصوص دستگاه است بنابراین به بخش (های) #ifdef ATtiny8x اضافه می شود.
حالت پین ورودی SPST تابع راه اندازی پین SPST به عنوان یک ورودی پیکربندی شده است
وقفه پین SPST را پیکربندی کنید تابع راه اندازی بردار وقفه به پین ورودی SPST اختصاص داده می شود تا تغییر حالت سوئیچ باعث وقفه شود. ثبت پیکربندی و نوع وقفه مختص دستگاه است. برای اینکه کد تا حد ممکن ساده باشد ، تفاوتها در یک بخش #اگر تعریف شده است انجام می شود
راه اندازی پیام سریال کامل تابع راه اندازی تنظیم پیام خروجی سریال کامل تغییر می کند تا برنامه ورودی مالتی پلکسر را منعکس کند
عملکرد ISR سوئیچ SPST را اضافه کنید بخش کد ISR وقفه تغییر پین SPST اضافه می شود. کد رایج است اما بردار مورد استفاده مخصوص دستگاه است و در قسمتهای وابسته به دستگاه در بالای برنامه تعریف شده است. به منظور تأیید فعال بودن ISR ، وضعیت LED تغییر می کند. اگرچه در یک برنامه واقعی نه-نه ، پیام خروجی سریال منعکس کننده حالت LED جدید تولید می شود.
پردازش حلقه را اصلاح کنید تابع حلقه ISR اکنون روشن و خاموش کردن LED را کنترل می کند تا عملکرد از روال حلقه حذف شود. فراخوانی به روال خواب برای ATtiny84 به عنوان نوعی "اضافی" اضافه می شود. برای این برنامه ، خواب ATtiny85 کار نمی کند. شاید به دلیل تداخل کلاس سریال نرم افزار باشد زیرا با SoftwareSerial کار می کند حذف شده است.
روال خواب را اضافه کنید بخش کد عملکرد خواب برای نشان دادن استفاده از مالتی پلکسر ضروری نیست. فقط اضافه شده است زیرا معمولاً می خواهید منتظر یک ورودی در حالت POWER_DOWN باشید تا در مصرف برق صرفه جویی کنید تا اینکه در حلقه برنامه بدون انجام هیچ کاری تا زمانی که ورودی رخ ندهد ، ادامه دهید.

کد کلاس SoftwareSerial را اصلاح کنید

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

C: / Program Files (x86) Arduino / hardware / arduino / avr / libraries / SoftwareSerial / src

در PCINT0_vect در SoftwareSerial.cpp پیدا کنید تا محل شروع تغییرات کد را بیابید. کد زیر را بلافاصله قبل از دستور #if تعریف شده (PCINT0_vect) موجود اضافه کنید.

#اگر تعریف شده (_ AVR_ATtiny84_)

#تعریف MYPORT PCINT1_vect #elif تعریف شده (_ AVR_ATtiny85_) #تعریف MYPORT PCINT0_vect #endif ISR (MYPORT) {SoftwareSerial:: handle_interrupt ()؛ }

اکنون بلوک کد موجود را که بردارهای وقفه پورت را مطابق شکل زیر اختصاص می دهد ، کامنت کنید (فقط نمادهای نظر بلوک شروع و پایان / * و * /را اضافه کنید):

/*

#اگر تعریف شده (PCINT0_vect) ISR (PCINT0_vect) {SoftwareSerial:: handle_interrupt ()؛ } #endif #اگر تعریف شده باشد (PCINT1_vect) ISR (PCINT1_vect) {// SoftwareSerial:: handle_interrupt ()؛ ISR (PCINT1_vect ، ISR_ALIASOF (PCINT0_vect)) ؛ } #endif #اگر تعریف شده باشد (PCINT2_vect) ISR (PCINT2_vect، ISR_ALIASOF (PCINT0_vect))؛ #endif #اگر تعریف شده باشد (PCINT3_vect) ISR (PCINT3_vect ، ISR_ALIASOF (PCINT0_vect)) ؛ #endif */

سخت افزار را پیکربندی کنید

سوئیچ SPST به ATtiny84 پین 6 (MOSI) متصل شده است ، همانطور که در مرحله 2 آمده است. این روش برای سهولت در اینجا کپی می شود.

  • سوئیچ ورودی 3A را به سربرگ TOS AVR Programmer MOSI وصل کنید
  • 3B را به پین خروجی سوئیچ SPST وصل کنید
  • 3Y را به ATtiny84 پین 6 وصل کنید

    • نتایج:

      • 3A ، MOSI ، در حین بارگیری به ATtiny84 pin 6 منتقل می شود
      • 3B ، خروجی SPST ، پس از بارگیری به پین 6 بسته می شود

برنامه را اجرا کنید

قبل از اجرا ، کلید SPST را در حالت خاموش قرار دهید. در غیر اینصورت هنگام خاموش شدن کلید LED روشن می شود و برعکس. مراحل مرحله 3 را بارگیری ، کامپایل و بارگیری برنامه ورودی برنامه با استفاده از Arduino IDE دنبال کنید. مانند قبل ، LED هنگام بارگیری نباید چشمک بزند ، بنابراین تنها نشانه ای که برنامه در حال اجرا است ، پیام سریال در پایان برنامه تنظیم است: SETUP Complete - مثال ورودی

در این مرحله برنامه منتظر ورودی از سوئیچ SPST است. قرار دادن سوئیچ در موقعیت ON باعث روشن شدن LED می شود. بازگشت به حالت خاموش ، LED را خاموش می کند. پیامهای خروجی تأیید می کنند که ISR فراخوانی شده است (ISR: Led HIGH ، ISR: Led LOW). توجه داشته باشید که ترتیب پیام های سریال GO TO SLEEP است ابتدا منتظر تغییر حالت سوئیچ باشید. هنگام دریافت کلید ورودی ، ISR فراخوانی می شود ، LED را روشن می کند و تغییرات را مستند می کند. پس از فراخوانی که پردازنده را بیدار می کند ، پس از فراخوانی ، پردازش افزایش می یابد.

تصویر
تصویر

برنامه ای برای این دستورالعمل:

//************************************************************************

// بخش 2: برنامه/بارگیری اشتراک گذاری پین دستگاه //. کد قسمت 1 را تغییر می دهد تا از استفاده مجدد برنامه از پین ها // اختصاص داده شده به رابط برنامه نویسی SPI // پشتیبانی کند. کد "Comon" برای ATtiny85 و ATtiny84 // ************************************** ****************************** #شامل "SoftwareSerial.h" // کلاس سریال نرم افزاری Arduino اصلاح شده #شامل // در حالی که کد پردازش متداول است ، پین های مورد استفاده مخصوص دستگاه #در صورت تعریف (_ AVR_ATtiny84_) || تعریف شده (_ AVR_ATtiny84A_) #تعریف ledPin 4 // روشن/خاموش روشن/خاموش را روشن کنید/تعریف کنید rxPin 9 // پین مورد استفاده برای دریافت سریال #تعریف txPin 10 // پین مورد استفاده برای انتقال سریال #تعریف SpstPin 6 // ورودی از سوئیچ SPST (MOSI) #تعریف ISR_VECT PCINT0_vect // سوئیچ SPST تغییر پین تغییر بردار قطع #elif // سوئیچ SPST بردار تغییر وقفه تغییر پین #دیگر #خطا فقط ATiny84 و ATtiny85 توسط این پروژه پشتیبانی می شوند ، txPin) ؛ // ---------------------------------------------------- ------------------------ // راه اندازی اولیه منابع پردازش // ------------------- ------------------------------------------------------ --- void setup () {mySerial.begin (9600) ؛ // شروع تاخیر پردازش سریال (2000) ؛ // به پورت Serial Com زمان دهید تا راه اندازی کامل انجام شود. // در غیر این صورت ، اولین خروجی احتمالاً گم شده یا خراب شده است pinMode (ledPin ، OUTPUT) ؛ // پیکربندی led برای OUTPUT pinMode (SpstPin ، INPUT) ؛ // پیکربندی سوئیچ SPST را به عنوان INPUT #در صورت تعریف (_ AVR_ATtiny84_) پیکربندی کنید || (_AVR_ATtiny84A_) // وقفه تغییر پین را برای کنترل ورودی سوئیچ در پین 6 (MOSI) GIMSK | = (1 <

مرحله 5: مورد ATtiny85 1 - خروجی برنامه را جدا کنید

تصویر
تصویر

به جای ایجاد یک سخت افزار تکراری برای ATtiny85 ، احتمالاً راحت تر با پیکربندی نهایی ATtiny84 از مرحله 4 شروع کرده و تراشه tiny84 را با tiny85 جایگزین کنید. تمام سخت افزارهای مورد نیاز در حال حاضر موجود است. اگر از این رویکرد استفاده می کنید ، tiny85 را طوری قرار دهید که پین های 3 و 4 با کابل سریال tx کنار هم قرار گرفته و سیم دریافت کنند. سپس فقط باید سیم های سربی رابط SPI را برای مطابقت با مکان های مورد نیاز خود برای ATtiny85 تغییر دهید.

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

تصویر
تصویر

مرحله 6: مورد ATtiny85 مورد 2 - ورودی برنامه را جدا کنید

تصویر
تصویر

برای راه اندازی سخت افزار ، با پیکربندی مرحله 5 شروع کنید و سوئیچ SPST را همانطور که در نمودار بالا نشان داده شده است ، اضافه کنید. من در واقع از یک سوئیچ لحظه ای برای نسخه tiny85 استفاده کردم و تأیید را کمی ساده تر می کند. توجه داشته باشید که خروجی سوئیچ 180 درجه از تنظیمات ATtiny84 چرخانده می شود. این تغییر مسیر سیم های اتصال را آسان تر می کند زیرا هر 3 سیگنال SPI در طرف دیگر برای ATtiny85 قرار دارند.

از همان برنامه برای ATtiny84 مرحله 4 استفاده کنید. نتایج کلی مشابه مورد انتظار است - LED هنگامی که سوئیچ SPST روشن/خاموش می شود و پیامهای خروجی سریال تغییرات را ثبت می کند ، وضعیت را تغییر می دهد. پیام های GO TO SLEEP وجود ندارد زیرا از قابلیت خواب برای ATtiny85 استفاده نمی شود. حتی اگر از برنامه مشابه استفاده می شود ، تفاوت های قابل توجهی در پیاده سازی وجود دارد زیرا این ATtiny85 فقط یک ثبت کننده پورت دارد (پورت 0):

  1. SoftwareSerial اکنون وقفه تغییر پورت 0 پین را برای ارتباط سریال اختصاص می دهد (به یاد بیاورید که ما توانستیم از پورت 1 برای ATtiny84 استفاده کنیم.)
  2. وقفه سوئیچ SPST باید با وقفه خارجی 0 (INT0) پیاده سازی شود زیرا وقفه تغییر پین تنها توسط SoftwareSerial اختصاص داده شده است. این نکته را نشان می دهد که وقفه های تغییر پین و وقفه های خارجی از نظر منطقی مستقل هستند و می توانند در همان رجیستر پورت استفاده شوند.
  3. با استفاده از نسخه اصلاح شده SoftwareSerial چیزی بدست نمی آید - فقط یک پورت وجود دارد و کلاس SoftwareSerial آن را می گیرد. با این حال ، کلاس اصلاح شده هنوز برای جلوگیری از تغییری که مستقیماً به هدف این مرحله مربوط نمی شود ، مورد استفاده قرار می گیرد.

توصیه شده: