Агуулгын хүснэгт:

ATtiny84/85 SPI интерфэйсийн зүүг дахин ашиглах: 6 алхам
ATtiny84/85 SPI интерфэйсийн зүүг дахин ашиглах: 6 алхам

Видео: ATtiny84/85 SPI интерфэйсийн зүүг дахин ашиглах: 6 алхам

Видео: ATtiny84/85 SPI интерфэйсийн зүүг дахин ашиглах: 6 алхам
Видео: MKS Robin Nano v2.0 - A4988 or DRV8825 Install Guide 2024, Арваннэгдүгээр
Anonim
ATtiny84/85 SPI интерфэйс зүүг дахин ашиглах
ATtiny84/85 SPI интерфэйс зүүг дахин ашиглах

Энэхүү зааварчилгаа нь "ATtiny84/85 Цуваа гаралттай хэлхээний дибаг хийх" зааварчилгааны дагуу хийгдэж байгаа бөгөөд програм хангамжийн програмын татаж авах цэгийг дахин ашиглах асуудлыг шийдвэрлэхийн тулд техник хангамж, програм хангамжийн тохиргоог өргөжүүлсэн болно. Энэ болон 1 -р хэсгийн хооронд зааварчилгаа өгөх хооронд дараах сэдвүүдийг хэлэлцэж/үзүүлэв.

Сэдэв ATtiny84 ATtiny85
SoftwareSerial ангийг ашиглан цуваа холбоо X X
Аппликешн болон татаж авах хооронд төхөөрөмжийн зүүг хуваалцах X X
Pin өөрчлөх тасалдал X
Гадаад тасалдал X
POWER_DOWN горимд унтах; тасалдал дээр сэрэх X
SoftwareSerial-тэй холбоотой "үржүүлсэн тодорхойлогдсон" тасалдлын вектор холбоосын алдааг тойрон гарах X
ATtiny төхөөрөмжүүдийн схемийг өөрчлөх, татаж авах, дибаг хийх,… хөгжүүлэх мөчлөг X X

SPI програмчлалын интерфэйсэд зориулагдсан голуудын аль нэгэнд тоног төхөөрөмжийн I/O бүрэлдэхүүн хэсэг нэмэх нь заримдаа зүгээр, заримдаа үгүй. Жишээлбэл, LED -ийг MISO дээр нэмэх нь татаж авах явцад LED анивчдаг бөгөөд үүнийг програмд ашиглах боломжтой болно. Гэсэн хэдий ч MISO дээр пьезо дуугаруулагч нэмж оруулснаар аймшигтай хашгирах дуу гарч, дараа нь татаж авах боломжгүй болно.

Энэхүү зааварчилгаа нь 4x2: 1 мультиплексор ашиглан SPI интерфейс MISO, MOSI, SCK -ийн дохиог татаж авах явцад хамгаалах замаар хэрхэн "сэргээх" талаар тайлбарласан болно. RESET зүүг дахин ашиглах нь гал хамгаалагчийн өөрчлөлтийг шаарддаг бөгөөд энэ аргад хамаарахгүй. Татаж авах ажиллагаа явагдаж байгаа эсэхээс хамааран програм болон програмчлалын оролтыг солихын тулд мультиплексор ашиглан зүүг хоёр удаа хуваарилдаг. Код ба схемийг ATtiny84 ба ATtiny85 хоёуланд нь оруулсан болно. ATiny84 -ийн тохиргоог эхлээд оруулдаг, учир нь энэ нь хоёр оролтын/оролттой бөгөөд зарим нэмэлт асуудал/шийдлийг харуулахад ашиглаж болно. Tiny84 хэлэлцүүлгийн дараа ATtiny85 -ийн хувьд ижил хувилбаруудыг хэлэлцдэг.

Алхам 1: Шаардлагатай техник хангамж

Зураг
Зураг

Шаардлагатай тоног төхөөрөмжийн ихэнх хэсгийг зааварчилгааны 1 -р хэсэгт оруулсан тул зөвхөн шинэ тоног төхөөрөмжийг доор жагсаав.

Нэр Боломжит эх сурвалж Хэрхэн ашигласан
4x2: 1 мультиплексор Mouser SPI интерфэйсийн дохио, I/O програмыг хуваалцах механизм болох 2 оролт; 1 гаралтын дөрвөн унтраалга агуулдаг.
SPST шилжүүлэгч Аливаа унтраалга (түр зуур эсвэл хоцрогдсон) ажиллах болно. Шилжүүлэгч нь програмын оролтод зүү хуваалцахыг харуулахад ашиглагддаг.
10K эсэргүүцэл Хөвөгч оролтоос зайлсхийхийн тулд SPST шилжүүлэгчийн доош татах эсэргүүцэл
Зураг
Зураг
Зураг
Зураг

Мультиплексор нь зүү татаж авах хэрэглээг програмын хэрэглээнээс тусгаарлах түлхүүр юм. 4x2: 1 мультиплексорын ерөнхий функц нь 2 хяналтын дохио, 4 ижил ажиллагаатай унтраалгаас бүрддэг. Мультиплексор зүү бүрийн зан байдлыг доор авч үзэх болно.

Пин Нэр Чиг үүрэг
15 Г. Үнэн хүснэгтэд заасанчлан мультиплексор нь зөвхөн G идэвхжүүлэгч зүү бага байх үед л ажилладаг. Бид хэзээ ч мультиплексорыг бүрэн идэвхгүй болгохыг хүсдэггүй тул 15 -р зүүг газардуулгатай шууд холбох болно.
2-4; 5-7; 9-11;12-14 A (оролт), B (оролт), Y (гаралт) 2 оролттой дөрвөн байна; 3 гаралтын бүлэг тус бүрээр 1 гаралтын унтраалга A (оролт), В (оролт), Y (гаралт) дарааллаар дугаарлагдсан байна. 1 -р унтраалгын хувьд; зүү 2 = 1А; зүү 3 = 1В; зүү 4 = 1Y.
1 Сонгоно уу Сонголт бага байх үед А шилжүүлэгчийн оролт нь холбогдох унтраалгын гаралтын зүү, Y -д холбогдсон байна. Сонголт өндөр байх үед түүний оронд B унтраалгын оролт гаралтад холбогдсон байна. Шилжүүлэгчийг сонгох дохиог нэгэн зэрэг хянаж, ижил функцтэй ажилладаг.
8 GND IC газардуулга
16 VCC IC хүчдэл

Алхам 2: Туршилтын тохиолдлын тойм

Зураг
Зураг
Зураг
Зураг

Зүүг дахин ашиглах хоёр хувилбар нь зүү нь програмын оролт эсвэл гаралт эсэх дээр суурилдаг. Аливаа оролттой ажиллах журам үргэлж ижил байдаг; мөн програм хангамжийн гаралтын техник хангамжийн бүрэлдэхүүн хэсгээс үл хамааран ижил төстэй байдаг. Гэсэн хэдий ч тодорхой жишээ өгвөл тайлбар нь илүү хялбар бөгөөд илүү ойлгомжтой болно гэж найдаж байна. Хоёр тохиолдлын минималист схемийг дээр харуулав. Нарийвчилсан тохиргоог хийхийн тулд холболтууд нь хэрэмний үүр болж хувирдаг тул эдгээр цэвэр диаграмм руу буцах нь зүйтэй болов уу.

RESET нь татаж авах явцад бага боловч татаж дууссаны дараа өндөр түвшинд буцаж ирдэг тул мультиплексор сонгох дохионы төгс сонголт юм. Бүх унтраалга ижил ажилладаг тул мультиплексорыг аль ч тохиолдолд ашиглаж болно гэдгийг анхаарна уу. Түүнчлэн, жишээнүүдийн аль нь ч "бодитой" биш юм; Тэднийг тусгаарлах техникийг харуулах хамгийн хялбар арга болгон сонгосон

  1. Гаралтын тохиолдол: ATtiny84 pin 4 (SCK) -ээс LED гаралтыг мультиплексор унтраалга 2 ашиглан тусгаарладаг

    • мултиплексор 2A зүүг газардуу холбоно уу
    • Multiplexer pin 2B -ийг ATtiny85 pin 4 -т холбоно уу
    • 2Y гаралтыг LED анод руу холбоно уу

      • Хүлээгдэж буй үр дүн:

        • 2А, газардуулгад холбогдсоноос хойш татаж авах явцад LED унтарсан байна
        • 2B -ээр татаж авсны дараа 4 -р гаралтын зүү 4 -д залгагдсан LED анивчиж эхэлнэ
  2. Оролтын тохиолдол: ATtiny84 зүү 6 (MOSI) руу SPST шилжих оролтыг мультиплексор 3 -р түлхүүр ашиглан тусгаарласан болно

    • AVR Programmer толгойноос MOSI хар тугалга утас 3А руу зөөгдсөн
    • 3B оролтын оролт нь SPST гаралттай холбогдсон байна
    • 3Y гаралт нь ATtiny84 зүү 6 -тай холбогдсон байна

      • 3A, MOSI нь татаж авах явцад 6 -р зүүтэй холбогддог
      • 3B, SPST гаралт, татаж авсны дараа 6 -р зүүтэй холбогдсон байна

Програмыг татаж авах явцад LED нь анивчихгүй бөгөөд татаж авсны дараа програмын хяналтан дор хүлээгдэж буй шиг хоёр секунд тутамд анивчдаг бол 1 -р тохиолдол амжилттай болно. Тусгаарлахгүйгээр LED нь татаж авах явцад анивчих болно, учир нь энэ нь SCK дохио руу шууд холбогддог бөгөөд энэ нь цагийн өгөгдөл хүлээн авах/дамжуулах байдлыг өөрчилдөг.

Татаж авах явцад MOSI дохиог ATtiny84 рүү дамжуулах тохиолдолд татаж авах ажиллагаа амжилтгүй болох бөгөөд татаж авсны дараа LED нь SPST -ийг асаах/унтраахад хариу өгдөг бол 2 -р тохиолдол амжилттай болно. Тохиолдол 2 нь татаж авах магадлал багатай алдаанаас урьдчилан сэргийлдэг. Тусгаарлахгүйгээр SPST унтраалга нь 1) түгжээтэй унтраалга ашиглаж, 2) татаж авах явцад унтраалгыг асаалттай байдалд үлдээсэн тохиолдолд алдаа гарахад хүргэдэг. Мультиплексороор тусгаарлагдсан тохиолдолд унтраалга нь ямар ч тохиолдолд татаж авахад алдаа гаргаж чадахгүй. Бага зэрэг сунжирсан боловч хөгшчүүл бидэнд тайвширлаа.

Мультиплексорыг ашиглах нэг үр дагавар нь техник хангамжийн бүрэлдэхүүн хэсгийг микроконтроллерийн оролтын зүү рүү шууд холбох боломжгүй болсон явдал юм. Энэ нь зарим талаар тохиромжгүй боловч туршилтын явцад бүрэлдэхүүн хэсэг нь бусад хэрэглээний техник хэрэгслийн хамт талхны самбар дээр үлдэх боломжийг олгодог бөгөөд туршилт дууссаны дараа зохих байрлал руу нь буцааж шилжүүлэх боломжтой болно.

Алхам 3: ATtiny84 Кейс 1 - Програмын гаралтыг тусгаарлах

Зураг
Зураг

Энэ алхам нь татаж авах дохио бүхий програмын гаралтын зүүг хуваалцах тохиргоог тайлбарласан болно. Ашигласан жишээ бол 4 -р зүү (SCK) дээр хавсаргасан LED юм. Одоо байгаа LED -ийг жишээ болгон ашиглах нь мультиплексорыг 1 -р хэсгийн техник хангамж, програм хангамжийн орчинд нэмж оруулахыг онцлох боломжийг олгодог.

  • Техник хангамж

    • Дээрх fritzing диаграммд үзүүлсэн харьцангуй байршилд талхны самбар дээр мультиплексор нэмнэ. 2 -р тохиолдолд шаардлагатай SPST шилжүүлэгчийг байрлуулахын тулд мультиплексорыг төв рүү чиглүүлсэн байна.
    • ATtiny84 зүү 11 -ээс мультиплексор зүү 1 -д хар тугалга утас (шарыг санал болгоорой) нэмж RESET дохиог мультиплексор руу сунгана уу.
    • Үлдсэн тоног төхөөрөмжийн тохиргоог 2 -р алхамд өгсөн болно

      • 2А мультиплексор зүү 2А -ийг газардуу шууд холбоно уу
      • 2B зүүг ATtiny84 зүү 4 -тэй холбоно уу
      • 2Y гаралтыг LED анод руу холбоно уу

        • Хүлээгдэж буй үр дүн:

          • Татаж авах явцад 2Y нь газардуулгад (2А) холбогдсон тул LED унтарсан хэвээр байна
          • Татаж авсны дараа 2Y нь ATtiny84 pin 4 -тэй холбогддог - LED хяналтын програм
  • Програм хангамж

    • 1 -р хэсгийн кодыг дахин ашигласан; 1 -р хэсгээс энд хуулбарлахаас илүү зааварчилгаа авах боломжтой
    • 1 -р хэсгийн програмыг Arduino IDE дээр ачаалж, эмхэтгээрэй
    • Tiny AVR програмистыг компьютерийн USB порт руу залгаарай
    • Adafruit USB -ээс цуваа кабелийг хоёр дахь USB порт руу залгаарай

      • COM порт үүсч, IDE портын жагсаалтад автоматаар бэлэн болно
      • COM цонхыг ажиллуулна уу
    • Эмхэтгэсэн кодыг ATtiny84 дээр татаж аваарай

Хэрэглээний програмын үр дүн нь 1 -р хэсгийнхтэй ижил байна, учир нь цорын ганц өөрчлөлт нь LED -ийг "хамгаалагдсан" байрлал руу шилжүүлэх явдал юм: LED нь 2 секундын зайтай анивчдаг; цуваа гаралт ижил байна. Ганц ялгаа нь татаж авах явцад LED анивчихаа больсон, учир нь энэ хугацаанд 2А мультиплексор зүү ашиглан газардуулгатай холбогддог.

Зураг
Зураг

Алхам 4: ATtiny84 Case 2 - Програмын оролтыг тусгаарлах

Зураг
Зураг

Энэ алхам нь өмнөх гаралтын тусгаарлах хайрцгийн тохиргоон дээр суурилдаг. Тоног төхөөрөмжийн өөрчлөлт нь SPST шилжүүлэгчийг мультиплексор ашиглан ATtiny84 pin 6 (MOSI) руу холбохоос бүрдэнэ. Тоног төхөөрөмжийн өөрчлөлт хамгийн бага боловч SPST шилжүүлэгч нь зүү солих тасалдлыг ашиглан LED -ийг удирдах боломжийг олгодог хэд хэдэн програм хангамжийн өөрчлөлтүүд байдаг. Шинэчилсэн кодыг энэ хэсгийн доод хэсэгт оруулсан болно. Кодыг Arduino IDE руу хуулах ёстой; Multiplexer_Input нэрээр хадгалахыг санал болгож байна. (Би энэ хэсгийн урт болсонд хүлцэл өчье, гэхдээ энэ бол заавар өгөх зорилготой зүрх бөгөөд зохиомол завсарлага хийхээс илүү цул хэлбэрээр уншсан нь дээр гэж бодож байна.)

Шинэчлэх Байршил Зорилго
"хакердсан" SoftwareSerial ангийг оруулна уу хэсгийг оруулах LED нь зүү солих тасалдалаар дамжуулан SPST унтраалгаар хянагддаг. SoftwareSerial ангиллыг өөрчлөх ёстой, эс тэгвээс бүх зүү өөрчлөх тасалдлын векторуудыг хуваарилдаг. Энэ нь SPST шилжүүлэгчид оногдсон (порт 0) векторын "олон тодорхойлолт" холбоосын алдааг үүсгэдэг. SoftwareSerial -ийн хакердсан хувилбарыг зөвхөн энэ програмд нөлөөлөхийн тулд програмтай ижил лавлах санд байрлуулах ёстой.
SPST оролтын зүү тодорхойлолт оруулах/тодорхойлолтын хэсэг төхөөрөмжийн зүү рүү SPST оролтын хуваарилалт. Зүү нь төхөөрөмжид зориулагдсан тул #ifdef ATtiny8x хэсэгт нэмж оруулсан болно.
SPST оролтын зүү горим тохируулах функц SPST зүү нь INPUT хэлбэрээр тохируулагдсан болно
SPST зүү тасалдлыг тохируулах тохируулах функц Тасалдлын векторыг SPST оролтын зүү дээр хуваарилдаг тул шилжүүлэгчийн төлөвийн өөрчлөлт нь тасалдал үүсгэдэг. Тохиргооны бүртгэл ба тасалдлын төрөл нь төхөөрөмжид зориулагдсан болно. Кодыг аль болох ойлгомжтой болгохын тулд ялгааг #if хэсэгт тодорхойлно
Цуваа мессежийг тохируулж дууслаа тохируулах функц Тохиргооны цуваа гаралтын мэдээг Multiplexer Input програмыг тусгахаар өөрчилсөн
IST функцийг SPST шилжүүлэгч дээр нэмнэ үү кодын хэсэг SPST зүү өөрчлөх тасалдлын ISR нэмэгдсэн байна. Код нь нийтлэг боловч ашигладаг вектор нь төхөөрөмжид зориулагдсан бөгөөд програмын дээд хэсэгт байгаа төхөөрөмжөөс хамааралтай хэсгүүдэд тодорхойлогддог. ISR идэвхжсэн эсэхийг шалгахын тулд LED төлөвийг өөрчилдөг. Бодит аппликешнд үгүй-үгүй гэсэн хэдий ч шинэ LED төлөвийг тусгасан цуваа гаралтын мессежийг гаргадаг.
Циклийн боловсруулалтыг өөрчлөх давталтын функц ISR одоо LED -ийг асаах, унтраахыг хянадаг бөгөөд ингэснээр функцийг давталтын горимоос хасдаг. Унтах горим руу залгах дуудлага ATtiny84 -ийг "нэмэлт" хэлбэрээр нэмж оруулсан болно. Энэ програмын хувьд ATtiny85 унтах нь ажиллахгүй байна; SoftwareSerial -тэй ажилладаг тул Software Serial ангийн хөндлөнгийн оролцоотой холбоотой байж магадгүй юм.
Унтах дэглэм нэмэх кодын хэсэг Унтах функц нь мультиплексорын хэрэглээг харуулах шаардлагагүй юм. Ер нь POWER_DOWN горимд оролтыг хүлээхийг хүсэж байгаа тул оролт гарах хүртэл юу ч хийхгүйгээр програмын хүрдээр үргэлжлүүлэн ажиллах болно.

SoftwareSerial ангийн кодыг өөрчлөх

SoftwareSerial ангиллыг өөрчлөх шаардлагатай бөгөөд ингэснээр бүх зүү таслах портууд тасрахгүй. SoftwareSerial ангиллын код нь

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

Кодын өөрчлөлт эхлэх байршлыг олохын тулд SoftwareSerial.cpp дээрх PCINT0_vect дээрээс хайна уу. Дараах кодыг одоо байгаа #if (PCINT0_vect) мэдэгдлийн өмнөхөн нэмнэ үү.

#тодорхойлсон бол (_ AVR_ATtiny84_)

#тодорхойлох MYPORT PCINT1_vect #elif тодорхойлогдсон (_ AVR_ATtiny85_) #тодорхойлох MYPORT PCINT0_vect #endif ISR (MYPORT) {SoftwareSerial:: handle_interrupt (); }

Доор үзүүлсэн шиг порт тасалдлын векторуудыг хуваарилдаг одоо байгаа кодын блокыг тайлбарлана уу (зөвхөн эхлэх ба төгсгөлийн блокийн тайлбар тэмдгийг нэмж оруулна уу / * ба * /):

/*

#if тодорхойлогдсон (PCINT0_vect) ISR (PCINT0_vect) {SoftwareSerial:: handle_interrupt (); } #endif #if тодорхойлогдсон (PCINT1_vect) ISR (PCINT1_vect) {// SoftwareSerial:: handle_interrupt (); ISR (PCINT1_vect, ISR_ALIASOF (PCINT0_vect)); } #endif #if (PCINT2_vect) ISR (PCINT2_vect, ISR_ALIASOF (PCINT0_vect))); #endif #хэрэв тодорхойлсон бол (PCINT3_vect) ISR (PCINT3_vect, ISR_ALIASOF (PCINT0_vect))); #endif */

Тоног төхөөрөмжийг тохируулах

SPST шилжүүлэгчийг 2 -р алхамд заасан ATtiny84 зүү 6 (MOSI) -д хавсаргасан болно. Уг процедурыг хялбар болгох үүднээс энд хуулбарласан болно.

  • 3A унтраалгын оролтыг Tiny AVR Programmer толгойн MOSI толгой руу холбоно уу
  • 3B -ийг SPST шилжүүлэгч асаах гаралтын зүү рүү холбоно уу
  • 3Y -ийг ATtiny84 зүү 6 руу холбоно уу

    • Үр дүн:

      • 3A, MOSI, татаж авах явцад ATtiny84 зүү 6 -аар дамжин орох болно
      • 3B, SPST гаралт, татаж авсны дараа 6 -р зүү рүү орох болно

Хөтөлбөрийг ажиллуулна уу

Ажиллуулахын өмнө SPST унтраалгыг унтраах байдалд оруулна уу. Үгүй бол унтраалга унтрах үед LED асах болно. Arduino IDE ашиглан програм оруулах програмыг ачаалах, хөрвүүлэх, татаж авах 3 -р алхамыг дагаж мөрдөөрэй. Урьдын адил татаж авах явцад LED анивчих ёсгүй тул програм ажиллаж байгаа эсэхийг харуулах цорын ганц заалт нь тохиргооны төгсгөлд цуваа мессеж байх болно: SETUP Complete - Оруулах жишээ

Энэ үед програм SPST шилжүүлэгчийн оролтыг хүлээж байна. Шилжүүлэгчийг ON байрлалд байрлуулснаар LED асах болно; унтраах байрлал руу буцах нь LED -ийг унтраадаг. Гаралтын мессежүүд нь ISR -ийг дуудсан эсэхийг шалгадаг (ISR: Led HIGH, ISR: Led LOW). Цуваа мессежүүдийн дараалал нь унтраах горимд шилжих төлөвийг эхлээд хүлээнэ үү. шилжүүлэгчийн оролтыг авах үед ISR -ийг дуудаж, LED -ийг асааж, өөрчлөлтийг баримтжуулдаг; тасалдал нь процессорыг сэрээснээс хойш унтах дуудлагын дараа боловсруулалт эхэлдэг.

Зураг
Зураг

Энэхүү зааварчилгааны хөтөлбөр:

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

// PART 2: Аппликешн/татаж авах төхөөрөмжийн зүү хуваалцах //. 1 -р хэсгийн кодыг өөрчилнө. ATtiny85 ба ATtiny84 "Comon" код // ************************************** ****************************** #"SoftwareSerial.h" -ийг оруулна уу // Өөрчилсөн Arduino SoftwareSerial ангилал #оруулах // боловсруулах код нь нийтлэг байдаг, ашигласан тээглүүр нь төхөөрөмжид зориулагдсан #хэрэв тодорхойлогдсон бол (_ AVR_ATtiny84_) || тодорхойлогдсон (_ AVR_ATtiny84A_) #ledPin 4 -ийг тодорхойлно // Холбогдсон асаах/унтраах горимыг асаах/унтраах (MOSI) #ISR_VECT PCINT0_vect -ийг тодорхойлох // SPST шилжүүлэгч Зүү өөрчлөх тасалдлын вектор #elif тодорхойлогдсон (_ AVR_ATtiny85_) #ledPin 1 #тодорхойлох rxPin 4 #define txPin 3 #define SpstPin 2 // SPST шилжүүлэгчийн оролт (INT0)_define_define_define_define_define // SPST шилжүүлэгч Pin өөрчлөх тасалдлын вектор #өөр #алдааг зөвхөн ATiny84 ба ATtiny85 энэ төслийг дэмждэг #endif // SoftwareSerial mySerial (rxPin, txPin); // ------------------------------------------------ ------------------------ // Боловсруулах нөөцийг эхлүүлэх // ------------------- -------------------------------------------------- --- хүчингүй тохиргоо () {mySerial.begin (9600); // Цуваа боловсруулалтын саатал эхлэх (2000); // эхлүүлэх ажлыг дуусгахын тулд Serial Com портод хугацаа өг. // өөрөөр бол 1 -р гаралт pinMode (ledPin, OUTPUT) байхгүй эсвэл алдаатай байх магадлалтай; // LED pin -ийг OUTPUT pinMode (SpstPin, INPUT) -д тохируулах; // SPST шилжүүлэгчийн зүүг INPUT #гэж тодорхойлвол (_ AVR_ATtiny84_) тохируулна уу || (_AVR_ATtiny84A_) // 6 -р зүү (MOSI) GIMSK | = (1 <

Алхам 5: ATtiny85 Кейс 1 - Програмын гаралтыг тусгаарлах

Зураг
Зураг

ATtiny85 -д давхардсан тоног төхөөрөмжийн тохиргоо хийхээс илүү 4 -р алхамаас ATtiny84 -ийн бэлэн тохиргоог эхлүүлж, tiny84 чипийг tiny85 -ээр солих нь илүү хялбар байх болов уу. Дараа нь шаардлагатай бүх тоног төхөөрөмж аль хэдийн бэлэн болсон байна. Хэрэв энэ аргыг ашиглаж байгаа бол tiny85 -ийг олоорой, ингэснээр 3 ба 4 -р зүү нь tx цуваа кабельтэй таарч, утас хүлээн авна. Дараа нь SPI интерфэйсийн утаснуудыг ATtiny85 -ийн шаардлагатай байршилд нийцүүлэн нүүлгэн шилжүүлэх л асуудал юм.

Хэрэв эхнээс нь эхэлж байгаа бол 3 -р алхам дээрх ерөнхий алхамууд болон дээрх fritzing диаграмыг дагана уу. Код нь 3 -р алхам дахь ATtiny84 -т ашигласантай ижил бөгөөд хүлээгдэж буй үр дүн ижил байна - татаж авах явцад анивчихгүй; LED ажиллаж байх үед 2 секундын зайтай анивчдаг бөгөөд цуваа гаралтын зурвасууд нь LED төлөвийг дагана.

Зураг
Зураг

Алхам 6: ATtiny85 Case 2 - Програмын оролтыг тусгаарлах

Зураг
Зураг

Тоног төхөөрөмжийн тохиргоог хийхийн тулд 5 -р алхам дээрх тохиргооноос эхэлж, дээрх fritzing диаграммд заасны дагуу SPST шилжүүлэгчийг нэмнэ үү. Би үнэндээ tiny85 хувилбарт түр зуурын унтраалга ашигласан бөгөөд энэ нь баталгаажуулалтыг арай хялбар болгодог. Шилжүүлэгчийн гаралтыг ATtiny84 тохиргооноос 180 градус эргүүлж байгааг анхаарна уу. Энэхүү өөрчлөлт нь бүх 3 SPI дохио нь ATtiny85 -ийн нэг талд байгаа тул холболтын утсыг чиглүүлэхэд хялбар болгодог.

ATtiny84 Алхам 4 -тэй ижил програмыг ашиглана уу. Ерөнхий үр дүн ижил байх болно - SPST шилжүүлэгчийг асаах/унтраах үед цуваа гаралтын зурвасууд өөрчлөлтийг баримтжуулж өгдөг. ATtiny85 -ийн хувьд унтах функцийг идэвхжүүлээгүй тул GO TO SLEEP зурвасууд алга байна. Ижил програмыг ашиглаж байсан ч ATtiny85 нь зөвхөн нэг портын бүртгэлтэй (Порт 0) байдгийг харгалзан үзэхийн тулд хэрэгжилтэд ихээхэн ялгаа бий.

  1. SoftwareSerial одоо порт 0 зүү солих тасалдлыг цуваа холболтоор хуваарилдаг (Бид ATtiny84 порт 1 -ийг ашиглаж чадсан гэдгийг санаарай.)
  2. Ганцхан зүү солих тасалдлыг SoftwareSerial хуваарилдаг тул SPST шилжүүлэгчийн тасалдал нь 0 (INT0) гадаад тасалдалтай хийгдэх ёстой. Энэ нь зүүний өөрчлөлтийн тасалдал ба гадаад тасалдал нь логикийн хувьд бие даасан бөгөөд үүнийг нэг портын бүртгэлд ашиглах боломжтой гэдгийг харуулж байна.
  3. SoftwareSerial -ийн өөрчилсөн хувилбарыг ашигласнаар юу ч олж авахгүй - зөвхөн нэг порт байдаг бөгөөд SoftwareSerial анги үүнийг авах болно. Гэсэн хэдий ч өөрчлөгдсөн анги нь энэ алхамын зорилготой шууд холбоогүй өөрчлөлтөөс зайлсхийхийн тулд ашиглагдаж байсан.

Зөвлөмж болгож буй: