Π”ΠΈΠΏΠ»ΠΎΠΌ, курсовая, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°
ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° устройства для элСктросна

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

БрСдняя Ρ‚ΠΎΡ‡ΠΊΠ° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ рСзистора — W; ΠΊΡ€Π°ΠΉΠ½ΠΈΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ — A, B. ΠŸΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» срСднСй Ρ‚ΠΎΡ‡ΠΊΠΈ опрСдСляСтся ΠΊΠ°ΠΊ: VW = (VA-VB)Β· pos/256, Π³Π΄Π΅ pos — позиция ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€Π°, отправляСтся Π½Π° ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€ ΠΏΠΎ ΡˆΠΈΠ½Π΅ I2C. Π’ Π΄Π°Π½Π½ΠΎΠΉ схСмС для удобства управлСния Π²Ρ‹Π²ΠΎΠ΄ B ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΊ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Ρƒ, Π²Ρ‹Π²ΠΎΠ΄ A — ΠΊ Π½Π°ΠΏΡ€ΡΠΆΠ΅Π½ΠΈΡŽ питания +5 Π’ΠΎΠ»ΡŒΡ‚. Π’Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ΅ сопротивлСниС Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€Π° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ порядок Ρ‡Ρ‚ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ΅… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° устройства для элСктросна (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° устройства для элСктросна

1. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ схСмы ΠΏΡ€ΠΈΠ±ΠΎΡ€Π°

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° напряТСниС схСма

На ΠΎΡΠ½ΠΎΠ²Π΅ постановки Π·Π°Π΄Π°Ρ‡ΠΈ с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΡƒΡŽ схСму устройства.

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ слСдуСт Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ схСму управляСмого Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ‚ΠΎΠΊΠ° — источника Ρ‚ΠΎΠΊΠ° управляСмого напряТСниСм (ИВУН). Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ‚ΠΎΠΊΠ° Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ достаточно ΠΏΡ€Π΅Ρ†ΠΈΠ·ΠΈΠΎΠ½Π½Ρ‹ΠΌ. НапряТСниС стимуляции ΠΏΡ€ΠΈ любом Π·Π°Π΄Π°Π½Π½ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ Ρ‚ΠΎΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎ 20 Π’ΠΎΠ»ΡŒΡ‚, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π² ΡƒΡΡ‚ройствС Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ прСдусмотрСн Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹ΠΉ источник питания Π½Π° Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ напряТСния, которая нСсколько ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ. Для питания схСмы источника Ρ‚ΠΎΠΊΠ° Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π’Π˜Π­ΠŸ Π½Π° 24 Π’ΠΎΠ»ΡŒΡ‚Π°. Π“Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡˆΠΈΡ€ΠΎΡ‚Π½ΠΎ-ΠΈΠΌΠΏΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ модулятора (PWM). ЗначСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ Π² ΡΠ½Π΅Ρ€Π³ΠΎΠ½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΉ памяти ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ΅ ΠΈ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ питания, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π² ΡƒΡΡ‚ройствС Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ прСдусмотрСн Π±Π»ΠΎΠΊ энСргонСзависимой памяти — Π ΠŸΠ—Π£. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ ΡΠΎΡΡ‚ояния Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½ΠΎ-Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ LCD-ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈ Π΄Π°Π½Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ. Π’ ΡΡ…Π΅ΠΌΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ прСдусмотрСны ΠΊΠ½ΠΎΠΏΠΊΠΈ управлСния стимуляциСй: «+» ΠΈ «-» — для Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², «param.» — для Π²Ρ‹Π±ΠΎΡ€Π° Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, «gen. — Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ / ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ прСдусмотрСн Π±Π»ΠΎΠΊ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. Π›ΠΎΠ³ΠΈΠΊΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ всСго ΠΏΡ€ΠΈΠ±ΠΎΡ€Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ΅ устройства управлСния. Π£ΠΊΠ°ΠΆΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ устройства управлСния Π² Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ устройствС: 1) ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Ρ‚ΠΎΠΊΠ°: ΠΏΠΎΠ΄Π°Π²Π°Ρ‚ΡŒ пСриодичСскиС ΠΈΠΌΠΏΡƒΠ»ΡŒΡΡ‹ напряТСния, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Ρ‚ΠΎΠΊ, ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Ρ‚ΠΎΠΊΠ°; 2) ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ: ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΊΠ° стимуляции, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ / ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΡΡ‚ΠΈΠΌΡƒΠ»ΡΡ†ΠΈΡŽ; 3) ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ LCD — Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Π½Π΅Π³ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π΅ Ρ‚ΠΎΠΊΠ° стимуляции, ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ самого процСсса стимуляции. Для устройства управлСния, LCD, Π ΠŸΠ—Π£ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ прСдусмотрСн источник питания с Π½Π°ΠΏΡ€ΡΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΠΈΠΆΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ трСбуСтся для источника Ρ‚ΠΎΠΊΠ° — 5 Π’ΠΎΠ»ΡŒΡ‚. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ напряТСния для Ρ€Π°Π·Π½Ρ‹Ρ… частСй схСмы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ стабилизированными. ΠŸΠΈΡ‚Π°Π½ΠΈΠ΅ всСго устройства Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ ΠΎΡ‚ ΡΠ΅Ρ‚ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠΊΠ° 220 Π’ΠΎΠ»ΡŒΡ‚.

На ΠΎΡΠ½ΠΎΠ²Π΅ всСго описанного Π²Ρ‹ΡˆΠ΅ Π±Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ схСма устройства, которая ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 1.

Рисунок 1 — Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ схСма устройства

НСкоторыС обозначСния Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ схСмС: 1) «Π’Π˜Π­ΠŸ 24V», «Π’Π˜Π­ΠŸ 5V» — Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹Π΅ источники элСктропитания Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ напрТСния; 2) ИВУН — источник Ρ‚ΠΎΠΊΠ° управляСмый напряТСниСм. На Π΄Π°Π½Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ ΠΎΡ‚ ΡƒΡΡ‚ройства управлСния подаётся сам ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ сигнал ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ напряТСниС; 3) Π ΠŸΠ—Π£ — энСргонСзависимая ΠΏΠ°ΠΌΡΡ‚ΡŒ.

2. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ схСмы ΠΏΡ€ΠΈΠ±ΠΎΡ€Π°

2.1 Устройство управлСния

Π’ ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ°Π»ΠΎΠ³Π°Π±Π°Ρ€ΠΈΡ‚Π½Ρ‹Ρ… Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… устройствах Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ устройства управлСния ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ (МК). ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ устройства ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ исходят ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… сообраТСний: 1) МК Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ достаточный ΠΎΠ±ΡŠΡ‘ΠΌ памяти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, памяти Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°Π±ΠΎΡ€ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… устройств для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ поставлСнной; 2) рСсурсы ΠœΠš Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ максимально задСйствованы, ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Π΅ устройства Π΄ΠΎΠ»ΠΆΠ½Ρ‹ максимально Π·Π°ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ·Π»Ρ‹ схСмы; 3) Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ являСтся Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… срСдств программирования, ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Ρ†Π΅Π½Π° самого ΠœΠš.

Для выполнСния поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ATTiny2313 Ρ„ΠΈΡ€ΠΌΡ‹ Atmel.

Π£ΠΊΠ°ΠΆΠ΅ΠΌ основныС особСнности Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠœΠš [1]:

— flash-ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠΌ 2 ΠΊΠ‘;

— EEPROM-ΠΏΠ°ΠΌΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠΌ 128 Π±Π°ΠΉΡ‚;

— ΠΎΠΏΠ΅Ρ€Π°Ρ‚ивная ΠΏΠ°ΠΌΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… SRAM ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠΌ 128 Π±Π°ΠΉΡ‚;

— ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Π°Ρ тактовая частота — 20 ΠœΠ“Ρ† ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡ‚ Π²Π½Π΅ΡˆΠ½Π΅Π³ΠΎ ΠΊΠ²Π°Ρ€Ρ†Π΅Π²ΠΎΠ³ΠΎ Ρ€Π΅Π·ΠΎΠ½Π°Ρ‚ΠΎΡ€Π°; 4 ΠΈΠ»ΠΈ 8 ΠœΠ“Ρ† ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°;

— ΠΌΠ°ΠΊΡΠΈΠΌΡƒΠΌ 18 Π»ΠΈΠ½ΠΈΠΉ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° (Ссли PA0/XTAL1, PA1/XTAL2, PA2/Reset сконфигурированы ΠΊΠ°ΠΊ Π»ΠΈΠ½ΠΈΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°), ΠΈΠ½Π°Ρ‡Π΅ 15 Π»ΠΈΠ½ΠΈΠΉ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°;

— Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎ источников Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ: ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡŽ состояния любой Π»ΠΈΠ½ΠΈΠΈ PORTB, прСрывания ΠΏΠΎ PD2, PD3;

— ΠΎΠ΄ΠΈΠ½ Π²ΠΎΡΡŒΠΌΠΈΠ±ΠΈΡ‚Π½Ρ‹ΠΉ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ T0 с Π΄Π²ΡƒΠΌΡ модулями сравнСния;

— ΠΎΠ΄ΠΈΠ½ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΠΈΠ±ΠΈΡ‚Π½Ρ‹ΠΉ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ — T1 с Π΄Π²ΡƒΠΌΡ модулями сравнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ PWM, ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ Π·Π°Ρ…Π²Π°Ρ‚Π°;

— ΠΏΠΎΠ»Π½ΠΎΠ΄ΡƒΠΏΠ»Π΅ΠΊΡΠ½Ρ‹ΠΉ синхронный / асинхронный ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс USART;

— ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс USI;

— Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠ°Ρ€Π°Ρ‚ΠΎΡ€;

— Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ внутрисхСмного ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования ΠΏΠΎ SPI-интСрфСйсу.

ГрафичСскоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π² PDIP-корпусС ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.1.

Рисунок 2.1 — ГрафичСскоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ATTiny2313

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ описания, МК ΠΈΠΌΠ΅Π΅Ρ‚ достаточный ΠΎΠ±ΡŠΡ‘ΠΌ памяти, достаточноС ΠΊΠΎΠ»-Π²ΠΎ Π»ΠΈΠ½ΠΈΠΉ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. ВсС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ схСмы ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ нСпосрСдствСнно ΠΊ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ. А Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π±Π»ΠΎΠΊΠ° «Π ΠŸΠ—Π£» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ встроСнная энСргонСзависимая ΠΏΠ°ΠΌΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… EEPROM.

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС трСбуСтся Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² с Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΠΎ большой Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎ Ρ‡Π°ΡΡ‚ΠΎΡ‚Π΅ ΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈ использовании высокочастотного ΠΊΠ²Π°Ρ€Ρ†Π΅Π²ΠΎΠ³ΠΎ Ρ€Π΅Π·ΠΎΠ½Π°Ρ‚ΠΎΡ€Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠ²Π°Ρ€Ρ†Π΅Π²Ρ‹ΠΉ Ρ€Π΅Π·ΠΎΠ½Π°Ρ‚ΠΎΡ€ Π½Π° Ρ‡Π°ΡΡ‚ΠΎΡ‚Ρƒ Π±Π»ΠΈΠ·ΠΊΡƒΡŽ ΠΊ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ частотС Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° — 16 ΠœΠ“Ρ†.

Fuse-Π±ΠΈΡ‚Ρ‹ ΠœΠš Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: CKSEL3…0=1111 — Ρ‚Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚ Π²Π½Π΅ΡˆΠ½Π΅Π³ΠΎ Π’Π§ ΠΊΠ²Π°Ρ€Ρ†Π΅Π²ΠΎΠ³ΠΎ / кСрамичСского Ρ€Π΅Π·ΠΎΠ½Π°Ρ‚ΠΎΡ€Π°; CKDIV8=1 — Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ частоты Π½Π° 8 ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½; BODLEVEL2…0 = 101 — сброс ΠœΠš ΠΏΡ€ΠΈ сниТСнии напряТСния питания Π΄ΠΎ 2,7 Π’ΠΎΠ»ΡŒΡ‚, для Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ flash ΠΈ EEPROM ΠΎΡ‚ ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΠΎΠ³ΠΎ стирания.

2.2 Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ Ρ‚ΠΎΠΊΠ° управляСмый напряТСниСм

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅ Π±ΡƒΠ΄Π΅Ρ‚ описана Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° источника Ρ‚ΠΎΠΊΠ° управляСмого напряТСниСм — Π±Π»ΠΎΠΊΠ°, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½ сам ΠΊΠ°Π½Π°Π» стимуляции. Π’ Π½Π°Ρ‡Π°Π»Π΅ Π΅Ρ‰Ρ‘ Ρ€Π°Π· ΡƒΠΊΠ°ΠΆΠ΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ стимуляции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ управляСмого источника Ρ‚ΠΎΠΊΠ°. Π’ΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0,2 Π΄ΠΎ 3 мА Ρ ΡˆΠ°Π³ΠΎΠΌ 0,2 мА, ΠΈΠΌΠΏΡƒΠ»ΡŒΡΡ‹ Ρ‚ΠΎΠΊΠ° — однополярныС, напряТСниС стимуляции Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ Π΄ΠΎ 20 Π’ΠΎΠ»ΡŒΡ‚ ΠΏΡ€ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΉ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π΅ Ρ‚ΠΎΠΊΠ°.

Π Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ источник Ρ‚ΠΎΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Ρ‚ранзисторах. Но Ρ‚ранзистор являСтся Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΌ элСмСнтом, ΠΈ Π΅Π³ΠΎ характСристики сильно зависят ΠΎΡ‚ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹. По ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ источник Ρ‚ΠΎΠΊΠ° Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… усилитСлях. Бтруктурная схСма Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ‚ΠΎΠΊΠ° Π½Π° ΠžΠ£ со ΡΠ»Π΅Π΄ΡΡ‰Π΅ΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ООБ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.2.

Рисунок 2.2 — Бтруктурная схСма Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ‚ΠΎΠΊΠ° Π½Π° ΠžΠ£ со ΡΠ»Π΅Π΄ΡΡ‰Π΅ΠΉ ООБ

Π£ΠΊΠ°ΠΆΠ΅ΠΌ обозначСния Π² ΡΡ…Π΅ΠΌΠ΅ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.2: OP1 — Ρ‚ΠΎΠΊΠΎΠ·Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ ΠžΠ£; OP2 — нСкоторая схСма Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ усилитСля, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь; Ri — Ρ‚ΠΎΠΊΠΎΠ·Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ рСзистор; RΠ½ — сопротивлСниС Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

ОпишСм ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π°Π½Π½ΠΎΠΉ схСмы. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ Ссли ΠžΠ£ Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ с ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связью, ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Ρ‹ Π½Π° Π²Ρ…ΠΎΠ΄Π°Ρ… ΠžΠ£ стрСмятся Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π½Ρ‹ΠΌΠΈ, Ρ‚. Π΅. ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» Π½Π° ΠΈΠ½Π²Π΅Ρ€ΡΠ½ΠΎΠΌ Π²Ρ…ΠΎΠ΄Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π΅Π½ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Ρƒ Π½Π° Π½Π΅ΠΈΠ½Π²Π΅Ρ€ΡΠ½ΠΎΠΌ, Ρ‚. Π΅. ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Ρƒ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ ΠœΠš. Π”ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡΠΈΠ»ΠΈΡ‚Π΅Π»ΡŒ OP2 усиливаСт ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ напряТСния Π½Π° Ρ‚ΠΎΠΊΠΎΠ·Π°Π΄Π°ΡŽΡ‰Π΅ΠΌ рСзисторС Ri Π΄ΠΎ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ UΠ²Ρ…:

(2.1)

Π³Π΄Π΅ G — коэффициСнт усилСния Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ усилитСля.

ПадСниС напряТСниС Π½Π° Ri рассчитываСтся ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅:

(2.2)

Π³Π΄Π΅ IRi — Ρ‚ΠΎΠΊ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΠΊΠΎΠ·Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ рСзистор Ri, ΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ΅ сопротивлСниС Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ усилитСля ΠΎΡ‡Π΅Π½ΡŒ большоС, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠΊ IRi соотвСтствуСт Ρ‚ΠΎΠΊΡƒ Ρ‡Π΅Ρ€Π΅Π· Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ IΠ½.

ΠŸΠΎΠ΄ΡΡ‚Π°Π²ΠΈΠ² (2.2) Π² (2.1) ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ:

(2.3)

ΠžΡ‚ΡΡŽΠ΄Π° Ρ‚ΠΎΠΊ Ρ‡Π΅Ρ€Π΅Π· рСзистор:

(2.4)

Как Π²ΠΈΠ΄ΠΈΠΌ ΠΈΠ· ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ (2.4), Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ источник Ρ‚ΠΎΠΊΠ°, Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Ρ‚ΠΎΠΊΠ° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ прямо ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π° Π²Ρ…ΠΎΠ΄Π½ΠΎΠΌΡƒ Π½Π°ΠΏΡ€ΡΠΆΠ΅Π½ΠΈΡŽ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π° ΡΠΎΠΏΡ€ΠΎΡ‚ΠΈΠ²Π»Π΅Π½ΠΈΡŽ Ρ‚ΠΎΠΊΠΎΠ·Π°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ рСзистора. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ…ΠΎΠ΄ Π΄Π°Π½Π½ΠΎΠΉ схСмы ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ нСпосрСдствСнно ΠΊ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ МК, Ρ‚ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ΅ напряТСниС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ 2 уровня: ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ логичСского нуля — ΠΎΠΊΠΎΠ»ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π° Π·Π΅ΠΌΠ»ΠΈ ΠΈ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ логичСской Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ — Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠΊΠΎΠ»ΠΎ 5 Π’ΠΎΠ»ΡŒΡ‚. Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· ΡΡ‚ΠΈΡ… сообраТСний ΠΈ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ дальнСйшиС расчёты.

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ΅ напряТСниС схСмы ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 2 уровня, Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚авлСнная Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.2 схСма ΠΈΠΌΠ΅Π΅Ρ‚ сущСствСнный нСдостаток: Π΄Π°Π½Π½Ρ‹ΠΉ источник Ρ‚ΠΎΠΊΠ° Π½Π΅Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ.

Π£ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΡƒΠ΅ΠΌ схСму Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.2 с Ρ†Π΅Π»ΡŒΡŽ получСния Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ источника Ρ‚ΠΎΠΊΠ°. Π£ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ схСмы прСдставлСн Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.3.

Рисунок 2.3 — Бтруктурная схСма Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ источника Ρ‚ΠΎΠΊΠ°

Π’ ΡΠ»ΡƒΡ‡Π°Π΅ схСмы Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.3 ΡƒΡΠΈΠ»ΠΈΡ‚Π΅Π»ΡŒ OP2 усиливаСт ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠΏΠΎΡ€Π½ΠΎΠ³ΠΎ напряТСния Uref.

Π€ΠΎΡ€ΠΌΡƒΠ»Π° (2.3) для Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ напряТСния Π² ΡΡ‚ΠΎΠΌ случаС ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π²ΠΈΠ΄:

(2.5)

ΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° для Ρ‚ΠΎΠΊΠ° Ρ‡Π΅Ρ€Π΅Π· Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ:

(2.6)

Как Π²ΠΈΠ΄ΠΈΠΌ ΠΈΠ· (2.6), Ρ‡Π΅ΠΌ большСС ΠΎΠΏΠΎΡ€Π½ΠΎΠ΅ напряТСниС усилитСля OP2, Ρ‚Π΅ΠΌ мСньшС Ρ‚ΠΎΠΊ Ρ‡Π΅Ρ€Π΅Π· Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ. ΠŸΡ€ΠΈ Uref = 0 Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° (2.6) сводится ΠΊ Π²ΠΈΠ΄Ρƒ (2.4), Ρ‚. Π΅. Π² ΡΡ‚ΠΎΠΌ случаС Π±ΡƒΠ΄Π΅Ρ‚ максимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ Ρ‚ΠΎΠΊ Ρ‡Π΅Ρ€Π΅Π· Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ. ΠŸΡ€ΠΈ Uref = UΠ²Ρ… = 5 Π’ΠΎΠ»ΡŒΡ‚ Ρ‚ΠΎΠΊ Ρ‡Π΅Ρ€Π΅Π· Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ.

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ нСпосрСдствСнно ΠΊ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ схСмС источника Ρ‚ΠΎΠΊΠ°. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Π°Ρ схСма ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.4.

Рисунок 2.4 — ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Π°Ρ схСма источника Ρ‚ΠΎΠΊΠ°

Π”ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡΠΈΠ»ΠΈΡ‚Π΅Π»ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… усилитСлях OP2, OP2 ΠΈ Ρ€Π΅Π·ΠΈΡΡ‚ΠΎΡ€Π°Ρ… Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Ρ… Π² ΠΈΡ… ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь. ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π² Π΄Π°Π½Π½ΠΎΠΌ случаС для упрощСния расчётов Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях рСзисторы ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π²Π½Ρ‹Π΅ Π½ΠΎΠΌΠΈΠ½Π°Π»Ρ‹ — Π½Π° ΡΡ…Π΅ΠΌΠ΅ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.4 ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ рСзисторы ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ обозначСния. ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ усилСния Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ усилитСля, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… элСмСнтах, рассчитываСтся ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅:

(2.7)

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ минимальноС ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ напряТСниС Π½Π° Ρ‚ΠΎΠΊΠΎΠ·Π°Π΄Π°ΡŽΡ‰Π΅ΠΌ рСзисторС, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ максимальноС ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π½Π° Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ Π΅Π³ΠΎ коэффициСнт усилСния Π·Π° ΡΡ‡Ρ‘Ρ‚ ΠΏΠΎΠ΄Π±ΠΎΡ€Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π½ΠΎΠΌΠΈΠ½Π°Π»ΠΎΠ² рСзисторов. Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ коэффициСнт усилСния G=10. Для обСспСчСния ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ коэффициСнта усилСния ΠΈΠ· ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ³ΠΎ ряда Π½ΠΎΠΌΠΈΠ½Π°Π»ΠΎΠ² рСзисторов Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ значСния: R1 = 20 кОм, R2 = 180 кОм.

РассчитаСм Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΊΠΎΠ·Π°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ рСзистора для максимально Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ Ρ‚ΠΎΠΊΠ° 3 мА.

Из Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ (2.4) Π²Ρ‹Ρ€Π°Π·ΠΈΠΌ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ рСзистора Ri для Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠΊΠ°:

(2.8)

ΠŸΠΎΠ΄ΡΡ‚Π°Π²ΠΈΠ² Π² (2.8) UΠ²Ρ… = 5 Π’, IRi = 3 мА, G = 10 Π½Π°ΠΉΠ΄Ρ‘ΠΌ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΊΠΎΠ·Π°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ рСзистора: Ri? 167 Ом. Из ΠΏΡ€Π΅Ρ†ΠΈΠ·ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ряда Π½ΠΎΠΌΠΈΠ½Π°Π»ΠΎΠ² рСзисторов E96 Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ блиТайший ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ: Ri = 165 Ом.

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… слСдуСт Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ трСбованиям ΠΏΠΎ Π½Π°ΠΏΡ€ΡΠΆΠ΅Π½ΠΈΡŽ питания, частотС, ΠΈ Ρ‚. Π΄. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ усилитСлСй Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ микросхСмы ΠΏΡ€Π΅Ρ†ΠΈΠ·ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… усилитСлСй OPA277, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ основными ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ [3]: напряТСниС смСщСния: 10 ΠΌΠΊΠ’; Π΄Ρ€Π΅ΠΉΡ„ нуля: 0,1 ΠΌΠΊΠ’/Β°C; Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ‚ΠΎΠΊ: 1 нА; максимальная рабочая частота: 1 ΠœΠ“Ρ†; максимальноС напряТСниС питания ΠΏΡ€ΠΈ однополярном ΠΏΠΈΡ‚Π°Π½ΠΈΠΈ: 36 Π’ΠΎΠ»ΡŒΡ‚.

Π”Π°Π»Π΅Π΅ рассмотрим схСму Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΎΠΏΠΎΡ€Π½ΠΎΠ³ΠΎ напряТСния Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ усилитСля. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ элСмСнта Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€. Но Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ схСма с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, Ρ‚ΠΎ ΠΏΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ, Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€Π° с Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹ΠΌ интСрфСйсом управлСния ΠΎΡ‚ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°.

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ микросхСмы Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ микросхСму AD5241BR100 Ρ„ΠΈΡ€ΠΌΡ‹ Analog Devices. Данная микросхСма управляСтся ΠΏΠΎ ΡˆΠΈΠ½Π΅ I2C, ΠΈΠΌΠ΅Π΅Ρ‚ сопротивлСниС ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌΠΈ 100 кОм, 256 ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ для Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠΈ. Бтруктурная схСма микросхСмы Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€Π° ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.5.

Рисунок 2.5 — Бтруктурная схСма микросхСмы Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€Π° AD5290BR100

Как Π²ΠΈΠ΄ΠΈΠΌ ΠΈΠ· ΡΡ…Π΅ΠΌΡ‹, микросхСма ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π² ΡΠ²ΠΎΡ‘ΠΌ составС 2 Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния: O1, O2, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС эти Π»ΠΈΠ½ΠΈΠΈ Π½Π΅ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Π½Ρ‹. Π’Π°ΠΊΠΆΠ΅ микросхСма ΠΈΠΌΠ΅Π΅Ρ‚ 2 адрСсных Π²Ρ…ΠΎΠ΄Π°: AD0, AD1, Ρ‚. Π΅. Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ примСнСния Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅ Π΄ΠΎ Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ… Ρ‚Π°ΠΊΠΈΡ… микросхСм. Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ…ΠΎΠ΄ SHDN, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ практичСски ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ микросхСму ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π°Ρ‡Π΅ Π½Π° Π½Π΅Π³ΠΎ напряТСния Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ логичСского уровня — Ρ‚ΠΎΠΊ потрСблСния сниТаСтся Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΈΠΊΡ€ΠΎΠ°ΠΌΠΏΠ΅Ρ€, W Π·Π°ΠΌΡ‹ΠΊΠ°Π΅Ρ‚ся с B.

БрСдняя Ρ‚ΠΎΡ‡ΠΊΠ° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ рСзистора — W; ΠΊΡ€Π°ΠΉΠ½ΠΈΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ — A, B. ΠŸΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» срСднСй Ρ‚ΠΎΡ‡ΠΊΠΈ опрСдСляСтся ΠΊΠ°ΠΊ: VW = (VA-VB)Β· pos/256, Π³Π΄Π΅ pos — позиция ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€Π°, отправляСтся Π½Π° ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€ ΠΏΠΎ ΡˆΠΈΠ½Π΅ I2C. Π’ Π΄Π°Π½Π½ΠΎΠΉ схСмС для удобства управлСния Π²Ρ‹Π²ΠΎΠ΄ B ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΊ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Ρƒ, Π²Ρ‹Π²ΠΎΠ΄ A — ΠΊ Π½Π°ΠΏΡ€ΡΠΆΠ΅Π½ΠΈΡŽ питания +5 Π’ΠΎΠ»ΡŒΡ‚. Π’Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ΅ сопротивлСниС Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€Π° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ порядок Ρ‡Ρ‚ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ΅ сопротивлСниС Π²Ρ…ΠΎΠ΄Π° ΠΎΠΏΠΎΡ€Π½ΠΎΠ³ΠΎ напряТСния Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ усилитСля, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ссли Π²Ρ‹Ρ…ΠΎΠ΄ W ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΊ Π²Ρ…ΠΎΠ΄Ρƒ ΠΎΠΏΠΎΡ€Π½ΠΎΠ³ΠΎ напряТСния, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠ½ΠΎΠ΅ влияниС ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€Π° ΠΈ Π²Ρ…ΠΎΠ΄Π° усилитСля. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° развязка Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€Π° с Π²Ρ…ΠΎΠ΄ΠΎΠΌ ΠΎΠΏΠΎΡ€Π½ΠΎΠ³ΠΎ напряТСния усилитСля. Развязку Π»ΡƒΡ‡ΡˆΠ΅ всСго Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΡƒΡΠΈΠ»ΠΈΡ‚Π΅Π»ΡŒ, Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹ΠΉ ΠΏΠΎ ΡΡ…Π΅ΠΌΠ΅ Π½Π΅ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ повторитСля ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ W ΠΈ Π²Ρ…ΠΎΠ΄ΠΎΠΌ ΠΎΠΏΠΎΡ€Π½ΠΎΠ³ΠΎ напряТСния.

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

Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Π² ΡƒΡΡ‚ройствС для управлСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ прСдусмотрСны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ: ΠΊΠ½ΠΎΠΏΠΊΠ° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ / ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ «gen», ΠΊΠ½ΠΎΠΏΠΊΠ° Π²Ρ‹Π±ΠΎΡ€Π° Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° «param.», ΠΊΠ½ΠΎΠΏΠΊΠΈ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠΈ Ρ‚ΠΎΠΊΠ° стимуляции «+» ΠΈ «-».

Выбранная модСль ΠœΠš ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… рСзисторов Π½Π° Π»ΡŽΠ±ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. ΠŸΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ рСзистора ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠ½ΠΎΠΏΠΊΠΈ — ΠΊ Π»ΠΈΠ½ΠΈΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ — ΠΊ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Ρƒ. Π’ ΡΡ‚ΠΎΠΌ случаС ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ состояния Π»ΠΈΠ½ΠΈΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, Ссли ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΎΡ‚ΠΏΡƒΡ‰Π΅Π½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π° «1», Ссли Π½Π°ΠΆΠ°Ρ‚Π° — «0». Кнопки ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ линиям Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°: ΠΊΠ½ΠΎΠΏΠΊΠ° «gen.» — PB0; ΠΊΠ½ΠΎΠΏΠΊΠ° «param.» — PB1; ΠΊΠ½ΠΎΠΏΠΊΠ° «+» — PB2; ΠΊΠ½ΠΎΠΏΠΊΠ° «-» — PB3.

2.4 Устройство ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ

Π’ Π·Π°Π΄Π°Π½ΠΈΠΈ Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ устройства ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ LCD-ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π½Π΅ Ρ‚рСбуСтся Π²Ρ‹Π²ΠΎΠ΄Π° большого количСства ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, поэтому достаточно Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½ΠΎ-Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ LCD-ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ с Ρ‡ΠΈΡΠ»ΠΎΠΌ знакомСст 16×2.

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½ΠΎ-Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ LCD-ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ LM016L Ρ„ΠΈΡ€ΠΌΡ‹ Hitachi. Π’Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ основными особСнностями:

— Ρ‡ΠΈΡΠ»ΠΎ знакомСст: 16×2;

— Π·Π½Π°ΠΊΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€: английский, СвропСйский;

— Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ LCD HD44780 [5];

— Π½Π°ΠΏΡ€ΡΠΆΠ΅Π½ΠΈΠ΅ питания: 5 Π’ΠΎΠ»ΡŒΡ‚;

— ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ напряТСниС Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠΈ контрастности, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ Ρ‚рСбуСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ источника ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ напряТСния. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄Π° Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠΈ контрастности V0 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.5.

Рисунок 2.5 — ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄Π° Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠΈ контрастности LCD — ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°

Π’ ΡΡ…Π΅ΠΌΠ΅ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.5 рСзисторы R, VR Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½ΠΎΠΌΠΈΠ½Π°Π»Ρ‹ 10…22 кОм. ΠŸΠΎΠ΄ΡΡ‚Ρ€ΠΎΠ΅Ρ‡Π½Ρ‹ΠΉ рСзистор VR, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, рСгулируСтся ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ, послС сборки устройства.

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 2.1 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ² ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΈ ΠΈΡ… ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² ΡΡ…Π΅ΠΌΠ΅.

Π’Π°Π±Π»ΠΈΡ†Π° 2.1 — НазначСниС ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ² ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°

β„–

НазваниС

НазначСниС Π²Ρ‹Π²ΠΎΠ΄Π° Π² ΡΡ…Π΅ΠΌΠ΅

Vss

ΠžΠ±Ρ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ²ΠΎΠ΄

Vdd

Π’Ρ‹Π²ΠΎΠ΄ питания

V0

Π’Ρ‹Π²ΠΎΠ΄ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠΈ контрастности. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.5

RS

Π’Ρ…ΠΎΠ΄ управлСния LCD — Π²Ρ‹Π±ΠΎΡ€ рСгистра, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½ ΠΊ Π»ΠΈΠ½ΠΈΠΈ PD1 ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°

R/W

Π’Ρ…ΠΎΠ΄ Π²Ρ‹Π±ΠΎΡ€Π° направлСния ΡˆΠΈΠ½Ρ‹ LCD (запись / Ρ‡Ρ‚Π΅Π½ΠΈΠ΅), Π² Π΄Π°Π½Π½ΠΎΠΌ случаС примСняСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, поэтому Π²Ρ‹Π²ΠΎΠ΄ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΊ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Ρƒ

E

Π’Ρ…ΠΎΠ΄ стробирования LCD. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½ ΠΊ Π»ΠΈΠ½ΠΈΠΈ PD2

7…14

DB0…DB7

Π¨ΠΈΠ½Π° Π΄Π°Π½Π½Ρ‹Ρ… LCD-ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΠΎ Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ…Π±ΠΈΡ‚Π½ΠΎΠΌΡƒ интСрфСйсу ΠΊ Π»ΠΈΠ½ΠΈΡΠΌ PD3… PD6 ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°

Богласно Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ производитСля [5], ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ / Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° LCD ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ дСйствий:

1) устанавливаСм Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ логичСский ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π½Π° Π»ΠΈΠ½ΠΈΠΈ RS (PD1): «0» — ΠΊΠΎΠΌΠ°Π½Π΄Π°, «1» — Π΄Π°Π½Π½Ρ‹Π΅;

2) Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π² Π»ΠΈΠ½ΠΈΠΈ PD6… PD3 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡƒΠ±Π°ΠΉΡ‚Π°;

3) Π½Π° Π»ΠΈΠ½ΠΈΠΈ E (PD2) Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ ΡΠΈΠ½Ρ…Ρ€ΠΎΠΈΠΌΠΏΡƒΠ»ΡŒΡ «0"> «1"> «0»;

4) Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π² Π»ΠΈΠ½ΠΈΠΈ PD6… PD3 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ младшСго ΠΏΠΎΠ»ΡƒΠ±Π°ΠΉΡ‚Π°;

5) Π½Π° Π»ΠΈΠ½ΠΈΠΈ E (PD2) Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ ΡΠΈΠ½Ρ…Ρ€ΠΎΠΈΠΌΠΏΡƒΠ»ΡŒΡ «0"> «1"> «0»;

6) Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ порядка 64 мкс Π² ΡΠ»ΡƒΡ‡Π°Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π»ΡŽΠ±Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²ΡΠ΅Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ очистки ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° = 0×01, ΠΈ 1,5 мс Π² ΡΠ»ΡƒΡ‡Π°Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ очистки ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°.

2.5 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° схСмы питания

ΠŸΠΈΡ‚Π°Π½ΠΈΠ΅ всСго устройства осущСствляСтся ΠΎΡ‚ ΡΠ΅Ρ‚ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠΊΠ° 220 Π’ΠΎΠ»ΡŒΡ‚, Π° Π΄Π»Ρ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² устройства Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ постоянного стабилизированного напряТСния питания: 24 Π’ΠΎΠ»ΡŒΡ‚Π° для схСмы источника Ρ‚ΠΎΠΊΠ° ΠΈ 5 Π’ΠΎΠ»ΡŒΡ‚ для Π΄Ρ€ΡƒΠ³ΠΈΡ… частСй схСмы. Для Ρ‚Π΅Ρ… частСй схСмы, Π³Π΄Π΅ трСбуСтся 5 Π’ΠΎΠ»ΡŒΡ‚ напряТСниС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ максимально стабилизированным. Π‘Ρ…Π΅ΠΌΠ° Π±Π»ΠΎΠΊΠ° питания, которая для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… частСй устройства обСспСчиваСт Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ стабилизированного напряТСния, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.6.

Рисунок 2.6 — Π‘Ρ…Π΅ΠΌΠ° питания устройства Роль стабилизаторов напряТСния Π½Π° 24 Π’ΠΎΠ»ΡŒΡ‚ ΠΈ 5 Π’ΠΎΠ»ΡŒΡ‚ соотвСтствСнно Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π»ΡŒΠ½Ρ‹Π΅ стабилизаторы напряТСния 78L24 ΠΈ 78L05, Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Π΅ ΠΏΠΎ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠΉ схСмС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ: ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ стабилизатора ΠΈ ΠΎΠ±Ρ‰ΠΈΠΌ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΎΠΌ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΡŽΡ‰ΠΈΠ΅ кондСнсаторы. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, напряТСниС 5 Π’ΠΎΠ»ΡŒΡ‚ стабилизируСм Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ LC-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠΌ. Для ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… ΠΏΠΎΡ‚Π΅Ρ€ΡŒ энСргии стабилизаторы Π½Π° 24 ΠΈ 5 Π’ΠΎΠ»ΡŒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ. ΠŸΠΈΡ‚Π°Π½ΠΈΠ΅ ΠΎΡ‚ ΡΠ΅Ρ‚ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠΊΠ° 220 Π’ΠΎΠ»ΡŒΡ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π½Π° ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΡƒΡŽ ΠΎΠ±ΠΌΠΎΡ‚ΠΊΡƒ трансформатора TV1, Π΄Π°Π»Π΅Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ напряТСниС выпрямляСтся Π΄ΠΈΠΎΠ΄Π½Ρ‹ΠΌ мостом VD1-VD4. Богласно трСбованиям ΠΊ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΌΡƒ Π½Π°ΠΏΡ€ΡΠΆΠ΅Π½ΠΈΡŽ микросхСмы 78L24, выпрямлСнноС напряТСниС Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ 35 Π’ΠΎΠ»ΡŒΡ‚, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΡ‡Ρ‚Π΅Π½ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ трансформатора. Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚ΠΎΠΊΠΎΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ всСго устройства ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нСбольшоС, Ρ‚ΠΎ Ρ‚рансформатор TV1 ΠΈ Π΄ΠΈΠΎΠ΄Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ°Π»ΠΎΠΌΠΎΡ‰Π½Ρ‹Π΅.

3. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния

3.1 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ устройств Π½Π° Π±Π°Π·Π΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния для ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ ΠœΠš являСтся Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, Ρ‡Π΅ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ схСмы устройства. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описана Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ Π½Π°Ρ‡Π°Π»Π΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ — ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ питания устройства Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π° инициализация, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° 2 части: 1) инициализация ΠΏΠΎΡ€Ρ‚ΠΎΠ² МК, примСняСмой ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΈ, пСрифСрия инициализируСтся Π² ΡΠΎΠΎΡ‚вСтствии со Π·Π½Π°Ρ‡Π΅Π½ΠΈΡΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· EEPROM; 2) инициализация LCD-ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ…Π±ΠΈΡ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. ΠŸΠΎΡ€Ρ‚Ρ‹ МК Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ настроСны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π›ΠΈΠ½ΠΈΠΈ управлСния LCD: RS — PD1, E — PD2 Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ настроСны Π½Π° Π²Ρ‹Π²ΠΎΠ΄; Π² Π΄Π°Π½Π½ΠΎΠΌ случаС примСняСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹Π²ΠΎΠ΄ Π½Π° LCD с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°ΠΌΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ / Π΄Π°Π½Π½Ρ‹Ρ…, поэтому Π»ΠΈΠ½ΠΈΠΈ МК, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Π΅ ΠΊ Π»ΠΈΠ½ΠΈΡΠΌ Π΄Π°Π½Π½Ρ‹Ρ… LCD PD6… PD3, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ настроСны Π½Π° Π²Ρ‹Π²ΠΎΠ΄. Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Π»ΠΈΠ½ΠΈΠΈ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΊΠ½ΠΎΠΏΠΊΠΈ: PB3… PB0, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ настроСны Π½Π° Π²Π²ΠΎΠ΄ с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ рСзистора. ГСнСрация сигнала для источника Ρ‚ΠΎΠΊΠ° Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ с Π»ΠΈΠ½ΠΈΠΈ ΠΊΠ°Π½Π°Π»Π° PWM PB4/OC1B — ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ данная линия Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ настроСна Π½Π° Π²Ρ‹Π²ΠΎΠ΄. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹ΠΌ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ производится ΠΏΠΎ ΡˆΠΈΠ½Π΅ I2C. Линия ΡΠΈΠ½Ρ…Ρ€ΠΎΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ° I2C (SCL) соотвСтствуСт Π»ΠΈΠ½ΠΈΠΈ PB7 — Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ настроСна Π½Π° Π²Ρ‹Π²ΠΎΠ΄; линия Π΄Π°Π½Π½Ρ‹Ρ… I2C (SDA) Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ настроСна Π½Π° Π²Π²ΠΎΠ΄ Π±Π΅Π· Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ pull-up, ΠΊ Π΄Π°Π½Π½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ внСшний ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΌΠ²Π°ΡŽΡ‰ΠΈΡ‘ рСзистор Π½ΠΎΠΌΠΈΠ½Π°Π»ΠΎΠΌ 10 кОм. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠœΠš отсутствуСт Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΉ интСрфСйс I2C, поэтому ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС для формирования Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹. Для формирования Π·Π°Π΄Π°Π½Π½ΠΎΠΉ частоты сигнала ΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ° Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ T1, для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠ°Π½Π°Π» PWM Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° OC1B. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ частоту, слСдуСт Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°, Π³Π΄Π΅ ΠΎΠ½ ΡΡ‡ΠΈΡ‚Π°Π΅Ρ‚ Π΄ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ рСгистра OCR1A: ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ значСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ рСгистра мСняСм ΠΈ Ρ‡Π°ΡΡ‚ΠΎΡ‚Ρƒ. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя OC1B Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΊΠ°Π½Π°Π» PWM. ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΠΈΠΌ Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° для выполнСния ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… условий являСтся Ρ€Π΅ΠΆΠΈΠΌ Fast PWM с ΠΊΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ΠΎΠΌ дСлСния счётчика Ρ€Π°Π²Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ рСгистра OCR1A: Π±ΠΈΡ‚Ρ‹ WGM13…0 = 1111.

Рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° T1 Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ OCR1A, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для получСния Π΄Π°Π½Π½ΠΎΠΉ частоты рассчитываСм ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅:

(3.1)

Π³Π΄Π΅ CK = 16 MHz — тактовая частота МК, F — частота Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ², F — коэффициСнт дСлСния прСскалСра Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ N ΡΠ»Π΅Π΄ΡƒΠ΅Ρ‚ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ OCR1A Π±Ρ‹Π»ΠΎ мСньшС максимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ значСния = 65 535. Для получСния частот Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ 5…160 Π“Π΅Ρ€Ρ† ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ N Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ 64: Π±ΠΈΡ‚Ρ‹ CS12… CS10 рСгистра TCCR1B = 011. Π’ ΡΡ‚ΠΎΠΌ случаС Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° (3.1) приводится ΠΊ Π²ΠΈΠ΄Ρƒ:

(3.2)

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ ΠœΠš Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π° Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ дСлСния с ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡ‚Π½Ρ‹ΠΌΠΈ числами, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ (3.2) ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ для примСнСния Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠœΠš. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠœΠš ΠΏΡ€ΠΈ расчётах примСняСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ частоты, Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ Π½Π° 5, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π΄ΠΈΡΠΏΠ»Π΅ΠΉ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ частоты. Π’ ΡΡ‚ΠΎΠΌ случаС (3.2) приводится ΠΊ Π²ΠΈΠ΄Ρƒ:

(3.3)

Π³Π΄Π΅ F' = F/5. Π’ ΡΡ‚ΠΎΠΌ случаС для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠœΠš Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ дСлСния Π΄Π²ΡƒΡ…Π±Π°ΠΉΡ‚Π½ΠΎΠ³ΠΎ числа Π½Π° ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡ‚Π½ΠΎΠ΅.

Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, для формирования ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΠΈΡ‚ΠΈ примСняСм ΠΊΠ°Π½Π°Π» PWM OC1B. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ рСгистра OCR1B для формирования Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ„ Ρ€Π°ΡΡΡ‡ΠΈΡ‚ываСтся ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅:

(3.4)

значСния CK ΠΈ N ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Ρ€Π°Π½Π΅Π΅; Ρ„ ΠΏΠΎ Π·Π°Π΄Π°Π½ΠΈΡŽ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡ‚ 0,2 Π΄ΠΎ 0,5 мс Ρ ΡˆΠ°Π³ΠΎΠΌ 0,1 мс, ΠΏΡ€ΠΈ подстановкС Π² (3.4) Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΎ Π² ΡΠ΅ΠΊΡƒΠ½Π΄Π°Ρ…. ΠŸΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… значСниях CK ΠΈ N Π²ΠΎ всём Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ„ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ†Π΅Π»Ρ‹Π΅ значСния OCR1B — ΠΎΡ‚ 50 Π΄ΠΎ 125 с ΡˆΠ°Π³ΠΎΠΌ 25, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΏΠΎ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΡ‹.

Канал PWM ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ / ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π±ΠΈΡ‚ΠΎΠ² Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π΅. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС примСняСм Ρ€Π΅ΠΆΠΈΠΌ Π½Π΅ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ PWM, Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ / ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ установкой / сбросом Π±ΠΈΡ‚Π° COM1B1 Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π΅ TCCR1A.

Для формирования Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ для сканирования ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ примСняСм Ρ‚Π°ΠΉΠΌΠ΅Ρ€ T0 Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅: CTC — ΠΎΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ TCNT0 = OCR0A = 250, F = CK/64. ΠŸΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ прСрывания с ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠΌ 1 мс.

Помимо ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ частоты ΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ‚ΠΎΠΊ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ Π½Π°ΠΏΡ€ΡΠΆΠ΅Π½ΠΈΡ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ W Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€Π°. НапряТСниС Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ W Ρ€Π°ΡΡΡ‡ΠΈΡ‚ываСтся ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅:

(3.5)

Π³Π΄Π΅ pos — позиция Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΡ€ΠΌΠ΅Ρ‚Ρ€Π°.

Π‘ΡƒΠ΄Π΅ΠΌ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ pos=0 Ρ‚ΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ=3 мА, ΠΏΡ€ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ pos=255 Ρ‚ΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ. Π’ ΡΡ‚ΠΎΠΌ случаС для измСнСния Ρ‚ΠΎΠΊΠ° Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ шаг = 0,2 мА ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€Π° трСбуСтся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° 17. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΊΠ°, Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ частоты ΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ читаСтся ΠΈΠ· EEPROM. И Π΄Π°Π»Π΅Π΅, послС чтСния ΠΈΠ· EEPROM рассчитываСтся Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ΄ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π½Π° ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€.

ПослС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ основного Ρ†ΠΈΠΊΠ»Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий: 1) ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ ΠΏΡ€ΠΈΡ…ΠΎΠ΄Π° прСрывания ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ OC1A Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° T0, ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ счётчик ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ; 2) Ссли счётчик ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ = 100 — ΠΏΡ€ΠΎΡˆΠ»ΠΎ 100 мс, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ сканирования ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ «keybscan», ΠΈΠ½Π°Ρ‡Π΅ возвращаСмся ΠΊ ΠΏΡƒΠ½ΠΊΡ‚Ρƒ 1; 3) послС Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ сканирования ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ счётчик 100 мс-ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ². Если счётчик = 100 — Π±ΠΎΠ»Π΅Π΅ 10 с Π½Π΅ Π±Ρ‹Π»ΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ послС измСнСния значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, производится ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π² EEPROM, Π΄Π°Π½Π½Ρ‹ΠΉ счётчик обнуляСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ сканирования ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиш измСнСния значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

На ΠΎΡΠ½ΠΎΠ²Π΅ всСго описанного Π²Ρ‹ΡˆΠ΅ Π±Ρ‹Π» составлСн Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.

Рисунок 3.1 — Алгоритм основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΊ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 3.1: дСйствия ΠΏΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ Π½Π° ΠΊΠ»Π°Π²ΠΈΡˆΠΈ производятся Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ сканирования ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ «keybscan». Но Π΄Π»Ρ наглядности ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ дСйствия Π±Ρ‹Π»ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

3.2 ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹Π΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅ пСрСчислим ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΎ опишСм всС примСняСмыС ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

1) ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для LCD-ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°:

LCD_init — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° стандартной ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ LCD-ΠΈΠ½Π΄ΠΈΠΊΠ°-Ρ‚ΠΎΡ€Π° Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ…Π±ΠΈΡ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ [5];

LCD_sym_gen — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ символа Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ Π·Π½Π°ΠΊΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° LCD. ΠΠ°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ адрСс Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ Π·Π½Π°ΠΊΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° задаётся Π² R16, Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ адрСс Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΊΠΎΠ΄ΠΎΠ² для Π·Π½Π°ΠΊΠ° — Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΎΠ²ΠΎΠΉ ΠΏΠ°Ρ€Π΅ ZH: ZL;

LCD_send_string — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ строки, записанной Π² flash-ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠœΠš. ΠΠ°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ адрСс строки Π² flash опрСдСляСтся рСгистром указатСля Z. Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠ΄ΠΎΠΌ 0×00. ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°Ρ позиция Π½Π° LCD опрСдСляСтся Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π΅ R16;

LCD_send_command — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π½Π° LCD ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, которая опрСдСляСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ записанным Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ R16;

LCD_send_data — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π½Π° LCD Π±Π°ΠΉΡ‚Π° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ записанным Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ R17;

LCD_strobe — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½ΠΈΠΆΠ½Π΅Π³ΠΎ уровня для формирования ΡΠΈΠ½Ρ…Ρ€ΠΎΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ° для LCD;

LCD_strobe_delay — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° формирования ΡΠΈΠ½Ρ…Ρ€ΠΎΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ° LCD с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ, Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ опрСдСляСтся ΠΎΡ‚ΠΏΡ€Π²Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ / Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

2) ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ уровня для ΡˆΠΈΠ½Ρ‹ I2C

I2C_start — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° формирования старт-состояния Π½Π° ΡˆΠΈΠ½Π΅ I2C;

I2C_send — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π±Π°ΠΉΡ‚Π°, содСрТащСгося Π² tmpL (R16) ΠΏΠΎ ΡˆΠΈΠ½Π΅ I2C;

I2C_stop — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° формирования стоп-состояния Π½Π° ΡˆΠΈΠ½Π΅ I2C;

I2C_delay — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ для I2C, вызываСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

3) Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ уровня:

short_delay1 — общая ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ, вызываСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ уровня для LCD ΠΈ I2C.

EERead — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° чтСния Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ tmpL (R16) ΠΈΠ· Π°Π΄Ρ€Π΅ΡΠ° EEPROM, записанного Π² tmpH (R17);

EEWrite — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° записи Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π° tmpL (R16) ΠΏΠΎ Π°Π΄Ρ€Π΅ΡΡƒ EEPROM, записанному Π² tmpH (R17);

div16to8 — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° дСлСния 16-Ρ‚ΠΈ Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ числа Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΎΠ²ΠΎΠΉ ΠΏΠ°Ρ€Π΅ tmpH: tmpL Π½Π° Π²ΠΎΡΡŒΠΌΠΈΠ±ΠΈΡ‚Π½ΠΎΠ΅ Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π΅ divisor (R20): Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ — Π² tmpH: tmpL, остаток — Π² rest (R21);

div10 — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° дСлСния рСгистра tmpL Π½Π° 10: Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΡ‚ Π΄Π΅Π»Π΅Π½ΠΈΡ Π² tmpL, остаток — Π² rest.

4) ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня

set_current — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° установки Ρ‚ΠΎΠΊΠ° Ρ‡Π΅Ρ€Π΅Π· Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° примСняСтся пСрСмСнная Current, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ записано ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΊΠ°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ уровня — mul_to17 ΠΈ set_resistance;

mul_to17 — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° умноТСния ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Ρ‚ΠΎΠΊΠ° Π½Π° 17, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для вычислСния значСния, отправляСмого Π½Π° Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€. ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ записано Π² tmpH;

set_resistance — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° установки ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π° Π² ΡΡ€Π΅Π΄Π½Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€Π°. Код, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π²Π»ΠΈΡ‡ΠΈΠ½Ρƒ напряТСния Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ записан Π² tmpH. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ всС ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ уровня для I2C;

ind_current — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ значСния Ρ‚ΠΎΠΊΠ°: ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΊΠ° ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ записано Π² tmpH;

set_freq — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° установки частоты Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ². Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Freq;

ind_freq — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ частоты. РассчитываСт Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ частоты, Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° LCD. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Freq;

set_width — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° установки Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ° ΠΈ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ width;

Device_init — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠ±Ρ‰Π΅ΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ±ΠΎΡ€Π°. ΠŸΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ питания считываСт ΠΈΠ· EEPROM значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², пСрСзаписываСт Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ячСйки памяти Π² SRAM, Π² ΡΠΎΠΎΡ‚вСтствии со ΡΡ‡ΠΈΡ‚Π°Π½Π½Ρ‹ΠΌΠΈ значСниями ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ T1 ΠΏΡ€ΠΈΠ±ΠΎΡ€Π° — частота ΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€ — Ρ‚ΠΎΠΊ;

keybscan — ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сканирования ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. Π‘ΠΊΠ°Π½ΠΈΡ€ΡƒΠ΅Ρ‚ Π»ΠΈΠ½ΠΈΠΈ клавиш PB0… PB3, Π² ΡΠ»ΡƒΡ‡Π°Π΅ Ссли какая-Π»ΠΈΠ±ΠΎ клавиша Π½Π°ΠΆΠ°Ρ‚Π°, ΠΈ Π½Π΅ Π±Ρ‹Π»ΠΎ наТатия ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ сканировании, выполняСт дСйствия Π² ΡΠΎΠΎΡ‚вСтствии с Ρ„ункциями этой клавиши;

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

Π’ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Π±Ρ‹Π»ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ простоС устройство для элСктросна. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ устройство обСспСчиваСт элСктросон воздСйствиСм Π½Π° Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΌΠΎΠ·Π³ пСриодичСскими ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°ΠΌΠΈ Ρ‚ΠΎΠΊΠ° Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ с Π½Π°ΠΏΡ€ΡΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎ 20 Π’ΠΎΠ»ΡŒΡ‚. Π’ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΌ устройствС Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: 1) Ρ‚ΠΎΠΊ воздСйствия — ΠΎΡ‚ 0 Π΄ΠΎ 3 мА Ρ ΡˆΠ°Π³ΠΎΠΌ 0,2 мА; 2) частота слСдования ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² Ρ‚ΠΎΠΊΠ° — ΠΎΡ‚ 5 Π΄ΠΎ 160 Π“Π΅Ρ€Ρ† с ΡˆΠ°Π³ΠΎΠΌ 5 Π“Π΅Ρ€Ρ†; 3) Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² Ρ‚ΠΎΠΊΠ° — ΠΎΡ‚ 0,2 Π΄ΠΎ 0,5 мс Ρ ΡˆΠ°Π³ΠΎΠΌ 0,1 мс. ВсС ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² ΡΠ½Π΅Ρ€Π³ΠΎΠ½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΉ памяти устройства. Для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ / ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² прСдусмотрСна отдСлтная ΠΊΠ½ΠΎΠΏΠΊΠ°.

ΠŸΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ ссылок

1. ATMega8 Datasheet — 8bit AVR RISC microcontroller

2. П. Π₯ΠΎΡ€ΠΎΠ²ΠΈΡ†, Π£. Π₯ΠΈΠ»Π» Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ схСмотСхники, Ρ‚ΠΎΠΌ 1 — ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ 3-Π΅, стСрСотипноС — Π² Π΄Π²ΡƒΡ… Ρ‚ΠΎΠΌΠ°Ρ… с Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ — Москва «ΠœΠΈΡ€», 1986

3. OPA277 Datasheet — High precision operational amplifier

4. AD5241_5242 — I2C compatible 256-positions digital potentiometers

5. HD44780 — 16COM / 40SEG Driver and controller for DOT matrix LCD

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

ВСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

include «tn2313def.inc»

def ZERO = R15

def tmpL = R16

def tmpH = R17

def cnt1 = R18

def cnt2 = R19

def divisor = R20

def rest = R21

def T0_int_countL = R22

def T0_int_countH = R23

def predvalue = R24

def Maxvalue = R25

; port lines

equ key_stim = PORTB0

equ key_param = PORTB1

equ key_plus = PORTB2

equ key_minus = PORTB3

equ stim_line = PORTB4

equ SDA = PORTB5

equ SCL = PORTB7

equ LCD_RS_line = PORTD1

equ LCD_E_line = PORTD2

equ Device_adr = 0×58

equ keypressed = 0

ESEG

org 0×20

EEFreq: .BYTE 1

EEWidth: .BYTE 1

EECurrent: .BYTE 1

DSEG

Freq: .BYTE 1

Width: .BYTE 1

Current: .BYTE 1

Menu_pos: .BYTE 1

DigBuf: .BYTE 3

flags: .BYTE 1

; Π‘Π•Π“ΠœΠ•ΠΠ’ ΠšΠžΠ”Π

CSEG

rjmp init; Π²Π΅ΠΊΡ‚ΠΎΡ€ сброса, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

reti

reti

reti

reti

reti

reti

reti

reti

reti

reti

reti

reti

rjmp T0_COMPA_handle;

Π²Π΅ΠΊΡ‚ΠΎΡ€ прСрывания ΠΏΠΎ ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π½ΠΈΡŽ модуля OC0A Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° T0, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ прСрывания

reti

reti

reti

reti

reti

init: ldi tmpL, low (RAMEND)

out SPL, tmpL; инициализация стСка

; инициализация ΠΏΠΎΡ€Ρ‚ΠΎΠ²

ldi tmpL, 1<<<<<

out PORTB, tmpL

ldi tmpL, 1<<

out DDRB, tmpL

ser tmpL

out DDRD, tmpL

; ΠΎΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅ счётчиков

clr T0_int_countL

clr T0_int_countH

clr ZERO

sts flags, ZERO; ΠΎΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅ рСгистра Ρ„Π»Π°Π³ΠΎΠ²

sts Menu_pos, ZERO; ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ мСню

rcall LCD_init; Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ LCD — стандартная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ…Π±ΠΈΡ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅

clr tmpL

ldi ZH, high (sym_right<<1)

ldi ZL, low (sym_right<<1)

rcall LCD_sym_gen; Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ символа стрСлки Π²ΠΏΡ€Π°Π²ΠΎ Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ Π·Π½Π°ΠΊΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° LCD ΠΏΠΎ Π°Π΄Ρ€Π΅ΡΡƒ Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ Π·Π½Π°ΠΊΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° = 0×40

rcall Device_init; Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ мСню ΠΏΡ€ΠΈΠ±ΠΎΡ€Π°

ldi tmpL, 1<<

out TCCR1A, tmpL

ldi tmpL, 1<<<<

out TCCR1B, tmpL; настройка Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ T1: F=CK/64, счёт Π²Π²Π΅Ρ€Ρ… ΠΎΡ‚ 0 Π΄ΠΎ OCR1A, fast PWM ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΊΠ°Π½Π°Π»Π°

ldi tmpL, 250

out OCR0A, tmpL

ldi tmpL, 1<<<

out TCCR0B, tmpL; настройка Ρ€Π΅ΠΆΠΈΠΌΠ° T0: F=CK/64, счёт ΠΎΡ‚ 0 Π΄ΠΎ OCR0A = 250 — ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ 1 мс

ldi tmpL, 1<

out TIMSK, tmpL; Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ прСрывания ΠΏΠΎ ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π½ΠΈΡŽ модуля OC0A

ldi tmpL, 1<

out TIFR, tmpL; Π½Π° Π²ΡΡΠΊΠΈΠΉ случай сброс Ρ„Π»Π°Π³Π° Π΄Π°Π½Π½ΠΎΠ³ΠΎ прСрывания

sei; глобальноС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ

; ΠžΠ‘ΠΠžΠ’ΠΠžΠ™ Π¦Π˜ΠšΠ› ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ«

loop:

ldi tmpL, 1<

out MCUCR, tmpL

sleep; ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠœΠš Π² Idle-Ρ€Π΅ΠΆΠΈΠΌ Π² Π½Π°Ρ‡Π°Π»Π΅ основного Ρ†ΠΈΠΊΠ»Π°, выводится ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ прСрывания ΠΏΠΎ ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π½ΠΈΡŽ модуля сравнСния OC0A

cpi T0_int_countL, 0×64; послС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° прСрывания ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ счётчика ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ (1 мс-ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ²)

brlo loop; Ссли счётчик < 100 (100 мс Π½Π΅ ΠΏΡ€ΠΎΡˆΠ»ΠΎ), ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ основного Ρ†ΠΈΠΊΠ»Π°

rcall keybscan; ΠΈΠ½Π°Ρ‡Π΅ Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ сканирования ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

clr T0_int_countL; ΠΎΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅ счётчика 1 мс-ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ²

inc T0_int_countH; ΠΈΠ½Π²Ρ€Π΅ΠΌΠ΅Π½Ρ‚ счётчика 100 мс-ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ² (обнуляСтся Ссли ΠΏΡ€ΠΈ сканировании ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π½Π΅ Π±Ρ‹Π»Π° Π½Π°ΠΆΠ°Ρ‚Π° какая-Π»ΠΈΠ±ΠΎ клавиша)

cpi T0_int_countH, 0×64

brlo loop; Ссли счётчик < 100 (10 с Π½Π΅ ΠΏΡ€ΠΎΡˆΠ»ΠΎ), ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ основного Ρ†ΠΈΠΊΠ»Π°

clr T0_int_countH; ΠΈΠ½Π°Ρ‡Π΅ ΠΎΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅ счётчика 100 мс-ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ²

ld tmpL, X

cp tmpL, predvalue; сравнСниС Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ значСния Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ

breq loop; Ссли значСния Ρ€Π°Π²Π½Ρ‹, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ основного Ρ†ΠΈΠΊΠ»Π°

mov predvalue, tmpL; ΠΈΠ½Π°Ρ‡Π΅ запись Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ значСния Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ

mov tmpH, XL

subi tmpH, 0×60−0×20; ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ Π°Π΄Ρ€Π΅ΡΡƒ EEPROM, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ

rcall EEWrite; Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ пСрСзаписи ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π² EEPROM

rjmp loop; ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ основного Ρ†ΠΈΠΊΠ»Π°

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сканирования ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

keybscan:

in tmpL, PINB

andi tmpL, 0x0 °F; Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ состояния Π»ΠΈΠ½ΠΈΠΉ ΠΊΠ½ΠΎΠΏΠΎΠΊ

clr cnt1; очистка счётчика Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ клавиши

lds tmpH, flags; Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π° Ρ„Π»Π°Π³ΠΎΠ²

next_key:

lsr tmpL; сдвиг Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ рСгистра состояния ΠΏΠΎΡ€Ρ‚Π° Π²ΠΏΡ€Π°Π²ΠΎ Π· Π·Π°ΠΏΠΈΡΡŒΡŽ состояния младшСго Π±ΠΈΡ‚Π° Π² C

brcc pressed; Ссли C=0 (клавиша Π½Π°ΠΆΠ°Ρ‚Π°), ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΠΌΠ΅Ρ‚ΠΊΡƒ Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ клавиши

inc cnt1; ΠΈΠ½Π°Ρ‡Π΅ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ счётчика Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ клавиши

cpi cnt1,0×04

brne next_key; Ссли счётчик<4, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΠΌΠ΅Ρ‚ΠΊΡƒ чтСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

andi tmpH,~(1<

sts flags, tmpH; ΠΈΠ½Π°Ρ‡Π΅ (Π½ΠΈ ΠΎΠ΄Π½Π° клавиша Π½Π΅ Π½Π°ΠΆΠ°Ρ‚Π°) сброс Ρ„Π»Π°Π³Π° наТатия Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π΅ Ρ„Π»Π°Π³ΠΎΠ²

ret; ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

; ΠΌΠ΅Ρ‚ΠΊΠ° Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ клавиши

pressed:

sbrc tmpH, keypressed

ret; Ссли Ρ„Π»Π°Π³ наТатия ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ сканировании установлСн, Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ori tmpH, 1<

sts flags, tmpH; ΠΈΠ½Π°Ρ‡Π΅ установка Ρ„Π»Π°Π³Π° наТатия

ldi ZH, high (key_handlers<<1)

ldi ZL, low (key_handlers<<1)

lsl cnt1

add ZL, cnt1

adc ZH, ZERO; вычислСниС адрСса ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° наТатия Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ адрСсов

lpm R0, Z+

lpm R1, Z

movw ZH: ZL, R1: R0; Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° адрСса Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ указатСля

ijmp; ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡƒ адрСсу

; ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ наТатия клавиши Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ / ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ стимуляции

stim_pressed:

in tmpL, TCCR1A

ldi tmpH, 1<

eor tmpL, tmpH

out TCCR1A, tmpL; инвСрсия Π±ΠΈΡ‚Π° COM1B1 Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π΅ TCCR1A — Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ / ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π΅ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ PWM Π½Π° Π»ΠΈΠ½ΠΈΠΈ OC1B

mov tmpH, tmpL

ldi tmpL, 0xC7; ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π½Π° LCD начиная с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ выводится состояниС стимуляции: on/off

sbrs tmpH, COM1B1

rjmp PC+4

ldi ZH, high (str_on<<1); Ссли PWM Π²ΠΊΠ»ΡŽΡ‡Π΅Π½, запись Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ указатСля Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ адрСса строки «on»

ldi ZL, low (str_on<<1)

rjmp PC+3

ldi ZH, high (str_off<<1); ΠΈΠ½Π°Ρ‡Π΅ запись Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ указатСля Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ адрСса строки «off»

ldi ZL, low (str_off<<1)

rcall LCD_send_string; Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ строки Π½Π° LCD

ret; ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ сканирования ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

; ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ наТатия клавиши Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°

param_pressed:

lds tmpH, Menu_pos

inc tmpH; ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ рСгистра ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ мСню

cpi tmpH, 0×03

brlo PC+2

clr tmpH; Ссли позиция мСню > 3, ΠΎΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ мСню

sts Menu_pos, tmpH

ld tmpL, X

cp tmpL, predvalue; срСвнСниС Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ значСния Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ

breq m7; Ссли Ρ€Π°Π²Π½ΠΎ, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΠΌΠ΅Ρ‚ΠΊΡƒ Π²Ρ‹Π±ΠΎΡ€Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ мСню

; ΠΈΠ½Π°Ρ‡Π΅ дСйствия ΠΏΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½ΠΎΠ³ΠΎ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π² EEPROM

push tmpH

mov tmpH, XL

subi tmpH, 0×60−0×20

out EEAR, tmpH; ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ адрСсу Π² EEPROM

out EEDR, tmpL

rcall EEWrite; ΠΈ Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ пСрСзаписи ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π² EEPROM

pop tmpH

; дСйствия ΠΏΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρƒ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ

m7: ldi ZH, high (Menu_handlers<<1)

ldi ZL, low (Menu_handlers<<1)

lsl tmpH

add ZL, tmpH

adc ZH, ZERO

lpm R0, Z+

lpm R1, Z; ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ адрСса ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ

movw ZH: ZL, R1: R0

ijmp; ΠΈ ΡƒΡΠ»ΠΎΠ²Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΊΠ΅

; ΠΌΠ΅Ρ‚ΠΊΠ° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ΅ частоты слСдования ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ²

Param1sel:

ldi Maxvalue, 0x1F

ldi XL, Freq

ldi tmpL, 0×80; сохранСниС адрСса Π²Ρ‹Π²ΠΎΠ΄Π° символа стрСлки Π²ΠΏΡ€Π°Π²ΠΎ

push tmpL

ldi tmpL, 0xC0; сохранСниС адрСса Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ±Π΅Π»Π°

push tmpL

rjmp m8; ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΠΌΠ΅Ρ‚ΠΊΡƒ обновлСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π΅

; ΠΌΠ΅Ρ‚ΠΊΠ° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ΅ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°

Param2sel:

ldi Maxvalue, 0×03

ldi XL, Width

ldi tmpL, 0×88; сохранСниС адрСса Π²Ρ‹Π²ΠΎΠ΄Π° символа стрСлки Π²ΠΏΡ€Π°Π²ΠΎ

push tmpL

ldi tmpL, 0×80; сохранСниС адрСса Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ±Π΅Π»Π°

push tmpL

rjmp m8; ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΠΌΠ΅Ρ‚ΠΊΡƒ обновлСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π΅

; ΠΌΠ΅Ρ‚ΠΊΠ° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ΅ Ρ‚ΠΎΠΊΠ° (напряТСния Π² ΡΡ€Π΅Π΄Π½Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€Π°)

Param3sel:

ldi Maxvalue, 0x0F

ldi XL, Current

ldi tmpL, 0xC0; сохранСниС адрСса Π²Ρ‹Π²ΠΎΠ΄Π° символа стрСлки Π²ΠΏΡ€Π°Π²ΠΎ

push tmpL

ldi tmpL, 0×88; сохранСниС адрСса Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ±Π΅Π»Π°

push tmpL

m8: pop tmpL; ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π² tmpL адрСса Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ±Π΅Π»Π°

rcall LCD_send_command; Π΅Π³ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€

ldi tmpL, ' '

rcall LCD_send_data; ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΏΡ€ΠΎΠ±Π΅Π»Π° Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€

pop tmpL; ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π² tmpL адрСса Π²Ρ‹Π²ΠΎΠ΄Π° символа стрСлки Π²ΠΏΡ€Π°Π²ΠΎ

rcall LCD_send_command; Π΅Π³ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€

clr tmpL

rcall LCD_send_data; ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° символа стрСлки Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€

ret; ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ сканирования ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

; ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ наТатия клавиши увСличСния значСния Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°

plus_pressed:

ld tmpL, X; ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· SRAM значСния Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°

cp tmpL, Maxvalue

brsh ret1; Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ максимально допустимоС, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΠΌΠ΅Ρ‚ΠΊΡƒ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

inc tmpL; ΠΈΠ½Π°Ρ‡Π΅ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°

st X, tmpL; Π΅Π³ΠΎ сохранСниС Π² SRAM

rjmp Param_change; ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΠΌΠ΅Ρ‚ΠΊΡƒ измСнСния значСния ΠΏΠ°Ρ€Π΅ΠΌΠ΅Ρ‚Ρ€Π°

; ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ наТатия клавиши ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ значСния Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°

minus_pressed:

ld tmpL, X; ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· SRAM значСния Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°

tst tmpL

breq ret1; Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = 0, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΠΌΠ΅Ρ‚ΠΊΡƒ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

dec tmpL; ΠΈΠ½Π°Ρ‡Π΅ Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ значСния Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°

st X, tmpL; Π΅Π³ΠΎ сохранСниС Π² SRAM

; общая ΠΌΠ΅Ρ‚ΠΊΠ° измСнСния значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°

Param_change:

lds tmpH, Menu_pos; ΠΌΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ мСню

ldi ZH, high (Change_handlers<<1)

ldi ZL, low (Change_handlers<<1)

lsl tmpH

add ZL, tmpH

adc ZH, ZERO

lpm R0, Z+

lpm R1, Z

movw ZH: ZL, R1: R0; ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ адрСса ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°

icall; ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ret1:

clr T0_int_countH; ΠΎΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅ счётчика 109 мс-ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ²

ret; ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ мСню ΠΏΡ€ΠΈΠ±ΠΎΡ€Π°

Device_init:

ldi tmpL, 0×81

ldi ZH, high (str_freq<<1)

ldi ZL, low (str_freq<<1)

rcall LCD_send_string

ldi tmpL, 0×86

ldi ZH, high (str_HZ<<1)

ldi ZL, low (str_HZ<<1)

rcall LCD_send_string

ldi tmpL, 0×89

ldi ZH, high (str_Ti<<1)

ldi ZL, low (str_Ti<<1)

rcall LCD_send_string

ldi ZH, high (str_current<<1)

ldi ZL, low (str_current<<1)

ldi tmpL, 0xC1

rcall LCD_send_string

ldi ZH, high (str_off<<1)

ldi ZL, low (str_off<<1)

ldi tmpL, 0xC7

rcall LCD_send_string; Π²Ρ‹Π²ΠΎΠ΄ строк, содСрТащих названия ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€

ldi tmpH, EEFreq

rcall EERead; Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния частоты ΠΈΠ· EEPROM

cpi tmpL, 0×32

brlo m1; Ссли частота Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… допустимой, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° m1

clr tmpL

rcall EEWrite; ΠΈΠ½Π°Ρ‡Π΅ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ минимального ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния частоты Π² EEPROM

m1: sts Freq, tmpL

rcall set_freq; Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ установки частоты

ldi tmpH, EEWidth

rcall EERead; Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ частоты ΠΈΠ· EEPROM

cpi tmpL, 0×04

brlo m2; Ссли Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… допустимой, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° m2

clr tmpL

rcall EEWrite; ΠΈΠ½Π°Ρ‡Π΅ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ минимального ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² EEPROM

m2: sts Width, tmpL

rcall set_width

ldi tmpH, EECurrent

rcall EERead; Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния Ρ‚ΠΎΠΊΠ° стимуляции ΠΈΠ· EEPROM

cpi tmpL, 0×10

brlo m3; Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… допустимого, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° m3

clr tmpL

rcall EEWrite; ΠΈΠ½Π°Ρ‡Π΅ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ минимального ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² EEPROM

m3: sts Current, tmpL

rcall set_current; Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ установки Ρ‚ΠΎΠΊΠ° стимуляции

rcall Param1sel; Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° 1 (частоты ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ²)

ret; ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° установки частоты: рСгистр Freq Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ SRAM — ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ частоты

set_freq:

ldi tmpH, high (50 000)

ldi tmpL, low (50 000)

lds divisor, Freq

inc divisor

rcall div16to8; вычислСниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ рСгистра сравнСния OC1A, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ для формирования Π΄Π°Π½Π½ΠΎΠΉ частоты: OC1A = 50 000/Freq

out OCR1AH, tmpH

out OCR1AL, tmpL; ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π² OC1A

rcall ind_freq; Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ частоты

ret; ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ установки частоты

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ частоты

ind_freq:

ldi tmpL, 0×83

rcall LCD_send_command; ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌΡƒ адрСсу ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ

lds tmpL, Freq

ldi ZL, digbuf+3

lds tmpL, Freq

inc tmpL

mov tmpH, tmpL

lsl tmpL

lsl tmpL

add tmpL, tmpH; вычислСниС ΠΈΠ· Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния частоты Freq Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ³ΠΎ значСния частоты Π² Π“Π΅Ρ€Ρ†Π°Ρ…: Hz = (Freq+1)*5

m4: rcall div10; Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ дСлСния Π½Π° 10

st — Z, rest; запись остатка ΠΎΡ‚ Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ адрСсу Π² Π±ΡƒΡ„Π΅Ρ€Π΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Ρ†ΠΈΡ„Ρ€ с ΠΏΡ€Π΅Π΄Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠΌ адрСса

cpi ZL, digbuf

brne m4; Ссли адрСс ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° m4

m5: ld tmpL, Z+

subi tmpL,-0×30

rcall LCD_send_data; ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ Ρ†ΠΈΡ„Ρ€ ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Ρ†ΠΈΡ„Ρ€

cpi ZL, digbuf+3

brlo m5; ΠΏΠΎΠΊΠ° Π½Π΅ Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° m5

ret; Π΄Π°Π»Π΅ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° установки Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ· ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π΅ Width: T = (Width+2)*0.1 мс

set_width:

ldi tmpL, 0x8E

rcall LCD_send_command; ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° LCD ΠΊ Π°Π΄Ρ€Π΅ΡΡƒ Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

lds cnt1, Width

inc cnt1

push cnt1

ldi tmpL, 25

clr tmpH

m6: subi tmpL, — 25

dec cnt1; вычислСниС значСния ΠΊΠ°Π½Π°Π»Π° PWM OC1B для формирования Π΄Π°Π½Π½ΠΎΠΉ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ: OC1B = 25*(2+Width)

brne m6

out OCR1BH, tmpH

out OCR1BL, tmpL; ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ вычислСнного значСния Π² OC1B

pop cnt1

inc cnt1

mov tmpL, cnt1

subi tmpL,-0×30

rcall LCD_send_data; Π²Ρ‹Π²ΠΎΠ΄ дСсятых Π΄ΠΎΠ»Π΅ΠΉ мс Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€

ret; ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° установки напряТСния Π² ΡΡ€Π΅Π΄Π½Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€Π° — установка Ρ‚ΠΎΠΊΠ°

set_current:

ldi tmpH, 0x0F

lds tmpL, Current; ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния Ρ‚ΠΎΠΊΠ°

push tmpL

sub tmpH, tmpL

rcall mul_to17; вычислСниС отправляСмого Π½Π° Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€ Π±Π°ΠΉΡ‚Π° для установки Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ значСния

rcall set_resistance; Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ установки напряТСния Π² ΡΡ€Π΅Π΄Π½Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€Π°

pop tmpH

lsl tmpH

rcall ind_current; Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ значСния Ρ‚ΠΎΠΊΠ°

ret; ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ значСния Ρ‚ΠΎΠΊΠ°: ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΊΠ° = tmpH = Current<<1

ind_current:

push tmpH

ldi tmpL, 0xC3

rcall LCD_send_command; ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ Π°Π΄Ρ€Π΅ΡΡƒ Π²Ρ‹Π²ΠΎΠ΄Π° значСния Ρ‚ΠΎΠΊΠ°

pop tmpL

rcall div10; Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния Ρ‚ΠΎΠΊΠ° Π½Π° 10

subi tmpL,-0×30

rcall LCD_send_data; Π²Ρ‹Π²ΠΎΠ΄ Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° дСлСния — Π΅Π΄ΠΈΠ½ΠΈΡ† ΠΌΠΈΠ»ΠΈΠ°ΠΌΠΏΠ΅Ρ€

ldi tmpL, '.'

rcall LCD_send_data; Π²Ρ‹Π²ΠΎΠ΄ Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ дСсятичной Ρ‚ΠΎΡ‡ΠΊΠΈ

mov tmpL, rest

subi tmpL,-0×30

rcall LCD_send_data; Π²Ρ‹Π²ΠΎΠ΄ Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ остатка ΠΎΡ‚ Π΄Π΅Π»Π΅Π½ΠΈΡ — дСсятых Π΄ΠΎΠ»Π΅ΠΉ ΠΌΠΈΠ»ΠΈΠ°ΠΌΠΏΠ΅Ρ€Π°

ret; ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

; Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° умноТСния Π½Π° 17: примСняСтся для вычислСния Π±Π°ΠΉΡ‚Π° Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠΈ напряТСния Π² ΡΡ€Π΅Π΄Π½Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€Π°

mul_to17:

mov tmpL, tmpH

lsl tmpH

lsl tmpH

lsl tmpH

lsl tmpH

add tmpH, tmpL

ret

;ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° установки ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π° Π² ΡΡ€Π΅Π΄Π½Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€Π°

set_resistance:

rcall I2C_start; Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ старт-состояния Π½Π° ΡˆΠΈΠ½Π΅ I2C

ldi tmpL, Device_adr

rcall I2C_send; ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° слСйв-адрСса Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€Π°

clr tmpL

rcall I2C_send; ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π±Π°ΠΉΡ‚Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΠ½Π°Ρ†ΠΈΠΈ

mov tmpL, tmpH

rcall I2C_send; ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° значСния Π±Π°ΠΉΡ‚Π° установки напряТСния Π² ΡΡ€Π΅Π΄Π½Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ U0: U0 = VCC*value/256

rcall I2C_stop; Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ стоп-состояния Π½Π° ΡˆΠΈΠ½Π΅ I2C

ret; ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° стандартной ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ LCD Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ…Π±ΠΈΡ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅

LCD_init:

ldi tmpL, 0×18

out PORTD, tmpL; Π²Ρ‹Π²ΠΎΠ΄ Π² PORTD Π±Π°ΠΉΡ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ = 0×30

ldi tmpL, 0x0A

m0: ldi cnt1,0×40

rcall next_del

dec tmpL

brne m0; Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠΊΠΎΠ»ΠΎ 40 мс

rcall LCD_strobe; ΠΏΠΎΠ΄Π°Ρ‡Π° Π½Π° LCD ΡΠΈΠ½Ρ…Ρ€ΠΎΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°

ldi cnt1,0×40

rcall next_del; Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠΊΠΎΠ»ΠΎ 4 мс

rcall LCD_strobe; ΠΏΠΎΠ΄Π°Ρ‡Π° Π½Π° LCD ΡΠΈΠ½Ρ…Ρ€ΠΎΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°

ldi cnt1,0×04

rcall next_del; Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠΊΠΎΠ»ΠΎ 256 мкс

rcall LCD_strobe_delay; Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ тактирования LCD с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ

ldi tmpL, 0×10

out PORTD, tmpL; Π²Ρ‹Π²ΠΎΠ΄ Π² PORTD Π±Π°ΠΉΡ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ = 0×20

rcall LCD_strobe_delay; Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ тактирования LCD с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ — инициализация Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ…Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ°

ldi tmpL, 0×28

rcall LCD_send_command; ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π½Π° LCD ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ двустрочного Ρ€Π΅ΠΆΠΈΠΌΠ° LCD

ldi tmpL, 0x0C

rcall LCD_send_command; ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ LCD Π±Π΅Π· Π²ΠΈΠ΄ΠΈΠΌΠΎΠ³ΠΎ курсора, Π±Π΅Π· ΠΏΠΎΠ΄Ρ‡Ρ‘Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠΉ

ldi tmpL, 0×06

rcall LCD_send_command; ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ сдвига Π²ΠΏΡ€Π°Π²ΠΎ послС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ символа

ldi tmpL, 0×01

rcall LCD_send_command; ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ очистки ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°

ret; ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

;ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ символа Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ Π·Π½Π°ΠΊΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° LCD: Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ адрСс Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ Π·Π½Π°ΠΊΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° = 0×40+(tmpL&0×07)<<3, Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ символа Π² flash ΠΏΠΎ Π°Π΄Ρ€Π΅ΡΡƒ ZH: ZL

LCD_sym_gen:

andi tmpL, 0×07

swap tmpL

lsr tmpL

subi tmpL,-0×40; tmpL = 0×40+((tmpL&0×07)<<3) — Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ адрСс символа

rcall LCD_send_command; ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π½Π° LCD ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ адрСса символа

clr R20; ΠΎΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅ счётчика

next_sym_code:

lpm tmpL, Z+; Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈΠ· flash Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° с ΠΏΠΎΡΡ‚ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠΌ адрСса

rcall LCD_send_data; ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π½Π° LCD Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π° Π΄Π°Π½Π½Ρ‹Ρ…

inc R20; ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ счётчика ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π±Π°ΠΉΡ‚

cpi R20,0×08

brlo next_sym_code; Ссли счётчик < 8, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΠΌΠ΅Ρ‚ΠΊΡƒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π½Π° LCD ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π±Π°ΠΉΡ‚Π°

ret; ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ строки Π½Π° LCD: строка располоТСна Π² flash начиная с Π°Π΄Ρ€Π΅ΡΠ° ZH: ZL, Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π±Π°ΠΉΡ‚ΠΎΠΌ = 0×00, Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ позиция Π½Π° LCD Π·Π°Π΄Π°Π½Π° Π² tmpL

LCD_send_string:

rcall LCD_send_command; ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π½Π° LCD ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌΡƒ адрСсу Π²Ρ‹Π²ΠΎΠ΄Π° строки

next_sym:

lpm tmpL, Z+; Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ адрСса Π² flash Π±Π°ΠΉΡ‚Π° Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΡΡ‚ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠΌ адрСса

tst tmpL

brne PC+2

ret; Ссли ΠΈΠ·Π²Π»Π΅Ρ‡Ρ‘Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = 0 (ΠΊΠΎΠ½Π΅Ρ† строки), Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

rcall LCD_send_data; ΠΈΠ½Π°Ρ‡Π΅ ΠΎΠΏΡ€Π°Π²ΠΊΠ° ΠΈΠ·Π²Π»Π΅Ρ‡Ρ‘Π½Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° LCD

rjmp next_sym; ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΠΌΠ΅Ρ‚ΠΊΠ΅ Π²Ρ‹Π²ΠΎΠ΄Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ символа

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π½Π° LCD Π±Π°ΠΉΡ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, содСрТащСгося Π² tmpL Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ…Π±ΠΈΡ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅

LCD_send_command:

cbi PORTD, LCD_RS_line; Π²Ρ‹Π²ΠΎΠ΄ логичСского «0» Π² Π»ΠΈΠ½ΠΈΡŽ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ LCD RS

rjmp PC+2; ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ дСйствиям ΠΏΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Π±Π°ΠΉΡ‚Π°

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π½Π° LCD Π±Π°ΠΉΡ‚Π° Π΄Π°Π½Π½Ρ‹Ρ…, содСрТащСгося Π² tmpL Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ…Π±ΠΈΡ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅

LCD_send_data:

sbi PORTD, LCD_RS_line; Π²Ρ‹Π²ΠΎΠ΄ логичСской «1» Π² Π»ΠΈΠ½ΠΈΡŽ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ LCD RS

rcall LCD_short_delay; Π²Ρ‹Π·ΠΎΠ² ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ

push tmpL; Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ сохранСниС отправляСмого Π±Π°ΠΉΡ‚Π° Π² ΡΡ‚Π΅ΠΊΠ΅

andi tmpL, 0xF0

lsr tmpL

in tmpH, PORTD; запись состояния Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ PORTD Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ рСгистр

andi tmpH, 0×07; запись Π² Π±ΠΈΡ‚Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ рСгистра, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ линиям Π΄Π°Π½Π½Ρ‹Ρ… LCD Π½ΡƒΠ»Π΅ΠΉ

or tmpL, tmpH; логичСскоС Π˜Π›Π˜ рСгистра, содСрТащСго ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ ΠΏΠΎΠ»ΡƒΠ±Π°ΠΉΡ‚ отправляСмого значСния с Π±ΠΈΡ‚Π°ΠΌΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ рСгистра состояния Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ PORTD

out PORTD, tmpL; Π²Ρ‹Π²ΠΎΠ΄ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π² PORTD

rcall LCD_short_delay; Π²Ρ‹Π·ΠΎΠ² ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ

rcall LCD_strobe; Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ тактирования LCD

pop tmpL; ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ сохранённого Π² ΡΡ‚Π΅ΠΊΠ΅ значСния отправляСмого значСния

push tmpL

swap tmpL; ΠΎΠ±ΠΌΠ΅Π½ ΠΈΠ·Π²Π»Π΅Ρ‡Ρ‘Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡƒΠ±Π°ΠΉΡ‚ Π² ΠΈΠ·Π²Π»Π΅Ρ‡Ρ‘Π½Π½ΠΎΠΌ рСгистрС — Π²Ρ‹Π²ΠΎΠ΄ ΠΌΠ»Π°Π΄ΡˆΠΈΡ… Π±Π°ΠΉΡ‚ отправляСмого значСния Π² ΡΡ‚Π°Ρ€ΡˆΠΈΠ΅

andi tmpL, 0xF0

lsr tmpL

in tmpH, PORTD; запись состояния Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ PORTD Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ рСгистр

andi tmpH, 0×07; запись Π² Π±ΠΈΡ‚Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ рСгистра, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ линиям Π΄Π°Π½Π½Ρ‹Ρ… LCD Π½ΡƒΠ»Π΅ΠΉ

or tmpL, tmpH; логичСскоС Π˜Π›Π˜ рСгистра, содСрТащСго младший ΠΏΠΎΠ»ΡƒΠ±Π°ΠΉΡ‚ отправляСмого значСния с Π±ΠΈΡ‚Π°ΠΌΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ рСгистра состояния Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ PORTD

out PORTD, tmpL; Π²Ρ‹Π²ΠΎΠ΄ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π² PORTD

rcall LCD_short_delay; Π²Ρ‹Π·ΠΎΠ² ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ

pop tmpL; ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния отправляСмого Π±Π°ΠΉΡ‚Π° Π² tmpL для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ тактирования LCD с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ

rcall LCD_strobe_delay; Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ тактирования ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ

ret; ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π±Π°ΠΉΡ‚Π° Π½Π° LCD

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° тактирования ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ — врСмя Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ зависит ΠΎΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π°, содСрТащСгося Π² tmpL

LCD_strobe_delay:

rcall LCD_strobe; Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ тактирования ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°

sbic PORTD, LCD_RS_line

rjmp PC+3

cpi tmpL, 0×03

brlo PC+3

ldi cnt1,0×01; Ссли Π±Ρ‹Π»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅ Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° <> ΠΊΠΎΠΌΠ°Π½Π΄Π΅ очисткС, запись Π² ΡΡ‡Ρ‘Ρ‚Ρ‡ΠΈΠΊ 64 мкс-Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ значСния = 1

rjmp next_del

ldi cnt1,0×20; Ссли ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° очистки LCD, запись Π² ΡΡ‡Ρ‘Ρ‚Ρ‡ΠΈΠΊ 64 мкс-Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ значСния = 32 (для формирования Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ послС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΎΠΊΠΎΠ»ΠΎ 2 мс)

next_del:

rcall LCD_after_send_delay; Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ 64 мкс

dec cnt1; Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ счётчика 64 мкс-Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ

brne next_del; ΠΏΠΎΠΊΠ° счётчик Π½Π΅ ΠΎΠ±Π½ΡƒΠ»ΠΈΠ»ΡΡ, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° next_del

ret; ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° тактирования LCD-ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°

LCD_strobe:

sbi PORTD, LCD_E_line

rcall LCD_short_delay; Π²Ρ‹Π²ΠΎΠ΄ состояния логичСской «1» Π² Π»ΠΈΠ½ΠΈΡŽ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π»ΠΈΠ½ΠΈΠΈ тактирования ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ

cbi PORTD, LCD_E_line

rcall LCD_short_delay; Π²Ρ‹Π²ΠΎΠ΄ состояния логичСского «0» Π² Π»ΠΈΠ½ΠΈΡŽ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π»ΠΈΠ½ΠΈΠΈ тактирования ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ

ret; ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ для LCD (примСняСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ уровня для LCD)

LCD_short_delay:

ldi cnt2,0×04

rcall short_delay1

ret

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ (ΠΎΠΊΠΎΠ»ΠΎ 64 мкс) послС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π±Π°ΠΉΡ‚Π° Π½Π° LCD

LCD_after_send_delay:

clr cnt2

rcall short_delay1

ret

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ уровня для ΡˆΠΈΠ½Ρ‹ I2C

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° формирования старт-состояния Π½Π° ΡˆΠΈΠ½Π΅ I2C

I2C_start:

sbi PORTB, SCL

rcall i2c_delay

sbi DDRB, SDA

rcall i2c_delay

ret

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π±Π°ΠΉΡ‚Π°, содСрТащСгося Π² tmpL ΠΏΠΎ ΡˆΠΈΠ½Π΅ I2C

I2C_send:

ldi cnt1,0×08

cbi PORTB, SCL

rcall i2c_delay

lsl tmpL

brcc PC+3

cbi DDRB, SDA

rjmp PC+2

sbi DDRB, SDA

rcall i2c_delay

sbi PORTB, SCL

rcall i2c_delay

dec cnt1

brne I2C_send+1

cbi PORTB, SCL

rcall i2c_delay

cbi DDRB, SDA

rcall i2c_delay

sbi PORTB, SCL

rcall i2c_delay

ret

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° формирования стоп-состояния Π½Π° ΡˆΠΈΠ½Π΅ I2C

I2C_stop:

cbi PORTB, SCL

rcall i2c_delay

sbi DDRB, SDA

rcall i2c_delay

sbi PORTB, SCL

rcall i2c_delay

cbi DDRB, SDA

rcall i2c_delay

ret

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ для I2C, LCD_short_delay ΠΈ Ρ‚. Π΄.

I2C_delay:

ldi cnt2,0×10

; общая ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ: вызываСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ I2C_delay

short_delay1:

dec cnt2

nop

brne short_delay1

ret

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° дСлСния 16-Ρ‚ΠΈ Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ числа Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΎΠ²ΠΎΠΉ ΠΏΠ°Ρ€Π΅ tmpH: tmpL Π½Π° Π²ΠΎΡΡŒΠΌΠΈΠ±ΠΈΡ‚Π½ΠΎΠ΅ Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π΅ divisor: Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ — Π² tmpH: tmpL, остаток — Π² rest

div16to8:

ldi cnt1,0×11

clr rest

clc

rol tmpL

rol tmpH

dec cnt1

brne PC+2

ret

rol rest

sub rest, divisor

brcs PC+3

sec

rjmp div16to8+3

add rest, divisor

rjmp div16to8+2

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° дСлСния рСгистра tmpL Π½Π° 10: Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΡ‚ Π΄Π΅Π»Π΅Π½ΠΈΡ Π² tmpL, остаток — Π² rest

div10:

ldi cnt1,0×09

clr rest

clc

rol tmpL

dec cnt1

brne PC+2

ret

rol rest

subi rest, 0x0A

brcs PC+3

sec

rjmp div10+3

subi rest,-0x0A

rjmp div10+2

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° записи Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π° tmpL ΠΏΠΎ Π°Π΄Ρ€Π΅ΡΡƒ EEPROM, записанному Π² tmpH

EEWrite:

out EEAR, tmpH

out EEDR, tmpL

sbi EECR, EEMWE

sbi EECR, EEWE

sbic EECR, EEWE

rjmp PC-1

ret

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° чтСния Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ tmpL ΠΈΠ· Π°Π΄Ρ€Π΅ΡΠ° EEPROM, записанного Π² tmpH

EERead:

out EEAR, tmpH

sbi EECR, EERE

in tmpL, EEDR

ret

; ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прСрывания ΠΏΠΎ ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π½ΠΈΡŽ модуля сравнСния OC0A Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° T0 (ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ с ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠΌ 1 мс)

T0_COMPA_handle:

push tmpL

in tmpL, SREG

push tmpL; сохранСниС ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… рСгистров Π² ΡΡ‚Π΅ΠΊΠ΅

inc T0_int_countL; ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ счётчика 1 мс-Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ

pop tmpL

out SREG, tmpL

pop tmpL; ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… рСгистров ΠΈΠ· ΡΡ‚Π΅ΠΊΠ°

reti; ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прСрывания

; Ρ‚Π°Π±Π»ΠΈΡ†Π° адрСсов ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² наТатия клавиш

key_handlers: .dw stim_pressed, param_pressed, plus_pressed, minus_pressed

; Ρ‚Π°Π±Π»ΠΈΡ†Π° адрСсов для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ наТатия клавиши Π²Ρ‹Π±ΠΎΡ€Π° Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° (адрСс зависит ΠΎΡ‚ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°)

Menu_handlers: .dw Param1sel, Param2sel, Param3sel

; Ρ‚Π°Π±Π»ΠΈΡ†Π° адрСсов для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ клавиш Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠΈ (адрСс зависит ΠΎΡ‚ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°)

change_handlers: .dw set_freq, set_Width, set_current

; ΠΊΠΎΠ΄Ρ‹ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ символа стрСлки Π²ΠΏΡ€Π°Π²ΠΎ Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ Π·Π½Π°ΠΊΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° LCD

sym_right: .db 0×08,0x0C, 0x0E, 0x0 °F, 0x0E, 0x0C, 0×08,0×00

; Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ строки

str_off: .db «off», 0×00

str_on: .db «on», 0×00

str_HZ: .db «Hz», 0×00,0xFF

str_Ti: .db «Ti=0.», 0×00

str_current: .db «I=», 0×00,0xFF

str_freq: .db «F=», 0×00,0xFF

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ