Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ Arduino. ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со скСтчами». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 30

Автор Монк Π‘Π°ΠΉΠΌΠΎΠ½

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ Arduino. ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со скСтчами - _62.jpg

Рис. 9.1. ΠœΠ°ΡΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΡ‚ΠΎΠ²

Π’ описаниях Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… чисСл Π²Ρ‹ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ со словосочСтаниями «самый младший» ΠΈ «самый ΡΡ‚Π°Ρ€ΡˆΠΈΠΉΒ». Π’ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… числах, записанных с соблюдСниСм ΠΏΡ€Π°Π²ΠΈΠ», принятых Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅, самым ΡΡ‚Π°Ρ€ΡˆΠΈΠΌ Π±ΠΈΡ‚ΠΎΠΌ являСтся ΠΊΡ€Π°ΠΉΠ½ΠΈΠΉ Π»Π΅Π²Ρ‹ΠΉ Π±ΠΈΡ‚, Π° младшим Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΠΌ β€” ΠΊΡ€Π°ΠΉΠ½ΠΈΠΉ ΠΏΡ€Π°Π²Ρ‹ΠΉ. ΠšΡ€Π°ΠΉΠ½ΠΈΠΉ ΠΏΡ€Π°Π²Ρ‹ΠΉ Π±ΠΈΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 1 ΠΈΠ»ΠΈ 0. Π’Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ встрСтятся Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ самый ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ (Most Significant Bit, MSB) ΠΈ самый младший Π±ΠΈΡ‚ (Least Significant Bit, LSB). Π‘Π°ΠΌΡ‹ΠΉ младший Π±ΠΈΡ‚ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ Π±ΠΈΡ‚ΠΎΠΌ (Π±ΠΈΡ‚ 0), ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π±ΠΈΡ‚ (Π±ΠΈΡ‚ 1) β€” ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠΎ ΡΡ‚Π°Ρ€ΡˆΠΈΠ½ΡΡ‚Π²Ρƒ ΠΈ Ρ‚.Π΄.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½ΠΎΠΌ Π½Π° рис. 9.1, Π±Π°ΠΉΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π½ΠΎ нас ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρ€ΠΈ ΠΌΠ»Π°Π΄ΡˆΠΈΡ… Π±ΠΈΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΊΠ°ΠΊ число. Для этого ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠΎΡ€Π°Π·Ρ€ΡΠ΄Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ И (AND) Π΄Π°Π½Π½Ρ‹Ρ… с маской, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ‚Ρ€ΠΈ ΠΌΠ»Π°Π΄ΡˆΠΈΡ… Π±ΠΈΡ‚Π° ΠΈΠΌΠ΅ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1. ΠŸΠΎΡ€Π°Π·Ρ€ΡΠ΄Π½Π°Ρ опСрация И (AND) для Π΄Π²ΡƒΡ… Π±Π°ΠΉΡ‚ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ И (AND) для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π±ΠΈΡ‚ΠΎΠ² ΠΈ конструируСт ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ И (AND) для Π΄Π²ΡƒΡ… Π±ΠΈΡ‚ΠΎΠ² Π²Π΅Ρ€Π½Π΅Ρ‚ 1, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли ΠΎΠ±Π° Π±ΠΈΡ‚Π° ΠΈΠΌΠ΅ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1.

Π”Π°Π»Π΅Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° рСализация этого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° Arduino C с использованиСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° &. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ поразрядная опСрация И (AND) обозначаСтся СдинствСнным символом &, Π° логичСская опСрация И (AND) β€” двумя: &&.

byte data = 0b01100101;

byte result = (data & 0b00000111);

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ result Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ дСсятичноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 5.

Π‘Π΄Π²ΠΈΠ³ Π±ΠΈΡ‚ΠΎΠ²

Часто Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π±ΠΈΡ‚Ρ‹ Π² ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π½Π΅ самыС младшиС разряды Π² Π±Π°ΠΉΡ‚Π΅. НапримСр, Ссли ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹Ρ… Π½Π° рис. 9.1, потрСбуСтся ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ число, опрСдСляСмоС Π±ΠΈΡ‚Π°ΠΌΠΈ с 5-Π³ΠΎ ΠΏΠΎ 3-ΠΉ (рис. 9.2), Ρ‚ΠΎ Π²Π°ΠΌ придСтся сначала ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ маску, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠ΅ Π±ΠΈΡ‚Ρ‹, ΠΊΠ°ΠΊ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π° Π·Π°Ρ‚Π΅ΠΌ ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ Π±ΠΈΡ‚Ρ‹ Π½Π° Ρ‚Ρ€ΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π²ΠΏΡ€Π°Π²ΠΎ.

Π‘Π΄Π²ΠΈΠ³ Π²ΠΏΡ€Π°Π²ΠΎ Π² языкС C выполняСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ >>, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт число, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π΅ количСство разрядов, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ производится сдвиг. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π°ΡΡ‚ΡŒ Π±ΠΈΡ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ сдвинута Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρƒ Π±Π°ΠΉΡ‚Π°. Π”Π°Π»Π΅Π΅ приводится рСализация ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° Π½Π° языкС C:

byte data = 0b01101001;

byte result = (data & 0b00111000) >> 3;

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π΄Π²Π° 8-Π±ΠΈΡ‚Π½Ρ‹Ρ… Π±Π°ΠΉΡ‚Π° ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· Π½ΠΈΡ… ΠΎΠ΄Π½ΠΎ 16-Π±ΠΈΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° int. Для этого ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ Π±ΠΈΡ‚Ρ‹ ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ Π±Π°ΠΉΡ‚Π° Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½Π΅Ρ† значСния int, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΡ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π±Π°ΠΉΡ‚. Π­Ρ‚ΠΎΡ‚ процСсс ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ рис. 9.3.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ Arduino. ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со скСтчами - _63.jpg

Рис. 9.2. ΠœΠ°ΡΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ сдвиг Π±ΠΈΡ‚ΠΎΠ²

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ Arduino. ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со скСтчами - _64.jpg

Рис. 9.3. ОбъСдинСниС Π΄Π²ΡƒΡ… Π±Π°ΠΉΡ‚ΠΎΠ² Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° int

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ это Π² Arduino C, Π½ΡƒΠΆΠ½ΠΎ сначала Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ highByte Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Ρ‚ΠΈΠΏΠ° int, ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ Π²Π»Π΅Π²ΠΎ Π½Π° восСмь ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΡ‚ΡŒ lowByte:

byte highByte = 0x6A;

byte lowByte = 0x0F;

int result = (highByte << 8) + lowByte;

Аппаратная Ρ‡Π°ΡΡ‚ΡŒ SPI

На рис. 9.4 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° типичная схСма ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Arduino Π΄Π²ΡƒΡ… Π²Π΅Π΄ΠΎΠΌΡ‹Ρ… устройств.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ Arduino. ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со скСтчами - _65.jpg

Рис. 9.4. ΠŸΠ»Π°Ρ‚Π° Arduino ΠΈ Π΄Π²Π° Π²Π΅Π΄ΠΎΠΌΡ‹Ρ… устройства SPI

Π›ΠΈΠ½ΠΈΠΈ Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠ³ΠΎ сигнала систСмы (System Clock, SCLK), Π²Ρ‹Ρ…ΠΎΠ΄ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ/Π²Ρ…ΠΎΠ΄ Π²Π΅Π΄ΠΎΠΌΠΎΠ³ΠΎ (Master Out Slave In, MOSI) ΠΈ Π²Ρ…ΠΎΠ΄ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ/Π²Ρ‹Ρ…ΠΎΠ΄ Π²Π΅Π΄ΠΎΠΌΠΎΠ³ΠΎ (Master In Slave Out, MISO) ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΊ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ Π½Π° ΠΏΠ»Π°Ρ‚Π΅ Arduino с Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ Uno ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ D13, D11 ΠΈ D12. Π’ Ρ‚Π°Π±Π». 9.2 пСрСчислСны Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнныС ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠ»Π°Ρ‚ ΠΈ соотвСтствиС ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² линиям интСрфСйса SPI.

Π’Π°Π±Π»ΠΈΡ†Π° 9.2. ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ интСрфСйса SPI Π½Π° ΠΏΠ»Π°Ρ‚Π΅ Arduino

МодСль

SCLK

MOSI

MISO

Uno

13 (ICSP3)

11 (ICSP4)

12 (ICSP1)

Leonardo

ICSP3

ICSP4

ICSP1

Mega2560

52 (ICSP3)

51 (ICSP4)

50 (ICSP1)

Due

ICSP3

ICSP4

ICSP1

Линиями Π²Ρ‹Π±ΠΎΡ€Π° Π²Π΅Π΄ΠΎΠΌΠΎΠ³ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ Π½Π° ΠΏΠ»Π°Ρ‚Π΅ Arduino. Они ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Π²Ρ‹Π±ΠΎΡ€Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²Π΅Π΄ΠΎΠΌΠΎΠ³ΠΎ устройства нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΅Π³ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Ни ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π»ΠΈΠ½ΠΈΠΉ Π½Π΅ трСбуСтся ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ сопротивлСниС.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… модСлях Arduino, Π² Ρ‚ΠΎΠΌ числС Leonardo, ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ интСрфСйса SPI ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΊΠΎΠ»ΠΎΠ΄ΠΊΠ΅ ICSP, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ часто ΠΈΠΌΠ΅ΡŽΡ‚ Π³Π½Π΅Π·Π΄Π° SPI для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΠΊΠΎΠ»ΠΎΠ΄ΠΊΠ΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² ICSP. На рис. 9.5 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° ΠΊΠΎΠ»ΠΎΠ΄ΠΊΠ° ICSP с подписанными ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌΠΈ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ Arduino. ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со скСтчами - _66.jpg

Рис. 9.5. ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ ICSP Π½Π° ΠΏΠ»Π°Ρ‚Π΅ Arduino Uno

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° ΠΏΠ»Π°Ρ‚Π΅ Arduino Uno имССтся вторая ΠΊΠΎΠ»ΠΎΠ΄ΠΊΠ° ICSP, рядом с ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ сброса. Она ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для программирования интСрфСйса USB.

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» SPI

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» SPI Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд каТСтся слоТным ΠΈ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΎΠ±Π΅ΠΈΠΌΠΈ сторонами, Π²Π΅Π΄ΡƒΡ‰ΠΈΠΌ ΠΈ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΌ Π²Π΅Π΄ΠΎΠΌΡ‹ΠΌ, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ. ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ Π²Π΅Π΄ΡƒΡ‰ΠΈΠΌ устройством (Arduino) Π±ΠΈΡ‚Π° ΠΏΠΎ Π»ΠΈΠ½ΠΈΠΈ MOSI Π²Π΅Π΄ΠΎΠΌΠΎΠ΅ устройство посылаСт Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±ΠΈΡ‚ ΠΏΠΎ Π»ΠΈΠ½ΠΈΠΈ MISO ΠΏΠ»Π°Ρ‚Π΅ Arduino.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Arduino посылаСт Π±Π°ΠΉΡ‚ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π·Π°Ρ‚Π΅ΠΌ восСмь Π½ΡƒΠ»Π΅ΠΉ, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ принимая Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΡ‚ Π²Π΅Π΄ΠΎΠΌΠΎΠ³ΠΎ устройства. Π’Π°ΠΊ ΠΊΠ°ΠΊ частота ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ устанавливаСтся Π²Π΅Π΄ΡƒΡ‰ΠΈΠΌ устройством, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ слишком высока для Π²Π΅Π΄ΠΎΠΌΠΎΠ³ΠΎ устройства.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° SPI

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° SPI Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав Arduino IDE, поэтому Π²Π°ΠΌ Π½Π΅ придСтся Π½ΠΈΡ‡Π΅Π³ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Сю. Но ΠΎΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сцСнарии, ΠΊΠΎΠ³Π΄Π° ΠΏΠ»Π°Ρ‚Π° Arduino дСйствуСт Π² Ρ€ΠΎΠ»ΠΈ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ устройства. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π»Ρ‹ΠΌΠΈ Π±Π°ΠΉΡ‚Π°ΠΌΠΈ. Для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… устройств этого Π²ΠΏΠΎΠ»Π½Π΅ достаточно, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ устройства ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ ΠΎΠ±ΠΌΠ΅Π½ 12-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ сообщСниями, Ρ‡Ρ‚ΠΎ нСсколько ослоТняСт ΠΎΠ±ΠΌΠ΅Π½ ΠΈΠ·-Π·Π° нСобходимости манипуляций с Π±ΠΈΡ‚Π°ΠΌΠΈ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ SPI:

#include <SPI.h>

Π—Π°Ρ‚Π΅ΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ SPI.begin Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ запуска ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ:

void setup()

{

Β Β SPI.begin();

Β Β pinMode(chipSelectPin, OUTPUT);

Β Β digitalWrite(chipSelectPin, HIGH);

}

Для ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΏΠ»Π°Ρ‚Ρ‹ Arduino, ΠΊΡ€ΠΎΠΌΠ΅ Due, Π½ΡƒΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ Π²Ρ‹Ρ…ΠΎΠ΄Ρ‹ для всСх Π»ΠΈΠ½ΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€Π° Π²Π΅Π΄ΠΎΠΌΡ‹Ρ… устройств. Роль Ρ‚Π°ΠΊΠΈΡ… Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ Π½Π° ΠΏΠ»Π°Ρ‚Π΅ Arduino. ПослС настройки ΠΈΡ… Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠ² трСбуСтся сразу ΠΆΠ΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π° Π½ΠΈΡ… ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ напряТСния HIGH ΠΈΠ·-Π·Π° ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ Π²Ρ‹Π±ΠΎΡ€Π° Π²Π΅Π΄ΠΎΠΌΠΎΠ³ΠΎ, согласно ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ напряТСниС LOW ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½ΠΎΠ΅ устройство Π²Ρ‹Π±Ρ€Π°Π½ΠΎ.

Для ΠΌΠΎΠ΄Π΅Π»ΠΈ Due имССтся Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ вСрсия Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ SPI, поэтому достаточно ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ для Π²Ρ‹Π±ΠΎΡ€Π° Π²Π΅Π΄ΠΎΠΌΠΎΠ³ΠΎ β€” ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° автоматичСски Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ LOW ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ HIGH ΠΏΠΎ Π΅Π΅ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ. Для этого Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Β­Π΄Π΅ SPI.begin Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°. НСдостаток Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΈ совмСстимости с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ модСлями Arduino. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…, ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π΄Π°Π»Π΅Π΅, всС Π²Π΅Π΄ΠΎΠΌΡ‹Π΅ устройства Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ эти ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° всСх ΠΏΠ»Π°Ρ‚Π°Ρ… Arduino.

Для настройки соСдинСния Ρ‡Π΅Ρ€Π΅Π· интСрфСйс SPI имССтся мноТСство Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Однако ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΏΠΎΠ»Π½Π΅ подходят для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° случаСв, поэтому ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли докумСнтация с описаниСм Π²Π΅Π΄ΠΎΠΌΠΎΠ³ΠΎ устройства Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΈΡ… измСнСния. Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ пСрСчислСны Π² Ρ‚Π°Π±Π». 9.3.