8-900-374-94-44
[email protected]
Slide Image
МСню

ΠœΠΈΠΊΡ€ΠΎΡΡ…Π΅ΠΌΠ° tm1637 описаниС – ΠžΠ±Π·ΠΎΡ€ дисплСя Π½Π° Π±Π°Π·Π΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° TM1637

ДисплСй Π½Π° TM1637, часы с синхронизациСй ΠΏΠΎ NTP ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ «Π½Π°Ρ€ΠΎΠ΄Π½Ρ‹Ρ…» WiFi Π² срСдС Ардуино

Π‘Π½Π°Ρ‡Π°Π»Π° Ρ…ΠΎΡ‚Π΅Π» ΠΏΠΎΡΠ²ΡΡ‚ΠΈΡ‚ΡŒ свой Β«ΡŽΠ±ΠΈΠ»Π΅ΠΉΠ½Ρ‹ΠΉΒ» 50-ΠΉ ΠΎΠ±Π·ΠΎΡ€ ESP8266 ES07 ΠΊΡƒΠΏΠ»Π΅Π½Π½Ρ‹Ρ… Π·Π° ΠΎΡ‡Π΅Π½ΡŒ Β«Π²ΠΊΡƒΡΠ½ΡƒΡŽΒ» Ρ†Π΅Π½Ρƒ вмСстС с ΠΏΠ»Π°Ρ‚Π°ΠΌΠΈ-Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°ΠΌΠΈ. Но ΠΎΠ±Π·ΠΎΡ€ этих ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ я ΡƒΠΆΠ΅ Π΄Π΅Π»Π°Π». Π—Π΄Π΅ΡΡŒ ΠΆΠ΅ Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ свои ΠΏΠΎΠ΄Π΅Π»ΠΊΠΈ, Π² частности часы Π½Π° сСмисСгмСнтном ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π΅, программируя эти Β«Π½Π°Ρ€ΠΎΠ΄Π½Ρ‹Π΅Β» WiFi Π² популярноС срСдС Arduino IDE

НачнСм с ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ:
Для своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² я искал сСмисСгмСнтныС ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, яркиС ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹Π΅. Π‘Π΄Π΅Π»Π°Π» ряд ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°Ρ… с Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌΠΈ MAX7219

НСдавно покупая Π½Π° АлиэкспрСссС Π²ΡΡΠΊΡƒΡŽ ΠΌΠ΅Π»ΠΎΡ‡Π΅Π²ΠΊΡƒ наткнулся Π½Π° эти ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, Π½Π° микросхСмС TM1637. МнС ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»ΠΎΡΡŒ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠ΅ исполнСниС, нСвысокая Ρ†Π΅Π½Π° ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ всСго ΠΏΠΎ Π΄Π²ΡƒΠΌ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π°ΠΌ. Π—Π°ΠΊΠ°Π·Π°Π» ΠΏΠ°Ρ€ΠΎΡ‡ΠΊΡƒ вмСстС с ΠΊΡƒΡ‡Π΅ΠΉ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π΄Π΅Ρ‚Π°Π»Π΅ΠΊ.

ΠœΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΡ€ΠΈΠ΅Ρ…Π°Π»ΠΈ запаянныС Π² ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΠΊΠΈ

Π₯арактСристики:

  • ΠŸΠΈΡ‚Π°Π½ΠΈΠ΅ 3.3 β€” 5.5Π’
  • ΠŸΠΎΡ‚Ρ€Π΅Π±Π»ΡΠ΅ΠΌΡ‹ΠΉ Ρ‚ΠΎΠΊ 0.2 β€” 80мА (Π² зависимости ΠΎΡ‚ горящих сСгмСнтов)
  • Π“Ρ€Π°Π΄Π°Ρ†ΠΈΠΉ яркости ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² β€” 8
  • Π Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΏΠ»Π°Ρ‚Ρ‹: 42×24ΠΌΠΌ


Π§Π΅Ρ‚Ρ‹Ρ€Π΅ ΡˆΡ‚Ρ‹Ρ€ΡŒΠΊΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π° для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:
VCC β€” ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅, GND β€” зСмля ΠΈ Π΄Π²Π° управлСния CLK ΠΈ DIO ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с интСрфСйсом I2C. Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ спасибо, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ ΠΈΠ΄ΡƒΡ‚ Π²Π±ΠΎΠΊ, Π° Π½Π΅ Π²Π²Π΅Ρ€Ρ…, ΠΊΠ°ΠΊ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Π°Ρ….

ВмСстС Π² посылкС ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΈ ESP8266 ES07, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π» Π² Π½Π°Ρ‡Π°Π»Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ написал ΠΏΡ€ΠΎ Π½ΠΈΡ… Π² своСм Π±Π»ΠΎΠ³Π΅.

ПослСднСС врСмя ΠΌΠ½ΠΎΠ³ΠΎ ковырялся с ESP-шками ΠΈ Ρ€Π΅ΡˆΠΈΠ» ΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠΌΠ΅Π½Π½ΠΎ с Π½ΠΈΠΌΠΈ. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ стало ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· срСды Arduino IDE.
Настройка Arduino IDE для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ESP8266 Ρ…ΠΎΡ€ΠΎΡˆΠΎ описана здСсь

Π₯ΠΎΡ‡Ρƒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΡƒΠΏΠ»Π΅Π½Π½Ρ‹Π΅ мною ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ESP-07 распаянныС Π½Π° ΠΏΠ»Π°Ρ‚Ρ‹-Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Ρ‹ ΡƒΠΆΠ΅ практичСски Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ использованию. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ TX/RX ΠΈ GND ΠΊ TTL-USB ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Ρƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊΠΎΠΌΡƒ. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ 3.3Π’ ΠΊ VCC. Для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ GPIO0 присоСдиняСм ΠΊ Π·Π΅ΠΌΠ»Π΅. БобствСнно ΠΈ всС. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ GPIO0 ΠΈ RESET ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Ρƒ Ρƒ мСня Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, Π½ΠΎ это оказалось Π½Π΅ сильно Π½ΡƒΠΆΠ½ΠΎ. ΠŸΡ€ΠΈ подсоСдинСнном GPIO0 ΠΊ Π·Π΅ΠΌΠ»Π΅ ESP находится Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ Π²ΠΎ Ρ„Π»ΡΡˆ-ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π½ΠΎ послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ происходит запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Π΅Π· отсоСдинСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ GPIO. Π­Ρ‚ΠΎ позволяСт Π²ΠΏΠΎΠ»Π½Π΅ ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ свою ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. НуТно ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π΅Ρ€Π³ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ питания ΠΈΠ»ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄Π°Π² Π½Π° Π²Ρ‹Π²ΠΎΠ΄ RESET Π½Π° зСмлю. Для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΏΠ°ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ.

На Ρ„ΠΎΡ‚ΠΊΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ES12 ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΏΠ°Ρ€Ρ‚ΠΈΠΈ. ΠšΠΎΠ½Π΄Π΅Π½ΡΠ°Ρ‚ΠΎΡ€ установлСн для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹. ПослСдниС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π±Π΅Π· Π½ΠΈΡ….

Π˜Ρ‚Π°ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½, срСда настроСна. Для ES07 всС настройки ESP8266 ставятся Β«ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΒ»:

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с дисплССм Π½Π° TM1637 я взял Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ для Ардуино DigitalTube. «По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΒ», Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³: «Мои Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹\Arduino\libraries\Β». Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π°Π²Π΄Π°Ρ‚ΡŒ использованиС WiFi-модуля, эти часы Π±ΡƒΠ΄Ρƒ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ врСмя с NTP сСрвСром Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ESP, дисплСй ΠΊ CLK -> GPIO4, DIO ->GPIO5, стабилизатор 3.3Π’ ΠΈ USB-TTL ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ ΠΌΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π°ΠΌΠΈ

Π“Ρ€ΡƒΠ·ΠΈΠΌ скСтч, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ здСсь.
НастраиваСм ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ своСй Ρ‚ΠΎΡ‡ΠΊΠΈ доступа: AP_SSID ΠΈ AP_PASS, свою Ρ‚Π°ΠΉΠΌΠ·ΠΎΠ½Ρƒ TIMEZONE. Π£ мСня установлСна для ΠŸΠ΅Ρ€ΠΌΠΈ/Π•ΠΊΠ°Ρ‚Π΅Ρ€ΠΈΠ½Π±ΡƒΡ€Π³Π°. Для ΠœΠΎΡΠΊΠ²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ 3.
Π€ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ tm1637.set(2) устанавливаСм Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΡΡ€ΠΊΠΎΡΡ‚ΡŒ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΎΡ‚ 0 Π΄ΠΎ 7.
ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ:

Π“ΠΎΡ‚ΠΎΠ²ΠΎ. Часы ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ часы ΠΈ ΠΌΠΈΠ½ΡƒΡ‚Ρ‹, мигая Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ΠΌ. ВрСмя Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΈΠ· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°, синхронизируСтся с NTP сСрвСром. ΠŸΡ€ΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ отсутствии соСдинСния происходит ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ESP-шки.

Π’ корпус всС это Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ стал, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ для Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ± этом ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΌΠΎΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ссылки

А это ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ:


mysku.ru

TM1637 ΠΈ AVR ASM — — Π±Π»ΠΎΠ³ Π› Π΅ ΠΎ Π½ Ρ‹ Ρ‡ Π°

НамСдни приблудился китайский дисплСйный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ TM1637 (Π΄Π°Π»Π΅Π΅ Π² тСкстС — ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, устройство) .

Β 

Β 

Π’Π΅Ρ‰ΡŒ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, приятная Π²ΠΎ всСх ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΡ…. По Ρ†Π΅Π½Π΅, сопоставим с Ρ†Π΅Π½ΠΎΠΉ «Π³ΠΎΠ»ΠΎΠ³ΠΎ» чСтырёхразрядного ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°. УправляСтся всСго ΠΏΠΎ Π΄Π²ΡƒΠΌ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π°ΠΌ, позволяя ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² качСствС «ΡΠ΄Ρ€Π°» Π΄Π΅ΡˆΠ΅Π²Ρ‹Π΅ ΠΌΠ°Π»ΠΎΠ²Ρ‹Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ (Π΄Π°Π»Π΅Π΅ Π² тСкстС — МК) Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ ΡˆΠ΅ΡΡ‚ΠΈΠ½ΠΎΠ³ΠΈΡ… Π±ΡƒΠΊΠ°ΡˆΠ΅ΠΊ Π²Ρ€ΠΎΠ΄Π΅ Tiny10. ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ, ΠΎΡ‚ процСссора Π½Π΅ потрСбуСтся ΠΎΡ‚Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒΡΡ Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΡŽ,.достаточно ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ посылку ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Π°ΠΉΡ‚ΠΎΠ², ΠΈ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ своими Π΄Π΅Π»Π°ΠΌΠΈ. «Π’ыстрСлил ΠΈ Π·Π°Π±Ρ‹Π»».

Но ΠΈ это Π΅Ρ‰Ρ‘ Π½Π΅ всё. К устройству ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΠΈΠΊΠ½ΠΎΠΏΠΎΡ‡Π½ΡƒΡŽ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» (кстати, Π±ΠΎΡ€ΡŒΠ±Ρƒ с Π΄Ρ€Π΅Π±Π΅Π·Π³ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Ρ‚ΠΎΠΆΠ΅ Π±Π΅Ρ€Ρ‘Ρ‚ Π½Π° сСбя. )) )

И всС эти радости — ΠΏΠΎ Π΄Π²ΡƒΠΌ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΎΡ‡ΠΊΠ°ΠΌ… Вкусно.

Β 

Но Π½Π΅ Π±Π΅Π· Π»ΠΎΠΆΠΊΠΈ китайского дёгтя , Сссно.

Ибо Π΄Π°Ρ‚Π°ΡˆΠΈΡ‚, ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ с китайского Π½Π° английский, это… Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ. (Π—Π΄Π΅ΡΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π°Π±Π·Π°Ρ†, составлСнный ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ· ΠΌΠ°Ρ‚Π΅Ρ€Π½Ρ‹Ρ… слов).

Говоря ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ, Π½Π΅ ΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ Π² Π½Ρ‘ΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π½Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΠ² ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ этот ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ источникам.

И Π²ΠΎΡ‚ с этим-Ρ‚ΠΎ — самая засада. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ посторонниС источники ΠΊΡ€Π°ΠΉΠ½Π΅ скудны. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΠ΄ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ срСды, Π² Ρ‚ΠΎΠΌ числС — Ардуино (Π½Π΅ ΠΊ Π½ΠΎΡ‡ΠΈ Π±ΡƒΠ΄ΡŒ помянута), Π½ΠΎ понимания Ρ€Π°Π±ΠΎΡ‚Ρ‹ ВМ1637 ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ассСмблСрного ΠΊΠΎΠ΄Π° для AVR Π½Π°ΠΉΡ‚ΠΈ ΠΈ вовсС Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ сподвигло мСня Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ†Π΅ сСго ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒΠ»ΡŒΠΊΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ способностСй, Π²ΠΎΡΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ этот ΠΏΡ€ΠΎΠ±Π΅Π». На ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰ΡƒΡŽ ΠΏΠΎΠ»Π½ΠΎΡ‚Ρƒ, Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΡƒΡŽ истину, ΠΈ красоту ΠΊΠΎΠ΄Π° Π½Π΅ ΠΏΡ€Π΅Ρ‚Π΅Π½Π΄ΡƒΡŽ. ))

Β 

Π˜Ρ‚Π°ΠΊ — «Πž ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ ВМ1637 чСловСчСским языком».

Β 

Начнём с «Ρ„ΠΈΠ·ΠΈΠΊΠΈ».

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ для этого ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, являСтся творчСской ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΡˆΠΈΡ€ΠΎΠΊΠΎ извСстного «ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ» I2C. ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ состоят Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… названиях Π»ΠΈΠ½ΠΈΠΉ, ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС слСдования Π±ΠΈΡ‚ΠΎΠ², ΠΈ Π² отсутствии адрСса устройства.

Π‘ Ρ‡Π΅ΠΌ связаны эти странности, с китайской Π»ΠΈ ΡΠ°ΠΌΠΎΠ±Ρ‹Ρ‚Π½ΠΎΡΡ‚ΡŒΡŽ, ΠΈΠ»ΠΈ с ΠΏΠ°Ρ‚Π΅Π½Ρ‚Π½Ρ‹ΠΌΠΈ ограничСниями, Π½Π΅Π²Π΅Π΄ΠΎΠΌΠΎ. (ΠŸΠ°ΠΌΡΡ‚ΡƒΡ ΠΎ смСшной Ρ†Π΅Π½Π΅ устройства, Π»ΠΎΠ³ΠΈΡ‡Π½Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠ΅))).

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ Π΅ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ для ΠΎΠ±ΠΌΠ΅Π½Π° с устройством стандартныС Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ интСрфСйсы USI, встроСнныС Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ соврСмСнныС МК. Но здСсь ΠΌΡ‹ ΠΈΡ… Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ. ΠžΡ‚Ρ‡Π°ΡΡ‚ΠΈ ΠΏΠΎ Ρ‚ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, Ρ‡Ρ‚ΠΎ Π½Π΅ Ρƒ всСх «Π±ΡƒΠΊΠ°ΡˆΠ΅ΠΊ» Π΅ΡΡ‚ΡŒ встроСнный USI, поэтому ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ интСрфСйс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΏΡƒΡ‚Ρ‘ΠΌ всё Ρ€Π°Π²Π½ΠΎ ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ, Π΄Π° придётся.

Β 

ОбмСн Π΄Π°Π½Π½Ρ‹ΠΌΠΈ происходит ΠΏΠΎ Π΄Π²ΡƒΠΌ шинам — Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ CLK, ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… DIO. ΠŸΡ€ΠΈ отсутствии ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ, Π½Π° ΠΎΠ±Π΅ΠΈΡ… ΡˆΠΈΠ½Π°Ρ… сохраняСтся высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ.

Для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π° трСбуСтся Π΄Π΅Π²ΡΡ‚ΡŒ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² синхронизации CLK. Π‘ΠΈΡ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ начиная с младшСго.

Активной стороной всСгда являСтся МК. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ TM1637 Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π½Π° запросы.

Π’Π°ΠΆΠ½ΠΎ 1 — измСнСния состояния ΡˆΠΈΠ½Ρ‹ DIO Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ Π½Π° шинС CLK.

ΠŸΠ΅Ρ€Π΅Π΄ восходящим (ΠΏΠ΅Ρ€Π΅Π΄Π½ΠΈΠΌ) Ρ„Ρ€ΠΎΠ½Ρ‚ΠΎΠΌ Π½Π° CLK, Π½Π° шинС DIO ΡƒΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ установлСн Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π», ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π±ΠΈΡ‚Π°.

Π’Π°ΠΆΠ½ΠΎ 2 — это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ΡΡ лишь Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ посылки, (Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΠ΄Π½ΠΎΠΉ посылки ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Π°ΠΉΡ‚ΠΎΠ²). ΠœΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠΌ Π½Π°Ρ‡Π°Π»Π° посылки являСтся ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ высокого уровня ΠΊ Π½ΠΈΠ·ΠΊΠΎΠΌΡƒ Π½Π° DIO ΠΏΡ€ΠΈ высоком CLK. ΠœΠ°Ρ€ΠΊΠ΅Ρ€ окончания посылки — ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня ΠΊ высокому Π½Π° DIO ΠΏΡ€ΠΈ высоком CLK.

Π­Ρ‚ΠΈ Π΄Π²Π° условия ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ стандартному ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ I2C.

Β 

Π‘ΠΈΠ³Π½Π°Π» подтвСрТдСния ACK Ρ‚ΠΎΠΆΠ΅ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΡ‚ I2C, ΠΈ прСдставляСт собой Π½ΠΈΠ·ΠΊΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π½Π° шинС DIO, выставляСмый устройством ΠΏΠΎ Π·Π°Π΄Π½Π΅ΠΌΡƒ (ΡΠΏΠ°Π΄Π°ΡŽΡ‰Π΅ΠΌΡƒ) Ρ„Ρ€ΠΎΠ½Ρ‚Ρƒ восьмого ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ° CLK (напомню, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅ΠΌΡƒ Ρ„Ρ€ΠΎΠ½Ρ‚Ρƒ этого ΠΆΠ΅ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ° происходит запись послСднСго, восьмого Π±ΠΈΡ‚Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π°). Π­Ρ‚ΠΎΡ‚ Π½ΠΈΠ·ΠΊΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ удСрТиваСтся Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚Π°ΠΊΡ‚Π° синхронизации — Π΄ΠΎ Π·Π°Π΄Π½Π΅Π³ΠΎ Ρ„Ρ€ΠΎΠ½Ρ‚Π° дСвятого ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ° CLK. Если послС этого Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ сформирован ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ окончания ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ, Ρ‚ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΠΌΠΏΡƒΠ»ΡŒΡ CLK Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΡΠΈΠ½Ρ…Ρ€ΠΎΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π°.

Β 

По «Ρ„ΡΠ½ΡˆΡƒΡŽ», Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ, Π½Π° врСмя дСйствия сигнала ACK Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΡˆΠΈΠ½Ρƒ DIO Π² высокоимпСдансноС состояниС, ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄ МК ΠΊΠ°ΠΊ Π²Ρ…ΠΎΠ΄. Но Π΅ΡΡ‚ΡŒ ΠΌΠ½Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π² это врСмя Ρ‚ΡƒΠΏΠΎ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½Π° Π»ΠΈΠ½ΠΈΠΈ ноль — «Π΄Π²Π° нуля Π½Π΅ подСрутся».

Полагаю (ΠΌΠΎΠ³Ρƒ ΠΈ ΠΎΡˆΠΈΠ±Π°Ρ‚ΡŒΡΡ), Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π½Π° линиях Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΎΠ³ΠΎ устройства, Π½ΠΈΠ·ΠΊΠΎΠΉ скорости ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ, ΠΈ отсутствии ΡΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠΌΠ΅Ρ…, Π½Π΅Ρ‚ нСобходимости Π² Π°Π½Π°Π»ΠΈΠ·Π΅ сигнала подтвСрТдСния ΠΏΡ€ΠΈΡ‘ΠΌΠ° (ACK). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² ΠΌΠΎΡ‘ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄Π° (Π½ΠΈΠΆΠ΅) этого Π½Π΅Ρ‚.

Β 

Π‘ Ρ„ΠΈΠ·ΠΈΠΊΠΎΠΉ Π²Ρ€ΠΎΠ΄Π΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ — БОЀВ.

Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π° Ρ‚Π°Π±Π»ΠΎ появились Π·Π°Π²Π΅Ρ‚Π½Ρ‹Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΈΠ»ΠΈ Π±ΡƒΠΊΠ²Ρ‹?

1. Π”Π°Ρ‚Π°ΡˆΠΈΡ‚ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎ-Π½Π°ΠΏΠ΅Ρ€Π²ΠΎ провСсти «ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ». ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ Π½ΠΈΠ³Π΄Π΅ Π² Π΄Π°Ρ‚Π°ΡˆΠΈΡ‚Π΅ Π½Π΅ объяснСно, Ρ‡Ρ‚ΠΎ сиС Π·Π½Π°Ρ‡ΠΈΡ‚. Π’ Π³ΠΎΠ»ΠΎΠ²Ρƒ сразу Π»Π΅Π·ΡƒΡ‚ ΡΡ‚Ρ€Π°ΡˆΠ½Ρ‹Π΅ воспоминания ΠΎ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΡ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ… для дисплССв Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ HD44780 ΠΈ Π΅ΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ……

Но здСсь инициализация прСдставляСт собой всСго лишь ΠΎΠ΄Π½Ρƒ ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡ‚Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ дисплСй ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΡΡ€ΠΊΠΎΡΡ‚ΡŒ (Π΄Π°-Π΄Π°, ΠΈ ΡΡ€ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΌΡ‹ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ))). Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ дисплСй. НапримСр с Ρ†Π΅Π»ΡŒΡŽ энСргосбСрСТСния.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° этого Π±Π°ΠΉΡ‚Π° Ρ‚Π°ΠΊΠΎΠ²Π°:

Β 

Bit 7 _ ВсСгда 1.

Bit 6 _ ВсСгда 0

Bit 5 _ 0 ΠΈΠ»ΠΈ Π±Π΅Π·Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎ

Bit 4 _ 0 ΠΈΠ»ΠΈ Π±Π΅Π·Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎ

Bit 3 _ 1 — Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ дисплСй, 0 — Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ дисплСй

Bit 2, Bit 1,Bit 0 _ Π’Ρ€ΠΈ Π±ΠΈΡ‚Π° 0…2 Π·Π°Π΄Π°ΡŽΡ‚ 8 Π³Ρ€Π°Π΄Π°Ρ†ΠΈΠΉ яркости дисплСя.

Β 

NB: КасаСмо содСрТимого Π±ΠΈΡ‚ΠΎΠ² 4 ΠΈ 5, Π΄Π°Ρ‚Π°ΡˆΠΈΡ‚ гласит: «Zero should be inserted for irrelevant items». Π§Ρ‚ΠΎ ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ слСдуСт ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ «ΠΠ΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π±ΠΈΡ‚. РСкомСндуСтся Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² Π½Π΅Π³ΠΎ ноль». Однако ΠΏΡ€ΠΈ записи Ρ‚ΡƒΠ΄Π° Π΅Π΄ΠΈΠ½ΠΈΡ†, Ρ€ΠΎΠ²Π½Ρ‹ΠΌ счётом Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ мСняСтся.

Β 

z.B: Команда 0b10001000 (0Ρ…88) — Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ дисплСй Π½Π° минимальной яркости. (см.Π€ΠΈΠ³.2)

Β 

Β 

2.Π—Π°Ρ‚Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Ρƒ ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡ‚Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

Π°. Π’ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Π»ΠΈ ΠΌΡ‹ дисплСй Π² Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ, ΠΈΠ»ΠΈ Π² тСстовый. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ тСстовый Ρ€Π΅ΠΆΠΈΠΌ, Π΄Π°Ρ‚Π°ΡˆΠΈΡ‚ ΡƒΠΌΠ°Π»Ρ‡ΠΈΠ²Π°Π΅Ρ‚.

Π±. Π‘ΡƒΠ΄Π΅ΠΌ Π»ΠΈ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ Π² нСсколько Π·Π½Π°ΠΊΠΎΠ² (с Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠΌ адрСса), ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ знакомСстС ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (ΠΏΠΎ фиксированному адрСсу).

Π². Π‘ΡƒΠ΄Π΅ΠΌ Π»ΠΈ ΠΌΡ‹ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² устройство Π΄Π°Π½Π½Ρ‹Π΅ для отобраТСния, ΠΈΠ»ΠΈ Π±ΡƒΠ΄Π΅ΠΌ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ состояниС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹.

Β 

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ

Bit 7 _ ВсСгда 0

Bit 6 _ ВсСгда 1.

Bit 5 _ 0 ΠΈΠ»ΠΈ Π±Π΅Π·Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎ

Bit 4 _ 0 ΠΈΠ»ΠΈ Π±Π΅Π·Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎ

Bit 3 _ 1 — тСстовый Ρ€Π΅ΠΆΠΈΠΌ, 0 — Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ

Bit 2 _ 1 — с фиксированным адрСсом знакомСста, 0 — с Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠΌ адрСса

Bit 1 _ 1 — Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, 0 — запись ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…

Bit 0 _ ВсСгда 0

Β 

z.B: Команда 0b01000000 — (0Ρ…40) Π±ΡƒΠ΄Π΅ΠΌ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ, Π² Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.

Β 

3. И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² устройство адрСс знакомСста, ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π² Π½Ρ‘ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ.

Π—Π΄Π΅ΡΡŒ вспоминаСм ΠΏΡƒΠ½ΠΊΡ‚ «2.Π±». Если Π²Ρ‹Π±Ρ€Π°Π½ Ρ€Π΅ΠΆΠΈΠΌ фиксированного адрСса, Ρ‚ΠΎ посылки Π±ΡƒΠ΄ΡƒΡ‚ Π΄Π²ΡƒΡ…Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ: [адрСс]+[ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅_Π΄Π°Π½Π½Ρ‹Π΅] для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ знакомСста.

Π”Π°Π½Π½Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой сумму «Π²Π΅ΡΠΎΠ²Ρ‹Ρ… коэффициСнтов» Π·Π°ΠΆΠΈΠ³Π°Π΅ΠΌΡ‹Ρ… сСгмСнтов, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π½Π° Ρ„ΠΈΠ³.6.

АдрСса знакомСст Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с 0xC0 (ΠΊΡ€Π°ΠΉΠ½Π΅ Π»Π΅Π²ΠΎΠ΅, ΠΎΠ½ΠΎ ΠΆΠ΅ — ΠΏΠ΅Ρ€Π²ΠΎΠ΅), ΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° 0xC3 для Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ…Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, ΠΈΠ»ΠΈ Π½Π° 0xC5 для ΡˆΠ΅ΡΡ‚ΠΈΠ·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ.

Β 

z.B: ΠŸΠΎΡΡ‹Π»ΠΊΠ° (0Ρ…C2,0x73) — ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ разрядС Π±ΡƒΠΊΠ²Ρƒ «Π ». (см.Π€ΠΈΠ³.3)

Β 

Β 

Если Π²Ρ‹Π±Ρ€Π°Π½Π° пакСтная ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ достаточно ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ адрСс (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ знакомСста — 0xC0 ) Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡƒ Π±Π°ΠΉΡ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈ этом адрСс для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π±Π°ΠΉΡ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ автоматичСски, ΠΈ всС ΠΎΠ½ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠΏΠ°Π΄ΡƒΡ‚ Π½Π° свои мСста. Всё это, ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ адрСс, ΠΈ нСсколько Π±Π°ΠΉΡ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π·Π° ΠΎΠ΄Π½Ρƒ посылку.

z.B: ΠŸΠΎΡΡ‹Π»ΠΊΠ° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ подряд пяти Π±Π°ΠΉΡ‚ΠΎΠ² (0xC0,0x06,0x5B,0x4F,0x66) — ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚, начиная с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ знакомСста, число «1234».

Β 

Π Π°Π±ΠΎΡ‚Π° с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ

Β 

Β 

Π•Ρ‘ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ происходит Ρ‚Π°ΠΊ:

1. Если инициализация Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° Ρ€Π°Π½Π΅Π΅, ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌ Π΅Ρ‘.

2. ΠŸΠΎΠ΄Π°Ρ‘ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, которая Π² Π΄Π°Π½Π½ΠΎΠΌ случаС выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ: 0b01000010 (0Ρ…42)

Π­Ρ‚ΠΎ запрос Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹.

3 ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ² запрос, устройство ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ€Π΅ΠΆΠΈΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ, ΠΈ Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π½ΠΈΠΉ Ρ„Ρ€ΠΎΠ½Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… ΠΎΡ‚ МК ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² CLK, выставляСт Π½Π° ΡˆΠΈΠ½Ρƒ DIO ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π±ΠΈΡ‚Π°.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π°ΠΌ потрСбуСтся пСрСвСсти ΡˆΠΈΠ½Ρƒ DIO Π² Ρ€Π΅ΠΆΠΈΠΌ чтСния (пСрСконфигурируя ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠΎΡ€Ρ‚ МК ΠΊΠ°ΠΊ Π²Ρ…ΠΎΠ΄), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ½ΠΈΠΌΠ°Ρ‚ΡŒ с Π½Π΅Ρ‘ Π΄Π°Π½Π½Ρ‹Π΅.

Π”Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… восьми Ρ‚Π°ΠΊΡ‚ΠΎΠ² CLK. ДСвятый Ρ‚Π°ΠΊΡ‚ ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ стоп-Π±ΠΈΡ‚.

Π’ΡΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ чтСния Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΉ Π΄Π²ΡƒΡ…Π±Π°ΠΉΡ‚Π½ΠΎΠΉ посылкой [ΠΊΠΎΠΌΠ°Π½Π΄Π°]+[Ρ‡Ρ‚Π΅Π½ΠΈΠ΅_Π΄Π°Π½Π½Ρ‹Ρ…].

Запрос ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΏΡ€ΠΈ Π½Π΅Π½Π°ΠΆΠ°Ρ‚Ρ‹Ρ… ΠΊΠ½ΠΎΠΏΠΊΠ°Ρ…, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0xFF.

Β 

Π’ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌ Π±Π°ΠΉΡ‚Π΅ состояния ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, интСрСс ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ (младшиС) ΠΏΡΡ‚ΡŒ Π±ΠΈΡ‚ΠΎΠ².

Π‘ΠΈΡ‚Ρ‹ 0…2 Π΄Π°ΡŽΡ‚ ΠΊΠΎΠ΄ Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΠ΄Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ (ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΊΠ°ΠΊ Π΄Π²Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΠΎ восСмь ΠΊΠ½ΠΎΠΏΠΎΠΊ. см.Ρ„ΠΈΠ³.4)

Низкий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π±ΠΈΡ‚Π° 3 ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ (К1).

Низкий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π±ΠΈΡ‚Π° 4 ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ (К2).

Высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π² ΠΎΠ±Π΅ΠΈΡ… этих Π±ΠΈΡ‚Π°Ρ… (Bit3,Bit4) ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° отсутствиС Π½Π°ΠΆΠ°Ρ‚Ρ‹Ρ… ΠΊΠ½ΠΎΠΏΠΎΠΊ.

Β 

Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΎΠΉ (см.Π€ΠΈΠ³.5). ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ — Ρ‚ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Ρ‡Ρ‚ΠΎ Π΅Ρ‰Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π² Π΄Π°Ρ‚Π°ΡˆΠΈΡ‚Π΅. )))

Β 

Β 

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ слСдуСт ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ особСнности.

1. ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° «Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚» наТатия Π΄Π²ΡƒΡ… ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

2. ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ состояния ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π½Π΅ проявляСт Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ активности Π½Π° интСрфСйсных ΡˆΠΈΠ½Π°Ρ…. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡ‚ Π½Π΅Ρ‘ прСрывания МК Π½Π΅ получится. ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ придётся рСгулярно ΠΎΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ с достаточной ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ.

3. Будя ΠΏΠΎ осциллограммам, Π²Ρ‹Ρ…ΠΎΠ΄ устройства Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² МК прСдставляСт собой «ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ исток», хотя Π² Π΄Π°Ρ‚Π°ΡˆΠΈΡ‚Π΅ это Π½ΠΈΠ³Π΄Π΅ Π½Π΅ упомянуто.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ нарастания напряТСния Π½Π° шинС DIO ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ RC Ρ†Π΅ΠΏΠΈ, состоящСй ΠΈΠ· рСзистора подтяТки (10 КОм) ΠΈ кондСнсатора Π½Π΅Π²Π΅Π΄ΠΎΠΌΠΎΠΉ ёмкости, установлСнного ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ шинС. Π­Ρ‚ΠΎ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ пСрСсылки Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ чтСния ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°Ρ… ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² CLK Π΄ΠΎ 100…150 мкс ΠΈ ΠΌΠ΅Π½Π΅Π΅, ΠΌΠΎΡ‘ устройство ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΎΡΡŒ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄Π°, этот ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ составляСт ΠΎΠΊΠΎΠ»ΠΎ 300 мкс (Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ, модифицируя ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ «pause:»).

Β 

БыстродСйствиС ΠΆΠ΅ устройства «Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΡŽ» ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ достаточно высоким. Π£ мСня ΠΎΠ½ΠΎ Π±ΠΎΠ΄Ρ€ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ»ΠΎ символы Π½Π° Ρ‚Π°Π±Π»ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π΅ ΡΠΈΠ½Ρ…Ρ€ΠΎΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² Π½Π° шинС CLK ΠΌΠ΅Π½Π΅Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ… микросСкунд. Π Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΈ Π±ΠΎΠ»Π΅Π΅ высокой частотС, я Π½Π΅ провСрял.

Β 

И Π΅Ρ‰Ρ‘.

Если планируСтся ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ° МК прямо Π² устройствС, ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ISP Π²Ρ‹Π²ΠΎΠ΄Ρ‹ МК для Π»ΠΈΠ½ΠΈΠΉ DIO ΠΈ SCK. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π½Π° этих линиях Π·Π° ΠΎΠ±ΠΌΠ΅Π½ с Π½ΠΈΠΌ, ΠΈ Π² нСподходящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π° DIO свой ACK.

Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Ρ€Π°Π·ΡŠΡ‘ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ МК ΠΈ устройством Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ. ))

Β 

Π’Π½ΠΈΠ·Ρƒ Π²Ρ‹Π»ΠΎΠΆΠ΅Π½ Ρ„Π°ΠΉΠ» «Π’М1637.asm» — листинг дСмонстрационной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΊΠΈ Π½Π° АссСмблСрС для ATtiny24 с Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ частотой 8 ΠœΠ“Ρ† (писано Π² AVRStudio_4.14).

Π’ Π½Π΅ΠΉ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ всС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ основных дСйствия для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с TM1637 — инициализация, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… с Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠΌ адрСса, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ фиксированному адрСсу, ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΊΠ° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° Ρ‚Π°Π±Π»ΠΎ Ρ†ΠΈΡ„Ρ€Ρ‹ «123» Π² ΡΡ‚Π°Ρ€ΡˆΠΈΡ… разрядах, ΠΈ «ΠΊΡ€Π°ΠΊΠΎΠ·ΡΠ±Ρ€Ρ‹» ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ чтСния ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, Π² младшСм разрядС. Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ «Π²Π΅ΡΠΎΠ²Ρ‹Ρ… коэффициСнтов», ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π½Π° Ρ„ΠΈΠ³.6.

Β 

Β 

Β 

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: TM1637.asm

(Π’ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±ΠΎΠ²Π°Ρ€ΠΈΠΌΠΎΠΌ Π²ΠΈΠ΄Π΅ — Ρ‚ΡƒΡ‚: https://www.chipmake…les/file/16019/ )

;*****************************************

;

; TM1637 + Tiny24 8MHz

; CLK = PA3

; DIO = PA1

; ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΡ‚Π°Ρ€ΡˆΠΈΡ… разрядах надписи «123»

; ΠΈ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π° состояния ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π² 4-ΠΌ разрядС

;

;*******************************************

.include «tn24def.inc»

;****** Π Π•Π“Π˜Π‘Π’Π Π«

.def tmp0 =r16

.def tmp1 =r17

.def tmp2 =r18

.def tmp3 =r19

;****** Π‘Π˜Π’Π«

.equ CLK =0x03 ;

.equ DIO =0x01 ;

Β 

rjmp RESET ; Reset Handler

rjmp EXINT ; IRQ0 Handler

rjmp PCIN0 ; PCINT0 Handler

rjmp PCIN1 ; PCINT1 Handler

rjmp WDT ; Watchdog Interrupt Handler

rjmp TIM1_CAPT ; Timer1 Capture Handler

rjmp TIM1_COMPA ; Timer1 Compare A Handler

rjmp TIM1_COMPB ; Timer1 Compare B Handler

rjmp TIM1_OVF ; Timer1 Overflow Handler

rjmp TIM0_COMPA ; Timer0 Compare A Handler

rjmp TIM0_COMPB ; Timer0 Compare B Handler

rjmp TIM0_OVF ; Timer0 Overflow Handler

rjmp ANA_COMP ; Analog Comparator Handler

rjmp ADCHN ; ADC Conversion Handler

rjmp EE_RDY ; EEPROM Ready Handler

rjmp USI_STR ; USI STart Handler

rjmp USI_OVF ; USI Overflow Handler

Β 

RESET: ldi tmp1, low(RAMEND)

out SPL,tmp1

Β 

ldi tmp0,0xFF ;

out ddra,tmp1 ;вСсь porta ΠΊΠ°ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄

out porta,tmp1 ;всСм 1

Β 

;***************************************************

;***************************************************

LOOP:

;инициализация

rcall start ;ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ Π½Π°Ρ‡Π°Π»Π° посылки

ldi tmp0,0x88 ;Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ дисплСя. Π―Ρ€ΠΊΠΎΡΡ‚ΡŒ минимальная.

rcall outcom ;Π²Ρ‹Π²ΠΎΠΆΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

rcall end ;ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ†Π° посылки

Β 

rcall pause ;ΠΏΠ°ΡƒΠ·Π° 100 мкс

;Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… с Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠΌ адрСса

rcall start ;ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ Π½Π°Ρ‡Π°Π»Π° посылки

ldi tmp0,0x40 ;Ρ€Π΅ΠΆΠΈΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… с Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠΌ адрСса

rcall outcom ;Π²Ρ‹Π²ΠΎΠΆΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

rcall end ;ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ†Π° посылки

Β 

rcall pause ;ΠΏΠ°ΡƒΠ·Π° 100 мкс

;Π²Ρ‹Π²ΠΎΠ΄ сообщСния «123» Π½Π° Ρ‚Π°Π±Π»ΠΎ

rcall start ;ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ Π½Π°Ρ‡Π°Π»Π° посылки

ldi tmp0,0xC0 ;Π£Π‘Π’ΠΠΠžΠ’ΠšΠ ΠΠΠ§ΠΠ›Π¬ΠΠžΠ“Πž АДРЕБА (0Ρ…C0 — ΠΊΡ€Π°ΠΉΠ½Π΅Π΅ Π»Π΅Π²ΠΎΠ΅ знакомСсто)

rcall outcom ;Π²Ρ‹Π²ΠΎΠΆΡƒ адрСс

ldi tmp0,0x06 ;1 Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ разряд

rcall outcom ;Π²Ρ‹Π²ΠΎΠΆΡƒ Π΄Π°Π½Π½Ρ‹Π΅

ldi tmp0,0x5b ;2 Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ разряд

rcall outcom ;Π²Ρ‹Π²ΠΎΠΆΡƒ Π΄Π°Π½Π½Ρ‹Π΅

ldi tmp0,0x4f ;3 Π² Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ разряд

rcall outcom ;Π²Ρ‹Π²ΠΎΠΆΡƒ Π΄Π°Π½Π½Ρ‹Π΅

rcall end ;ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ†Π° посылки

rcall pause ;ΠΏΠ°ΡƒΠ·Π° 100 мкс

Β 

;Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

rcall start ;ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ Π½Π°Ρ‡Π°Π»Π° посылки

ldi tmp0,0x42 ;Ρ€Π΅ΠΆΠΈΠΌ чтСния ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

rcall outcom ;Π²Ρ‹Π²ΠΎΠΆΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

rcall incom ;ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ Π΄Π°Π½Π½Ρ‹Π΅

rcall end ;ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ†Π° посылки

Β 

mov tmp2,tmp0 ;ΡΠΎΡ…Ρ€Π°Π½ΡΡŽ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π² tmp4

Β 

;Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… с фиксированным адрСсом

rcall start ;ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ Π½Π°Ρ‡Π°Π»Π° посылки

ldi tmp0,0x44 ;Ρ€Π΅ΠΆΠΈΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… с фиксированным адрСсом

rcall outcom ;Π²Ρ‹Π²ΠΎΠΆΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

rcall end ;ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ†Π° посылки

;Π²Ρ‹Π²ΠΎΠ΄ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π° состояния ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π² Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ разряд Ρ‚Π°Π±Π»ΠΎ

rcall pause ;ΠΏΠ°ΡƒΠ·Π° 100 мкс

rcall start ;ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ Π½Π°Ρ‡Π°Π»Π° посылки

ldi tmp0,0xC3 ;Π£Π‘Π’ΠΠΠžΠ’ΠšΠ АДРЕБА (0Ρ…C3 — Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠ΅ знакомСсто)

rcall outcom ;Π²Ρ‹Π²ΠΎΠΆΡƒ адрСс

mov tmp0,tmp2 ;Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽ Π² tmp0 сохранённыС Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

rcall outcom ;Π²Ρ‹Π²ΠΎΠΆΡƒ Π΄Π°Π½Π½Ρ‹Π΅

rcall end ;ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ†Π° посылки

Β 

rjmp LOOP

;***********************************

start: ;ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ Π½Π°Ρ‡Π°Π»Π° посылки

rcall pause ;ΠΏΠ°ΡƒΠ·Π° 100 мкс

sbi porta,clk ;

sbi porta,dio ;

rcall pause ;ΠΏΠ°ΡƒΠ·Π° 100 мкс

cbi porta,dio ;

rcall pause ;ΠΏΠ°ΡƒΠ·Π° 100 мкс

ret

;***********************************

end: ;ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ†Π° посылки

sbi porta,clk ;

rcall pause ;ΠΏΠ°ΡƒΠ·Π° 100 мкс

sbi porta,dio ;

rcall pause ;ΠΏΠ°ΡƒΠ·Π° 100 мкс

ret

;***********************************

outcom: ;ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄. Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ Π±Π°ΠΉΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² tmp0

push tmp1

; Π²Ρ‹Π²ΠΎΠ΄ восьми Π±ΠΈΡ‚ΠΎΠ² рСгистра tmp0

ldi tmp1,0x08 ;

outc10: cbi porta,clk ;ΠΎΠΏΡƒΡΠΊΠ°ΡŽ CLK

rcall pause ;ΠΏΠ°ΡƒΠ·Π° 100 мкс

Β 

lsr tmp0 ; \

brcc outc20 ; |

sbi porta,dio ; > младший Π±ΠΈΡ‚ tmp0 Π²Ρ‹ΡΡ‚Π°Π²Π»ΡΡŽ Π½Π° DIO

rjmp outc30 ; |

outc20: cbi porta,dio ; /

Β 

outc30: rcall pause ;ΠΏΠ°ΡƒΠ·Π° 100 мкс

sbi porta,clk ;поднимаю CLK

rcall pause ;ΠΏΠ°ΡƒΠ·Π° 100 мкс

dec tmp1 ;

brne outc10 ;ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π²ΠΎΠΆΡƒ вСсь Π±Π°ΠΉΡ‚

; стоп-Π±ΠΈΡ‚

cbi ddra,dio ;ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°ΡŽ DIO ΠΊΠ°ΠΊ Π²Ρ…ΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ коллизию с ACK

cbi porta,clk ;ΠΎΠΏΡƒΡΠΊΠ°ΡŽ CLK

rcall pause ;ΠΏΠ°ΡƒΠ·Π° 100 мкс

sbi porta,clk ;поднимаю clk

rcall pause ;ΠΏΠ°ΡƒΠ·Π° 100 мкс

cbi porta,clk ;ΠΎΠΏΡƒΡΠΊΠ°ΡŽ CLK

cbi porta,dio ;

sbi ddra,dio ;ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ стоп-Π±ΠΈΡ‚Π°, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°ΡŽ DIO ΠΊΠ°ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄

; (Π²Ρ‹Ρ…ΠΎΠΆΡƒ с нулями Π½Π° ΠΎΠ±Π΅ΠΈΡ… ΡˆΠΈΠ½Π°Ρ…)

rcall pause ;ΠΏΠ°ΡƒΠ·Π° 100 мкс

pop tmp1 ;

ret ;

Β 

;********************************

incom: ;Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ. Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π² tmp0

push tmp1

clr tmp0 ;

;ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Π²ΠΎΠ΄ восьми Π±ΠΈΡ‚ΠΎΠ² Π² tmp0

ldi tmp1,0x08 ;

inc10: cbi porta,clk ;ΠΎΠΏΡƒΡΠΊΠ°ΡŽ CLK

cbi ddra,dio ;ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π»ΠΈΠ½ΠΈΠΈ DIO ΠΊΠ°ΠΊ Π²Ρ…ΠΎΠ΄Π°

sbi porta,dio ;Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽ подтяТку DIO

rcall pause ;ΠΏΠ°ΡƒΠ·Π° 100 мкс

sbi porta,clk ;поднимаю CLK

rcall pause ;ΠΏΠ°ΡƒΠ·Π° 100 мкс

lsr tmp0 ;

sbr tmp0,0x80 ;\

sbis pina,dio ; >пСрСнос ΠΏΠΈΠ½Π° DIO Π² tmp0

cbr tmp0,0x80 ;/

dec tmp1 ;

brne inc10 ;ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π²ΠΎΠΆΡƒ вСсь Π±Π°ΠΉΡ‚

Β 

rcall pause ;ΠΏΠ°ΡƒΠ·Π° 100 мкс

cbi porta,clk ;

;стоп-Π±ΠΈΡ‚

rcall pause ;ΠΏΠ°ΡƒΠ·Π° 100 мкс

sbi porta,clk ;дСвятый ΠΈΠΌΠΏΡƒΠ»ΡŒΡ CLK

rcall pause ;ΠΏΠ°ΡƒΠ·Π° 100 мкс

cbi porta,clk ;ΠΎΠΏΡƒΡΠΊΠ°ΡŽ CLK

Β 

cbi porta,dio ;Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°ΡŽ подтяТку DIO

sbi ddra,dio ;ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π»ΠΈΠ½ΠΈΠΈ DIO ΠΊΠ°ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Π°

; Π²Ρ‹Ρ…ΠΎΠ΄ с нулями Π½Π° ΠΎΠ±Π΅ΠΈΡ… ΡˆΠΈΠ½Π°Ρ…

rcall pause ;ΠΏΠ°ΡƒΠ·Π° 100 мкс

pop tmp1

ret

;********************************

pause: ;ΠΏΠ°ΡƒΠ·Π° 100 мкс

push tmp3 ;

ldi tmp3,0xff

de10: dec tmp3

brne de10

pop tmp3

ret

;*****************************************************************

;*****************************************************************

EXINT: ; IRQ0 Handler

PCIN0: ; PCINT0 Handler

PCIN1: ; PCINT1 Handler

WDT: ; Watchdog Interrupt Handler

TIM1_CAPT: ; Timer1 Capture Handler

TIM1_COMPA: ; Timer1 Compare A Handler

TIM1_COMPB: ; Timer1 Compare B Handler

TIM1_OVF: ; Timer1 Overflow Handler

TIM0_COMPA: ; Timer0 Compare A Handler

TIM0_COMPB: ; Timer0 Compare B Handler

TIM0_OVF: ; Timer0 Overflow Handler

ANA_COMP: ; Analog Comparator Handler

ADCHN: ; ADC Conversion Handler

EE_RDY: ; EEPROM Ready Handler

USI_STR: ; USI STart Handler

USI_OVF: ; USI Overflow Handler

rjmp reset ;

www.chipmaker.ru

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΊΒ Arduino дисплСй TM1637

ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚.
БСгодня для тСстирования, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΊΒ Arduino Nano, Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π·Π½Π°Ρ‡Π½Ρ‹ΠΉ, 7 Ρ… 4 сСгмСнтный, I2C дисплСй TM1637.
Π•Ρ‰Π΅ нСсколько Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ дисплСй Π±Ρ‹Π»ΠΎ Π½Π΅Β Ρ‚Π°ΠΊ просто ΠΈΒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС Π²Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΏΠ»Π°Ρ‚Ρ‹ Ардуино. Но сСйчас благодаря микросхСмС TM1637, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Π΅ ΡΒ ΡˆΠΈΠ½Ρ‹ I2C, Π²Β ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ сигналы, эти дисплСи стало ΠΎΡ‡Π΅Π½ΡŒ просто ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊΒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌ. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π΄Π»ΡΒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ этого дисплСя Π½ΡƒΠΆΠ½ΠΎ всСго 4 ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π°, ΠΌΠ°ΠΌΠ°-ΠΌΠ°ΠΌΠ° или Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΠΊΠ΅Ρ‚Π½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρƒ, Ρ‚ΠΎ 4 ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π° ΠΏΠ°ΠΏΠ°-ΠΏΠ°ΠΏΠ°. Π˜Π·Β Π½ΠΈΡ… 2 ΠΏΠΎΠ²ΠΎΠ΄Π° это ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ +5 Π’, GND ΠΈΒ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ 2 ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π° это шина I2C.
Π’ΠΊΡ€Π°Ρ‚Ρ†Π΅ расскаТу про характСристики дисплСя:
ΠœΠΈΠΊΡ€ΠΎΡΡ…Π΅ΠΌΠ° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° дисплСя TM1637
ЛогичСскиС ΡƒΡ€ΠΎΠ²Π½ΠΈ Ρ‚ΠΎΠ»Π΅Ρ€Π°Π½Ρ‚Π½Ρ‹Π΅ ΠΊΠ°ΠΊ к уровням напряТСния 5 Π’Β ΠΈΒ 3.3 Π’.
Π§Π΅Ρ‚Ρ‹Ρ€Π΅ сСми сСгмСнтныС Ρ†ΠΈΡ„Ρ€Ρ‹ плюс Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ.
Π‘Π°ΠΌ дисплСй с общим Π°Π½ΠΎΠ΄ΠΎΠΌ.
Π―Ρ€ΠΊΠΎΡΡ‚ΡŒ дисплСя ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΒ ΠΈΠΌΠ΅Π΅Ρ‚ 3 уровня.
Π¦Π²Π΅Ρ‚Π° свСчСния сСгмСнтов Π±Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ красный, синий, ΠΆΠ΅Π»Ρ‚Ρ‹ΠΉ, Π±Π΅Π»Ρ‹ΠΉ ΠΈΒ Π·Π΅Π»Π΅Π½Ρ‹ΠΉ. Но самый популярный Ρ†Π²Π΅Ρ‚ красный. Π―Β Π±Ρ‹ для сСбя ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Π΅Π»Β Π±Ρ‹ Π±Π΅Π»Ρ‹ΠΉ, Π½ΠΎΒ ΠΊΠ°ΠΊ ΠΌΠ½Π΅ каТСтся Π±Π΅Π»Ρ‹ΠΉ при ярком Π΄Π½Π΅Π²Π½ΠΎΠΌ освСщСнии Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ»ΠΎΡ…ΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌ. НавСрно с этим и связана ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ красного.

Π˜Β Ρ‚Π°ΠΊ, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊΒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ сСгмСнтного экрана ΠΊΒ Arduino nano. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ всСго нСсколько сСкунд.

Π‘Ρ…Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Π°Ρ схСма:

Для того Ρ‡Ρ‚ΠΎΒ Π±Ρ‹ на экранС ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° появилась какая Π»ΠΈΠ±ΠΎ информация, Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈΒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ TM1637, ΠΏΠΎΡ‚ΠΎΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Arduino IDE ΠΈΒ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Β«Π€Π°ΠΉΠ»Ρ‹Β β€” ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹Β β€” TM1637Β» и послС Ρ‡Π΅Π³ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΎΡ‡ΠΊΡƒ Β«Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π²Β ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Β», ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠ» Π½Π°Β ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ

Если всС ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ , Ρ‚ΠΎ Π’Π°Ρˆ дисплСй Π½Π°Ρ‡Π½Π΅Ρ‚ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свои возмоТности.
Π’Β Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… эффСктов, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ бСгущая строка, скроллинг, Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡ€ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΈΒ ΠΏΡ€.

Π§Ρ‚ΠΎΒ Π±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΒ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ в дисплСй свой символ, для Сго расчСта Π½ΡƒΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ инструкций Π½Π°Β ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π½ΠΈΠΆΠ΅. Если Π²Β Π΄Π²ΡƒΡ… словах, Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ сСгмСнта Π½ΡƒΠΆΠ½ΠΎ ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ

НапримСр Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ на экранС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ†ΠΈΡ„Ρ€Ρƒ 4. Для этого Π½ΡƒΠΆΠ½ΠΎ ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ значСния 2 + 4 + 32 + 64 = 102. ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ Π²Β ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΡƒΡŽ систСму исчислСния ΠΈΒ  ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ 0x66.

Ну Π²ΠΎΡ‚ ΠΊΠ°ΠΊΒ Π±Ρ‹ и всС, Ρ‡Ρ‚ΠΎ я Ρ…ΠΎΡ‚Π΅Π» Π’Π°ΠΌ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ про этот Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ I2C экранчик. НадСюсь Π½ΠΈΡ‡Π΅Π³ΠΎ нС упустил. Если Π±ΡƒΠ΄ΡƒΡ‚ вопросы. ΠΠ΅Β ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ Π·Π°Π΄Π°Π²Π°ΠΉΡ‚Π΅. Π― ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽ всСгда, Π½ΠΎΒ ΠΌΠΎΠΆΠ΅Ρ‚ нС всСгда быстро ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΈΠΌ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒΒ Π±Ρ‹.

И на послСдок Π²ΠΈΠ΄Π΅ΠΎ дСмонстрация возмоТностСй сСгмСнтного ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° TM1637

duino.ru

Часы Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ [АмпСрка / Π’ΠΈΠΊΠΈ]

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассматриваСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создания часов Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. На ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ врСмя, Π° Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ Π½Π° Π½Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΎΡ€Π³Π°Ρ‚ΡŒ Ρ€Π°Π· Π² сСкунду. Π’ΠΎΡ‡Π½ΠΎΠ΅ врСмя Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π²ΠΎ вСрмя компиляции ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ.

ОписаниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²

Π’ нашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ:

Часы Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ с часами Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΡ‚ Seeed Studio. Они построСны Π½Π° Π±Π°Π·Π΅ микросхСмы DS1307 ΠΎΡ‚ Maxim Integrated. Из элСмСнтов обвязки ΠΎΠ½Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ‚Ρ€ΠΈ рСзистора, часовой ΠΊΠ²Π°Ρ€Ρ† ΠΈ Π±Π°Ρ‚Π°Ρ€Π΅ΠΉΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅. ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ свойствами:

  • ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (сСкунды, ΠΌΠΈΠ½ΡƒΡ‚Ρ‹, часы), Π΄Π°Ρ‚Ρ‹ (Π³ΠΎΠ΄, мСсяц, число), дня Π½Π΅Π΄Π΅Π»ΠΈ

  • Π”Π²ΡƒΡ…ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΎΠΉ интСрфСйс IΒ²C

Π‘ΡƒΡ‚ΡŒ часов Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π±Π°Ρ‚Π°Ρ€Π΅ΠΉΠΊΠΈ, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ΄Ρ‚ΠΈ Π΄Π°ΠΆΠ΅ Ссли основноС устройство обСсточСно. ΠœΡ‹ с Ρ‚Π°ΠΊΠΈΠΌΠΈ часами сталкиваСмся постоянно Π² Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠ°Ρ… ΠΈΠ»ΠΈ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… Ρ„ΠΎΡ‚ΠΎΠ°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π°Ρ…. Если Π΄ΠΎΡΡ‚Π°Ρ‚ΡŒ ΠΈΠ· этих устройств аккумулятор, Π° Ρ‡Π΅Ρ€Π΅Π· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΈΡ… ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, Ρ‚ΠΎ врСмя Π½Π΅ сбросится. Π’ этом заслуга часов Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Real Time Clock (RTC).

ВсС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта.

Π˜Π½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ чСтырёхразрядный ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΡ‚ Seeed Studio. ОсновноС Π² ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π΅ β€” микросхСма TM1637, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ собой Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… 7-сСгмСнтных разрядов. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ 4 разряда. ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ свойствами:

  • 8 Π³Ρ€Π°Π΄Π°Ρ†ΠΈΠΉ яркости

  • Π”Π²ΡƒΡ…ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΎΠΉ интСрфСйс Ρ€Π°Π±ΠΎΡ‚Ρ‹ (CLK, DIO)

Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для ΠΏΠΎΠΊΠ°Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ: часов ΠΈ ΠΌΠΈΠ½ΡƒΡ‚. Удобство модуля Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΎΠ½ всСго ΠΏΠΎ Π΄Π²ΡƒΠΌ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π°ΠΌ ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ динамичСской ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС ΡƒΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ модуля.

ДинамичСская индикация β€” это процСсс, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π² нашСм ΠΌΠΎΠ΄ΡƒΠ»Π΅ Π·Π°Π³ΠΎΡ€Π°ΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Но мСрцания ΠΌΡ‹ Π½Π΅ Π²ΠΈΠ΄ΠΈΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ чСловСчСской Π³Π»Π°Π· ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ большой ΠΈΠ½Π΅Ρ€Ρ‚Π½ΠΎΡΡ‚ΡŒΡŽ. Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ позволяСт ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ количСство соСдинСний ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ:

  • БтатичСская индикация: 4 Ρ†ΠΈΡ„Ρ€Ρ‹ Γ— 7 сСгмСнтов = 28 соСдинСний.

  • ДинамичСская индикация: 7 сСгмСнтов + 4 ΠΎΠ±Ρ‰ΠΈΡ… Π°Π½ΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚ΠΎΠ΄Π° = 11 соСдинСний.

  • ΠœΠΈΠΊΡ€ΠΎΡΡ…Π΅ΠΌΠ° TM1637: 2 соСдинСния.

Π’Ρ‹Π³ΠΎΠ΄Π° ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Π°.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Π΄Π°Π½Π½ΠΎΠ³ΠΎ модуля Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ скачана с сайта производитСля.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠœΠΎΠ΄ΡƒΠ»ΡŒ часов Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊ Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌ SCL/SDA, относящимся ΠΊ шинС IΒ²C. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π»ΠΈΠ½ΠΈΠΈ питания (Vcc) ΠΈ Π·Π΅ΠΌΠ»ΠΈ (GND).

Π›ΠΈΠ½ΠΈΠΈ SDA/SCL ΠΈΠΌΠ΅ΡŽΡ‚ собствСнныС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΈΠ½Ρ‹ Π½Π° Arduino, ΠΎΠ΄Π½Π°ΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ½ΠΈ Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΊ ΠΏΠΈΠ½Π°ΠΌ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния. Если Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Arduino Uno, Π»ΠΈΠ½ΠΈΠΈ SDA соотвСтствуСт ΠΏΠΈΠ½ A4, Π° SCL β€” A5.

Π’ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ с ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ поставляСтся ΡˆΠ»Π΅ΠΉΡ„ с ΠΌΠ°ΠΌΠ°-ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊ Troyka Shield. Однако ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΈΠ½Ρ‹ SDA ΠΈ SCL Π½Π° Π½Π΅ΠΉ Π½Π΅ Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹, поэтому ΠΌΡ‹ осущСствили ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ прямо Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΈΠ½Ρ‹ A5 ΠΈ A4.

Π’ ΠΏΠ»Π°Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° β€” всС Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅. Π’Ρ‹Π²ΠΎΠ΄Ρ‹ CLK ΠΈ DIO ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹ΠΌ Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ 12-ΠΉ ΠΈ 11-ΠΉ Π²Ρ‹Π²ΠΎΠ΄Ρ‹ соотвСтствСнно.

НаписаниС ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ

Ѐункция setup Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ часы Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ врСмя компиляции Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ часов Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ВсС дСйствиС, Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠ· RTC ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Π΅Π³ΠΎ Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ loop.

Код для этого выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

rtc.ino
#include <Wire.h>
#include <EEPROM.h>
#include "TM1637.h"
#include "DS1307.h"
Β 
Β 
//Массив, содСрТащий врСмя компиляции
char compileTime[] = __TIME__;
Β 
Β 
//НомСра ΠΏΠΈΠ½ΠΎΠ² Arduino, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€
#define DISPLAY_CLK_PIN 12  
#define DISPLAY_DIO_PIN 13
Β 
//Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с микросхСмой часов ΠΈ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
//ΠšΠ»Π°ΡΡΡ‹ TM1637 ΠΈ DS1307 ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Π½ΠΈΡ…
TM1637 display(DISPLAY_CLK_PIN, DISPLAY_DIO_PIN);
DS1307 clock;
Β 
Β 
void setup()
{
Β 
  //Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΈ настраиваСм ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€
  display.set();
  display.init();
Β 
  //ЗапускаСм часы Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
  clock.begin();
Β 
  //ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ число ΠΈΠ· строки, зная Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа
  byte hour = getInt(compileTime, 0);
  byte minute = getInt(compileTime, 3);
  byte second = getInt(compileTime, 6);
Β 
  //Π“ΠΎΡ‚ΠΎΠ²ΠΈΠΌ для записи Π² RTC часы, ΠΌΠΈΠ½ΡƒΡ‚Ρ‹, сСкунды
  clock.fillByHMS(hour, minute, second);
Β 
  //ЗаписываСм эти Π΄Π°Π½Π½Ρ‹Π΅ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ часов.
  //Π‘ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΎΠ½ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎΠ΅ для нас врСмя
  clock.setTime();
Β 
}
Β 
Β 
void loop()
{
  //ЗначСния для отобраТСния Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· 4 разрядов
  int8_t timeDisp[4];
Β 
  //Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ врСмя с часов
  clock.getTime();
Β 
  //ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ дСсятки часов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ цСлочислСнного дСлСния
  timeDisp[0] = clock.hour / 10;
Β 
  //ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ часов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ остатка ΠΎΡ‚ дСлСния
  timeDisp[1] = clock.hour % 10;
Β 
  //ΠŸΡ€ΠΎΠ΄Π΅Π»Ρ‹Π²Π°Π΅ΠΌ Ρ‚ΠΎ ΠΆΠ΅ самоС с ΠΌΠΈΠ½ΡƒΡ‚Π°ΠΌΠΈ
  timeDisp[2] = clock.minute / 10;
  timeDisp[3] = clock.minute % 10;
Β 
  //... Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π΅Π³ΠΎ Π½Π° экран
  display.display(timeDisp);
Β 
  //Ρƒ нас Π½Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… разрядов для сСкунд, поэтому
  //Π±ΡƒΠ΄Π΅ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду
  display.point(clock.second % 2 ? POINT_ON : POINT_OFF);
Β 
}
Β 
//Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ объяснСно Π½ΠΈΠΆΠ΅
char getInt(const char* string, int startIndex) {
  return int(string[startIndex] - '0') * 10 + int(string[startIndex+1]) - '0';
}

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ этот ΠΊΠΎΠ΄ Π² срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈ Π·Π°Π»ΠΈΠ²Π°Π΅ΠΌ. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° дисплСй β€” Π±ΠΈΠ½Π³ΠΎ! ВрСмя Π½Π° дисплСС β€” врСмя компиляции.

ОбъяснСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ getInt

Для Π½Π°Ρ‡Π°Π»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΆΠ΅ Π² массивС compileTime появляСтся врСмя. Оно появляСтся Π² этой строчкС:

unsigned char compileTime[] = __TIME__;

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ вмСсто __TIME__ подставляСт строку, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ врСмя компиляции Π² Π²ΠΈΠ΄Π΅ __TIME__ = "hh:mm:ss", Π³Π΄Π΅ hh — часы, mm — ΠΌΠΈΠ½ΡƒΡ‚Ρ‹, ss — сСкунды.

ВСрнСмся ΠΊ ΠΊΠΎΠ΄Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ:

char getInt(const char* string, int startIndex) {
  return int(string[startIndex] - '0') * 10 + int(string[startIndex+1]) - '0';
}

Π’ массивС string, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠΌ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ getInt, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ символ с индСксом startIndex ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° Π½ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π²ΡƒΡ…Π·Π½Π°Ρ‡Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число. Однако, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ это Π½Π΅ число, Π° ΠΏΠ°Ρ€Π° символов. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ число ΠΏΠΎ символу, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Ρ‡Π΅ΡΡ‚ΡŒ ΠΈΠ· этого символа символ нуля ('0‘): вСдь Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ASCII всС символы Ρ†ΠΈΡ„Ρ€ ΠΈΠ΄ΡƒΡ‚ ΠΎΠ΄Π½Π° Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ, начиная с символа нуля. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΊΠΎΠ΄ int(string[startIndex]) - '0'), дословно, Π΄Π΅Π»Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: Β«Π‘Π΅Ρ€Π΅ΠΌ символ Π½ΠΎΠΌΠ΅Ρ€ startIndex, Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π΅ΠΌ ΠΈΠ· Π½Π΅Π³ΠΎ символ нуля ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ Π² цСлочислСнный Ρ‚ΠΈΠΏΒ».

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

Π”Π°, этот ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ, ΠΈ часы Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ΄Ρ‚ΠΈ. Однако, Ссли ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅, Π° Ρ‡Π΅Ρ€Π΅Π· нСсколько ΠΌΠΈΠ½ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, Ρ‚ΠΎ послС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ врСмя врСмя вновь станСт Ρ‚Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈ компиляции.

Π­Ρ‚ΠΎ происходит ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ послС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ питания, вновь исполняСтся ΠΊΠΎΠ΄, находящийся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ setup. А ΠΎΠ½ записываСт Π² часы Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ староС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π§Ρ‚ΠΎΠ±Ρ‹ этого ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΅Ρ‰Π΅ Ρ‡ΡƒΡ‚ΡŒ-Ρ‡ΡƒΡ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ setup Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ подсчСт Β«Ρ…ΡΡˆΠ°Β» Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции β€” Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ количСство сСкунд, ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π΅ с 00:00:00 Π΄ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции. И этот Ρ…ΡΡˆ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ с Ρ…ΡΡˆΠ΅ΠΌ Π² EEPROM. Напомним EEPROM β€” ΠΏΠ°ΠΌΡΡ‚ΡŒ, которая Π½Π΅ обнуляСтся ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ питания.

Если значСния посчитанного ΠΈ сохранённого Ρ€Π°Π½Π΅Π΅ Ρ…ΡΡˆΠ° ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚, Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ врСмя Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ часов Π½Π΅Ρ‚ нСобходимости: это ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сдСлано. А Π²ΠΎΡ‚ Ссли эта ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚, Ρ‚ΠΎ происходит ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² RTC.

Для записи/чтСния числа Ρ‚ΠΈΠΏΠ° unsigned int Π²/ΠΈΠ· EEPROM написаны Π΄Π²Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ EEPROMWriteInt ΠΈ EEPROMReadInt. Они Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ EEPROM.read ΠΈ EEPROM.write ΠΌΠΎΠ³ΡƒΡ‚ΡŒ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° char.

rtc-eeprom.ino
#include <Wire.h>
#include <EEPROM.h>
#include "TM1637.h"
#include "DS1307.h"
Β 
//Массив, содСрТащий врСмя компиляции
char compileTime[] = __TIME__;
Β 
//НомСра ΠΏΠΈΠ½ΠΎΠ² Arduino, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€
#define DISPLAY_CLK_PIN 12  
#define DISPLAY_DIO_PIN 13
Β 
//Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с микросхСмой часов ΠΈ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
TM1637 display(DISPLAY_CLK_PIN, DISPLAY_DIO_PIN);
DS1307 clock;
Β 
Β 
void setup()
{
Β 
  //Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΈ настраиваСм ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€
  display.set();
  display.init();
Β 
  //ЗапускаСм часы Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
  clock.begin();
Β 
  //ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ число ΠΈΠ· строки, зная Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа
  byte hour = getInt(compileTime, 0);
  byte minute = getInt(compileTime, 3);
  byte second = getInt(compileTime, 6);
Β 
  //Π˜ΠΌΠΏΡ€ΠΎΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ…ΡΡˆ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
  //Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Π² сСбС количСство сСкунд с Π½Π°Ρ‡Π°Π»Π° дня
  unsigned int hash =  hour * 60 * 60 + minute  * 60 + second; 
Β 
  //ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ нСсовпадСниС Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ…ΡΡˆΠ° с Ρ…ΡΡˆΠ΅ΠΌ Π² EEPROM
  if (EEPROMReadInt(0) != hash) {
Β 
    //БохраняСм Π½ΠΎΠ²Ρ‹ΠΉ Ρ…ΡΡˆ
    EEPROMWriteInt(0, hash);
Β 
    //Π“ΠΎΡ‚ΠΎΠ²ΠΈΠΌ для записи Π² RTC часы, ΠΌΠΈΠ½ΡƒΡ‚Ρ‹, сСкунды
    clock.fillByHMS(hour, minute, second);
Β 
    //ЗаписываСм эти Π΄Π°Π½Π½Ρ‹Π΅ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ часов.
    //Π‘ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΎΠ½ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎΠ΅ для нас врСмя
    clock.setTime();
  }
Β 
}
Β 
Β 
void loop()
{
  //ЗначСния для отобраТСния Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· 4 разрядов
  int8_t timeDisp[4];
Β 
  //Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ врСмя с часов
  clock.getTime();
Β 
  //ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ дСсятки часов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ цСлочислСнного дСлСния
  timeDisp[0] = clock.hour / 10;
Β 
  //ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ часов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ остатка ΠΎΡ‚ дСлСния
  timeDisp[1] = clock.hour % 10;
Β 
  //ΠŸΡ€ΠΎΠ΄Π΅Π»Ρ‹Π²Π°Π΅ΠΌ Ρ‚ΠΎ ΠΆΠ΅ самоС с ΠΌΠΈΠ½ΡƒΡ‚Π°ΠΌΠΈ
  timeDisp[2] = clock.minute / 10;
  timeDisp[3] = clock.minute % 10;
Β 
  //... Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π΅Π³ΠΎ Π½Π° экран
  display.display(timeDisp);
Β 
  //Ρƒ нас Π½Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… разрядов для сСкунд, поэтому
  //Π±ΡƒΠ΄Π΅ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду
  display.point(clock.second % 2 ? POINT_ON : POINT_OFF);
Β 
}
Β 
char getInt(const char* string, int startIndex) {
  return int(string[startIndex] - '0') * 10 + int(string[startIndex+1]) - '0';
}
Β 
//Π—Π°ΠΏΠΈΡΡŒ Π΄Π²ΡƒΡ…Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠ³ΠΎ числа Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ
void EEPROMWriteInt(int address, int value)
{
  EEPROM.write(address, lowByte(value));
  EEPROM.write(address + 1, highByte(value));
}
Β 
//Π§Ρ‚Π΅Π½ΠΈΠ΅ числа ΠΈΠ· памяти
unsigned int EEPROMReadInt(int address)
{
  byte lowByte = EEPROM.read(address);
  byte highByte = EEPROM.read(address + 1);
Β 
  return (highByte << 8) | lowByte;
}

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±Ρ‹Π» ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с микросхСмой часов Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ RTC DS1307 ΠΈ микросхСмой-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° TM1637, Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΡ‹ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΄Π°Ρ‚Ρƒ ΠΈ врСмя Π½Π° этапС компиляции. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎΠ΅ врСмя Π½Π° часах, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ Ρ…ΠΎΡ‚ΡŒ Π½Π° нСсколько часов, Ρ‚ΠΎ послС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ врСмя вновь Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ. ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ!

wiki.amperka.ru

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ TM1367 ΠΊ PIC (ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚)

Π Π°Π΄ΠΈΠΎΠšΠΎΡ‚ >Π‘Ρ‚Π°Ρ‚ΡŒΠΈ >

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ TM1367 ΠΊ PIC (ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚)

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ TM1367 ΠΊ PIC (ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚).

НСдавно Ρ€Π΅ΡˆΠΈΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…Π·Π½Π°Ρ‡Π½Ρ‹ΠΉ сСмисСгмСнтный ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ВМ1637 вмСсто Π·Π½Π°ΠΊΠΎΡΠΈΠ½Ρ‚Π΅Π·ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ Π–ΠšΠ˜ Π½Π° Π±Π°Π·Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° HD44780.
ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ получаСтся дСшСвлС, ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΠΎΡ€Ρ‚Π°, мСньшС ΠΊΠΎΠΌΠ°Π½Π΄ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ .
Вспомнив, Ρ‡Ρ‚ΠΎ знакомство с Π–ΠšΠ˜ Π½Π° HD44780 Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΎΡΡŒ с просмотра Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ простых ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° ассСмблСрС, Π½Π°Π±Ρ€Π°Π» запрос Π² поисковикС.
Но ΠΎΡ‚Π²Π΅Ρ‚Π° Π½Π° вопрос «ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ TM1637 ΠΊ PIC» Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ». Π”Π΅ΠΉΡ‚Π°ΡˆΠΈΡ‚ микросхСмы ΠΈ ΡΡ‚Π°Ρ‚ΡŒΠΈ с пояснСниями Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ прояснили, Π½ΠΎ слСдуя ΠΈΠΌ, Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ- Ρ‚ΠΎ ΠΏΡƒΡ‚Π°Π»ΠΈΡΡŒ знакомСста, отсутствовали символы ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π»ΡΡ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€. Π’ΠΈΠ΄ΠΈΠΌΠΎ Π½Π΅ всС, каТущССся Π°Π²Ρ‚ΠΎΡ€Π°ΠΌ элСмСнтарным, Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ²ΡˆΠ΅Π³ΠΎΡΡ ΠΊ этой микросхСмС. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ MPLAB я Ρ‚ΠΎΠΆΠ΅ Π½Π΅ нашСл (ΠΈΠ»ΠΈ Π½Π΅ сумСл Π΅ΠΉ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ).
ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ интСрфСйса ВМ1637 ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ символы ΠΏΠΎ-своСму, Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΡƒΡΡΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌΠΈ I2C , Π½Π΅ ΠΏΡ‹Ρ‚Π°ΡΡΡŒ ΠΎΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒ свои Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ . Π’Π°ΠΊ написал ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΊΡƒ Π½Π° ассСмблСрС ΠΈ использовал Π΅Π΅ Π² своСм Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π΅. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ½Π° ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ пригодится для знакомства с ВМ1637 ΠΈΠ»ΠΈ для дСмонстрации физичСского уровня I2C. Π‘ΡƒΠ΄Ρƒ ΠΊΡ€Π°Ρ‚ΠΎΠΊ, считая, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π·Π½Π°ΠΊΠΎΠΌ с ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΌΠΈ ΠΏΠΎ ВМ1637 ΠΈ ΡƒΠΆΠ΅ пытался ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ))).
Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° ΡˆΠΈΠ½Ρƒ DIO ВМ1637 выводятся Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ ΠΏΠΎ 5 Π±Π°ΠΉΡ‚ . Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ этой ΠΆΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ- ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π±Π°ΠΉΡ‚, ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ .140, Π²Ρ‚ΠΎΡ€ΠΎΠΉ, конфигурация .64, Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ, Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ знакомСста; Π΄Π²Π° послСдних Π±Π°ΠΉΡ‚Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ нолями (сСгмСнты Π½Π΅ Π·Π°ΠΆΠΈΠ³Π°ΡŽΡ‚ΡΡ). Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π³Ρ€ΡƒΠΏΠΏΠ° ΠΈΠ· пяти Π±Π°ΠΉΡ‚ содСрТит Π½ΠΎΠΌΠ΅Ρ€ знакомСста ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΈ ΠΊΠΎΠ΄Ρ‹ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Ρ†ΠΈΡ„Ρ€. Π’Ρ‹Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ… происходит синхронно с состояниСм Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ ΡˆΠΈΠ½Ρ‹ CLK- ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π½Π° DIO ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Π½Π° CLK ноль. ΠœΠ΅ΠΆΠ΄Ρƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ Π±Π°ΠΉΡ‚Π°ΠΌΠΈ выдСрТиваСтся ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π² ΠΎΠ΄ΠΈΠ½ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ CLK Π½Π° врСмя ΠΎΡ‚Π²Π΅Ρ‚Π° ACK. Π‘Ρ‚Π°Ρ€Ρ‚ ΠΈ стоп происходит ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ DIO Π½Π° высоком ΡƒΡ€ΠΎΠ²Π½Π΅ CLK. Π’Π°ΠΊΡ‚ΠΎΠ²Ρ‹Π΅ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΡ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠΊΠ²Π°ΠΆΠΈΠ½Π½ΠΎΡΡ‚ΡŒ 2 ΠΈ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ 300мкс. Π’ ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²Π°Ρ… ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΡ‹ Π½Π΅ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Π½Π° ΡˆΠΈΠ½Π°Ρ… ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ рСзисторы ΠΏΠΎ 10 Ком. ΠŸΠΎΡ€Ρ‚Ρ‹ RA4 (CLK) ΠΈ RA5 (DIO) ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΊ Π½ΠΈΠΌ Ρ‡Π΅Ρ€Π΅Π· Ρ€Π°Π·Π²ΡΠ·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Π΄ΠΈΠΎΠ΄Ρ‹ β€œΠ½Π° всякий случай”, Π²Π΄Ρ€ΡƒΠ³ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ Π½ΠΎΠ²ΠΎΠ΅ устройство ΠΏΠΎ своСму ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ выставит Π½Π° ΡˆΠΈΠ½Π°Ρ… ноль ΠΈ Π΄Π²ΡƒΡ…Ρ‚Π°ΠΊΡ‚Π½Ρ‹ΠΉ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΏΠΎΡ€Ρ‚Π° сгорит. Π₯отя ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ частоты CLK Π½Π΅ трСбуСтся, ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ прСрывания ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ Π·Π½Π°ΠΊΠΎΠ². ΠŸΠΎΡ€Ρ‚Ρ‹ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ согласно рисунку 1.


Для дСмонстрации интСрфСйса ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ » Часы «.
МСню ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρ€ΠΈ Ρ€Π΅ΠΆΠΈΠΌΠ°:
— установка часов Π½Π° рисункС 2,


— установка ΠΌΠΈΠ½ΡƒΡ‚ Π½Π° рисункС 3,


— индикация Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° рисункС 4.


Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ВМ1637 Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ PWR. Π’ Π½Π΅ΠΉ создан стСк ΠΈΠ· пяти Π±Π°ΠΉΡ‚ BTR1 — BTR5, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅. Π‘Π°ΠΉΡ‚Ρ‹ синхронно с CLK ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π²ΠΏΡ€Π°Π²ΠΎ ΠΈ ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΊΡ€Π°ΠΉΠ½ΠΈΠΉ Π±ΠΈΡ‚ опрСдСляСт ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π½Π° шинС DIO. ПослС восьми ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π±ΠΈΡ‚ устанавливаСтся высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈ Π½Π΅ дСлаСтся сдвиг Π²ΠΎ врСмя ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚Π°ΠΊΡ‚Π° CLK, ΠΎΡ‚Π²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π½Π° ACK.

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½ΠΈΠΆΠ΅ поясняСтся Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

PWR Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ВМ1637. RA4- CLK, RA5- DIO.
CLOCK Часы, ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΠ΅ пСрСполнСния TMR1
JK ΠΈ PI9_ ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² мСню, ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°
BDPP ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ числа ΠΈΠ· Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎ-Π΄Π΅ΡΡΡ‚ΠΈΡ‡Π½ΡƒΡŽ, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€
RDEP2C ΠΈ IND2C ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΠ±Π°ΠΉΡ‚ΠΎΠ² Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ числа Π² ΠΊΠΎΠ΄Ρ‹ символов, запись ΠΊΠΎΠ΄ΠΎΠ² Π² BTR1 – BTR5. ΠšΠΎΠ΄Ρ‹ сСмисСгмСнтных Ρ†ΠΈΡ„Ρ€ записаны Π² Π•Π•Π  ΠΏΠΎ адрСсам ΠΎΡ‚ 0 Π΄ΠΎ 9 соотвСтствСнно.
KTRI_ ΠΈ C_IND Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Ρ€Π΅Π·Π°Π½Π° ΠΈΠ· Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° (сам ΠΌΠ½ΠΎΠ³ΠΎΡ€Π΅ΠΆΠΈΠΌΠ½Ρ‹ΠΉ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ отличаСтся ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈ Π½Π΅ достоин внимания Π Π°Π΄ΠΈΠΎΠΊΠΎΡ‚ΠΎΠ²), Π² Π½Π΅ΠΉ ΠΌΠ½ΠΎΠ³ΠΎ β€˜β€™Π½Π΅ΠΊΡ€Π°ΡΠΈΠ²Ρ‹Ρ…β€ адрСсов ΠΈ Π»ΠΈΡˆΠ½ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΎΡˆΡƒ Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π½Π° Π½ΠΈΡ… внимания; Ρ†Π΅Π»ΡŒ ΡΡ‚Π°Ρ‚ΡŒΠΈ- ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ интСрфСйса для ВМ1637, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π²ΠΈΠ΄Π΅ нСзамысловатых часов.

Освоив Π²Ρ‹Π²ΠΎΠ΄ Π½Π° дисплСй Ρ†ΠΈΡ„Ρ€, Π½Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈ Π±ΡƒΠΊΠ²Ρ‹ Π² сСмисСгмСнтном Π°Π»Ρ„Π°Π²ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 5.


К соТалСнию, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ LCD1602 , Π² PROTEUS Π½Π΅Ρ‚ эмулятора ВМ1637.
Debugger I2C Π΄Π°Π΅Ρ‚ нСпонятныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ интСрфСйса. Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ логичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€.

На рис.6 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π°Ρ‡Π°Π»ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ,- сначала ΠΊΠΎΠΌΠ°Π½Π΄Π° «Π‘Ρ‚Π°Ρ€Ρ‚», ΠΏΠΎΡ‚ΠΎΠΌ Π±Π°ΠΉΡ‚ 00110001.ΠœΡ‹ ΠΏΠΎΠΌΠ½ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π±ΠΈΡ‚Ρ‹ Π² интСрфСйсС ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ начиная с младшСго, поэтому исходный Π±Π°ΠΉΡ‚ «ΠΏΠ΅Ρ€Π΅Π²Π΅Ρ€Π½ΡƒΡ‚» ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄ 10001100, Ρ‡Ρ‚ΠΎ соотвСтствуСт .140, ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. ΠŸΠΎΡ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π² (Π΅Π΄ΠΈΠ½ΠΈΡ†Π° Π½Π° DIO) Π½Π° врСмя ΠΎΡ‚Π²Π΅Ρ‚Π° ВМ.Π­Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π±Π°ΠΉΡ‚ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ осциллографа (рисунок 7), Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ синхронизации. Π₯отя, Ссли Π½Π΅ΠΏΡ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½ΡƒΠΆΠ½Π° осциллограмма, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свободный ΠΏΠΎΡ€Ρ‚ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° для формирования синхросигнала Π² Π½ΡƒΠΆΠ½ΠΎΠΌ Π±Π°ΠΉΡ‚Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ DIO.

К ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Π² MPLAB ΠΈ PROTEUS’С.
Π’ΠΎΡ‚ Ρ‚Π°ΠΊ я ΠΎΡ‚ΠΊΡ€Ρ‹Π» для сСбя Π½Π΅Π΄ΠΎΡ€ΠΎΠ³ΠΎΠΉ ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈ поупраТнялся Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ счСтС.

Π€Π°ΠΉΠ»Ρ‹:
ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π² Proteus
ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π² MPLAB

ВсС вопросы Π² Π€ΠΎΡ€ΡƒΠΌ.


Как Π²Π°ΠΌ эта ΡΡ‚Π°Ρ‚ΡŒΡ?

Π—Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Π»ΠΈ это устройство Ρƒ вас?

www.radiokot.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *