
Π ΠΈΡ. 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.

Π ΠΈΡ. 9.2. ΠΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ΄Π²ΠΈΠ³ Π±ΠΈΡΠΎΠ²

Π ΠΈΡ. 9.3. ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π΄Π²ΡΡ Π±Π°ΠΉΡΠΎΠ² Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° int
Π§ΡΠΎΠ±Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ Π² Arduino C, Π½ΡΠΆΠ½ΠΎ ΡΠ½Π°ΡΠ°Π»Π° Π·Π°ΠΏΠΈΡΠ°ΡΡ highByte Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΠΈΠΏΠ° int, ΡΠ΄Π²ΠΈΠ½ΡΡΡ Π²Π»Π΅Π²ΠΎ Π½Π° Π²ΠΎΡΠ΅ΠΌΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ, Π° ΠΏΠΎΡΠΎΠΌ ΠΏΡΠΈΠ±Π°Π²ΠΈΡΡ lowByte:
byte highByte = 0x6A;
byte lowByte = 0x0F;
int result = (highByte << 8) + lowByte;
ΠΠΏΠΏΠ°ΡΠ°ΡΠ½Π°Ρ ΡΠ°ΡΡΡ SPI
ΠΠ° ΡΠΈΡ. 9.4 ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π° ΡΠΈΠΏΠΈΡΠ½Π°Ρ ΡΡ Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Arduino Π΄Π²ΡΡ Π²Π΅Π΄ΠΎΠΌΡΡ ΡΡΡΡΠΎΠΉΡΡΠ².

Π ΠΈΡ. 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 Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΠΌΠΈ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ°ΠΌΠΈ.

Π ΠΈΡ. 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.