ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΠΈΠ³Π½Π°Π»Π° ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π±ΠΎΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Timer0. Π Π°Π»Π³ΠΎΡΠΈΡΠΌΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ-Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½Π°Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠ° Π½Π° Divide ΡΠ°ΠΊΡΠΎΠ² ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΎΠ½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. Π‘ΡΠ°ΡΡΠΈΠΉ Π±Π°ΠΉΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Π·Π°Π½ΠΎΡΠΈΡΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΡΡΠ΅ΡΡΠΈΠΊ Count, ΠΌΠ»Π°Π΄ΡΠΈΠΉ Π² Timer0. ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· low (Divide) ΡΠ°ΠΊΡΠΎΠ², Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π· 256 ΡΠ°ΠΊΡΠΎΠ² (ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΠΈΠ³Π½Π°Π»Π° ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΠΈΠ½ΠΈΡΡΠ΅ΡΡΡΠ²ΠΎ ΠΠ°ΡΠΊΠΈ ΠΈ ΠΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π ΠΎΡΡΠΈΠΉΡΠΊΠΎΠΉ Π€Π΅Π΄Π΅ΡΠ°ΡΠΈΠΈ ΠΠΎΠ²ΠΎΡΠΈΠ±ΠΈΡΡΠΊΠΈΠΉ ΠΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΡΠΉ Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π£Π½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ Π€Π°ΠΊΡΠ»ΡΡΠ΅Ρ ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠΊΠΈ ΠΈ ΠΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π’Π΅Ρ Π½ΠΈΠΊΠΈ ΠΠ°ΡΠ΅Π΄ΡΠ° Π‘ΠΈΡΡΠ΅ΠΌ Π‘Π±ΠΎΡΠ° ΠΈ ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΠ°Π½Π½ΡΡ ΠΡΡΡΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΠΎ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ»
«ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΠΈΠ³Π½Π°Π»Π° ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ»
ΠΡΠΏΠΎΠ»Π½ΠΈΠ»: ΠΡΠ΅ΠΏΠΎΠ΄Π°Π²Π°ΡΠ΅Π»Ρ:
ΠΠ°ΡΠ΅Π»ΠΈΠ½ Π. Π. ΠΠ»Π΅Π½ΡΡΠ΅Π² Π‘.Π.
ΠΡΡΠΏΠΏΠ°: ΠΠ’-83
ΠΠΎΠ²ΠΎΡΠΈΠ±ΠΈΡΡΠΊ 2012
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅
ΠΠ°Π΄Π°Π½ΠΈΠ΅ Π‘ΡΡΡΠΊΡΡΡΠ½Π°Ρ ΡΡ Π΅ΠΌΠ° ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΡ ΠΊ Π½Π΅ΠΉ ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΡ Π΅ΠΌΡ ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½Π°Ρ ΡΡ Π΅ΠΌΠ° ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΠ΅ΡΠ΅ΡΠ΅Π½Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π‘ΠΏΠΈΡΠΎΠΊ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ
ΠΠ°Π΄Π°Π½ΠΈΠ΅ Π Π°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΡΡ ΡΡ Π΅ΠΌΡ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ: ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΡΠΉ ΡΠΈΠ³Π½Π°Π». ΠΠ»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ Π¨ΠΠ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°. Π§Π°ΡΡΠΎΡΠ° ΡΠΈΠ³Π½Π°Π»Π° Π·Π°Π΄Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ RS-232. ΠΠΎΠ»ΠΎΡΠ° ΡΠ°ΡΡΠΎΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°: 10ΠΡ — 1000ΠΡ. ΠΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΠ³Π½Π°Π» — ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π¨ΠΠ-ΡΠΈΠ³Π½Π°Π»Π°.
ΠΡΠΎΡΠΎΠΊΠΎΠ» ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ. ΠΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ° ΠΊ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠΌΡ ΡΡΡΡΠΎΠΉΡΡΠ²Ρ: «:F<οΏ½ΠΏΡΠΎΠ±Π΅Π»>100», Π³Π΄Π΅ 100' - ΡΠ°ΡΡΠΎΡΠ° ΡΠΈΠ³Π½Π°Π»Π°, ΠΡ. ΠΡΠΈΠΌΠ΅Ρ ΠΎΡΠ²Π΅ΡΠ°: «ΠΠ». ΠΠ°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ (ASCII). Π‘ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ 9600 Π±ΠΈΡ/Ρ.
Π‘ΡΡΡΠΊΡΡΡΠ½Π°Ρ ΡΡ Π΅ΠΌΠ° ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΡ ΠΊ Π½Π΅ΠΉ ΠΡΠ½ΠΎΠ²ΠΎΠΉ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ D1. ΠΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, Π·Π°ΡΠΈΡΠΎΠΉ Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΠΈΠΊΡΠΎΡΡ Π΅ΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠ°ΠΊΡΠΎΠ²ΡΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ ΠΎΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΊΠ²Π°ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ΅Π·ΠΎΠ½Π°ΡΠΎΡΠ° ΡΠ°ΡΡΠΎΡΠΎΠΉ 8 ΠΠΡ. Π‘Π±ΡΠΎΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΏΠΈΡΠ°Π½ΠΈΡ.
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠΎΠ²Π½Ρ D2 ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ²Π½Ρ TTL Π² ΡΡΠΎΠ²Π½ΠΈ RS-232.
Π€ΠΈΠ»ΡΡΡ Π½ΠΈΠ·ΠΊΠΈΡ ΡΠ°ΡΡΠΎΡ (Π€ΠΠ§) Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π΄Π»Ρ ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΡ Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠ°ΡΡΠΎΡΡ Π¨ΠΠ-ΠΌΠΎΠ΄ΡΠ»ΡΡΠΎΡΠ°.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΡ Π΅ΠΌΡ
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠΈΠΊΡΠΎΡΡ Π΅ΠΌΠ° AT90S2313. ΠΠ½Π° ΠΏΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΏΠΈΡΠ°Π½ΠΈΡ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ΠΌ +5 Π, ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠ΅ΠΌ Π½Π° ΠΊΠ»Π΅ΠΌΠΌΡ +5V. ΠΠΎΠ½Π΄Π΅Π½ΡΠ°ΡΠΎΡΡ C4, C9 Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ Π΄Π»Ρ ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠΌΠ΅Ρ ΠΏΠΎ ΠΏΠΈΡΠ°Π½ΠΈΡ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΡ ΠΈΠ·-Π·Π° ΡΠΎΠΏΡΠΎΡΠΈΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠΎΠ² ΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΏΠΈΡΠ°Π½ΠΈΡ Π»ΠΈΠ±ΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΡΡΠΈΡ ΠΈΠ· Π²Π½Π΅ ΠΏΠΎ ΠΏΠΈΡΠ°Π½ΠΈΡ. ΠΡΠΈ ΡΡΠΎΠΌ C4 Π³Π°ΡΠΈΡ Π²ΡΡΠΎΠΊΠΎΡΠ°ΡΡΠΎΡΠ½ΡΠ΅ ΠΏΠΎΠΌΠ΅Ρ ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ³Π°ΡΠΈΡΡ C9.
ΠΠ½Π΅ΡΠ½ΡΡ ΡΠ΅ΠΏΡ ΡΠ°ΠΊΡΠΎΠ²ΠΎΠ³ΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ZQ1, C1, C2. ΠΠΎΠ½Π΄Π΅Π½ΡΠ°ΡΠΎΡΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°, Π° ΠΈΡ Π½ΠΎΠΌΠΈΠ½Π°Π»Ρ Π²ΡΠ±ΡΠ°Π½Ρ ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ AT90S2313.
Π‘ΠΈΠ³Π½Π°Π» TXD Ρ Π²ΡΡ ΠΎΠ΄Π° PD1 ΠΏΠΎΠ΄Π°Π΅ΡΡΡ Π½Π° ΠΌΠΈΠΊΡΠΎΡΡ Π΅ΠΌΡ D2 ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠΎΠ²Π½Ρ TTL<->RS-232. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠΈΠ³Π½Π°Π» RXD Π½Π° Π²Ρ ΠΎΠ΄ PD0 ΠΏΠΎΠ΄Π°Π΅ΡΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΌΠΈΠΊΡΠΎΡΡ Π΅ΠΌΡ. ΠΠ°Π½Π½Π°Ρ ΠΌΠΈΠΊΡΠΎΡΡ Π΅ΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π° Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΈΠ³Π½Π°Π» ±10 Π. ΠΠ½Π΅ΡΠ½ΡΡ ΠΎΠ±Π²ΡΠ·ΠΊΠ° Π‘5-Π‘8 ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠΎΠΌΠΈΠ½Π°Π»Ρ C5-C8 Π²ΡΠ±ΡΠ°Π½Ρ ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΌΠΈΠΊΡΠΎΡΡ Π΅ΠΌΡ.
Π€ΠΠ§ ΠΏΠΎΡΡΡΠΎΠ΅Π½ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°Ρ R1, C3. Π§Π°ΡΡΠΎΡΠ° ΡΡΠ΅Π·Π° Π΄Π»Ρ ΡΠΈΠ»ΡΡΡΠ° ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎ ΡΠΎΡΠΌΡΠ»Π΅:
fc= 2?/RC
Π‘ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠ³Π½Π°Π»Π° ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΠΎΡΡ ΡΡΠ΅Π·Π°. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠ΄Π°Π²ΠΈΡΡ ΡΠ°ΡΡΠΎΡΡ PWM, ΡΠ°Π²Π½ΡΡ 8 ΠΠΡ. ΠΡΠ±Π΅ΡΠ΅ΠΌ fc ΡΠ°Π²Π½ΡΡ 1 ΠΠΡ. ΠΠΎΠ»ΡΡΠΈΠΌ RC = 6.3 ΠΌΠΊΡ.
ΠΡΠ±Π΅ΡΠ΅ΠΌ Π‘ = 0.01ΠΌΠΊΠ€, R = 620 ΠΠΌ.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ
Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΠΈΠ³Π½Π°Π» ΡΠ΅Π·ΠΎΠ½Π°ΡΠΎΡ ΡΠ°ΡΡΠΎΡΠ° ΠΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ±ΡΠΎΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°. ΠΡΠΈ ΡΡΠΎΠΌ ΠΎΠ½ Π½Π°ΡΠΈΠ½Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ Π°Π΄ΡΠ΅ΡΠ° 0, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠΎΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° Π½Π° ΠΊΠΎΠ΄ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ². ΠΠ½Π°ΡΠ°Π»Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΡΡΠ΅ΠΊ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ. ΠΠΎΡΠΎΠΌ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΏΠΎΡΡΠΎΠ² PB ΠΈ PD. ΠΠΈΠ½ΠΈΠΈ PB3(OC1) ΠΈ PD1(TXD) ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡΡΡΡ ΠΊΠ°ΠΊ Π²ΡΡ ΠΎΠ΄Ρ. ΠΠ°Π»Π΅Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΡΠ°ΠΉΠΌΠ΅Ρ-ΡΡΠ΅ΡΡΠΈΠΊ 1 Π½Π° ΡΠ°Π±ΠΎΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ 8-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠ³ΠΎ PWM Ρ ΠΏΡΡΠΌΡΠΌ Π²ΡΡ ΠΎΠ΄ΠΎΠΌ OC1 Π±Π΅Π· ΠΏΡΠ΅Π΄Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ. ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Timer1 ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Timer0 Π½Π° ΡΠ°Π±ΠΎΡΡ Π±Π΅Π· ΠΏΡΠ΅Π΄Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ UART Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡΡ 9600 Π±ΠΎΠ΄. ΠΡΠΎ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠΈΠΊΠ°. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΠΊΠΎΡΠΎΡΡΠΈ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΏΠΎ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΈΠ· ΡΠΈΡΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ. ΠΠ»Ρ ΡΠ°ΠΊΡΠΎΠ²ΠΎΠΉ ΡΠ°ΡΡΠΎΡΡ 8 ΠΠΡ ΠΈ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ 9600 Π±ΠΎΠ΄ ΠΎΠ½ΠΎ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 51.
ΠΠΎΡΠ»Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Divide=79, ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΎΡΠ΅ 1000 ΠΡ. T_Dir=4 — ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ΅ΡΡΠΈΠΊΠ° Count ΠΏΠΎ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΎΡ Timer0 Π½Π° 4. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Divide Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² Count=high (Divide) ΠΈ Timer0=low (Divide).
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΡΠΈΠΊΠ»Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π Π½Π°ΡΠ°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· UART ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡΡΡ Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² `:F `. ΠΡΠΈ Π½Π΅ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΡΠ²ΠΎΠ΄ Π² UART ΡΡΡΠΎΠΊΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ `ERROR' ΠΈ ΡΠΈΠΊΠ» Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π·Π°Π½ΠΎΠ²ΠΎ. ΠΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π½Π°ΠΉΠ΄Π΅Π½Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΄ΠΎ ΠΈΠ· UART, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΅Π΅ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ (16 Π±ΠΈΡ) ΠΈ Π·Π°ΠΏΠΈΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Freq. ΠΡΠΈ Π²Π²ΠΎΠ΄Π΅ ΡΡΡΠΎΠΊΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΈΡΡΡ) ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ 100…1000. ΠΡΠΈ Π½Π΅Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΡΠ²ΠΎΠ΄ Π² UART ΡΡΡΠΎΠΊΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ `ERROR' ΠΈ ΡΠΈΠΊΠ» Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π·Π°Π½ΠΎΠ²ΠΎ. ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π² UART Π²ΡΠ΄Π°Π΅ΡΡΡ `OK'. Π ΠΊΠΎΠ½ΡΠ΅ ΡΠΈΠΊΠ»Π° Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ Divide=K/Freq, Π³Π΄Π΅ K — ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΡΠΈΡΠ»ΠΈΠΌ Π½ΠΈΠΆΠ΅.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π±ΠΎΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Timer0. Π Π°Π»Π³ΠΎΡΠΈΡΠΌΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ-Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½Π°Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠ° Π½Π° Divide ΡΠ°ΠΊΡΠΎΠ² ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΎΠ½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. Π‘ΡΠ°ΡΡΠΈΠΉ Π±Π°ΠΉΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Π·Π°Π½ΠΎΡΠΈΡΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΡΡΠ΅ΡΡΠΈΠΊ Count, ΠΌΠ»Π°Π΄ΡΠΈΠΉ Π² Timer0. ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· low (Divide) ΡΠ°ΠΊΡΠΎΠ², Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π· 256 ΡΠ°ΠΊΡΠΎΠ² (ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Timer0). Π Π½Π°ΡΠ°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½Ρ Count Π΄ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Count ΠΈ Timer0 ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π·Π°Π½ΠΎΠ²ΠΎ ΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡΠ° PWM. ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ PWM ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· low (Divide)+256*high (Divide) = Divide ΡΠ°ΠΊΡΠΎΠ². ΠΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. ΠΠ½Π°ΡΠ°Π»Π΅ ΠΎΠ½ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° 4. ΠΡΠΈ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ 252 ΠΊΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΠΌΠ΅Π½ΡΡΠ°ΡΡΡΡ Π½Π° 4 Π΄ΠΎ 0, ΠΏΠΎΡΠΎΠΌ Π²Π½ΠΎΠ²Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡΡΡ ΠΈ Ρ. Π΄. ΠΡΠΎ ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ ΡΠΈΠ³Π½Π°Π» ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ. ΠΠΎΠ»Π½ΡΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΡΠΈΠ³Π½Π°Π»Π° ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ Π·Π° 2*63=126 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡΠ°, Ρ. Π΅. Π·Π° 126*Divide ΡΠ°ΠΊΡΠΎΠ².
Π§Π°ΡΡΠΎΡΠ° ΡΠΈΠ³Π½Π°Π»Π° Freq=Fck/(510*Divide). ΠΡΠΈ Fck=8ΠΠΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Divide=8 000 000/126/Freq. ΠΠ΄Π΅ΡΡ 8 000 000/126=63 492 ΠΈ Π΅ΡΡΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ K.
ΠΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½Π°Ρ ΡΡ Π΅ΠΌΠ° ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π‘Ρ Π΅ΠΌΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ PCAD 2001.
ΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ | ΠΠΎΠ». | ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ | |
ΠΠΎΠ½Π΄Π΅Π½ΡΠ°ΡΠΎΡΡ Π10−17Π ΠΎΠ0.460.172Π’Π£ | |||
Π10−17Π 22 ΠΏΠ€ | C1,C2 | ||
Π10−17Π 0,01 ΠΌΠΊΠ€ | C3 | ||
Π10−17Π 0,47mF | C4 | ||
ΠΠΎΠ½Π΄Π΅Π½ΡΠ°ΡΠΎΡ ΡΠ»Π΅ΠΊΡΡΠΎΠ»ΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ K50−35 1,0mFx16 Π | C5…C9 | ||
ΠΠΈΠΊΡΠΎΡΡ Π΅ΠΌΡ | |||
AT90S2313 | D1 | ||
MAX232 | D2 | ||
Π Π΅Π·ΠΈΡΡΠΎΡ P1−12−0,125 620 ΠΠΌ ΠΠΠ¨Π.434 110.050Π’Π£ | R1 | ||
ΠΠ²Π°ΡΡΠ΅Π²ΡΠΉ ΡΠ΅Π·ΠΎΠ½Π°ΡΠΎΡ Π Π07 8 ΠΠΡ | ZQ1 | ||
ΠΠ΅ΡΠ΅ΡΠ΅Π½Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ
ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
.include «2313def.inc»
.def Temp=R20 ;Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠ΅Π³ΠΈΡΡΡ
.def FreqL=R21 ;ΡΠ°ΡΡΠΎΡΠ°, Hz
.def FreqH=R22 ;
.def Temp1=R23 ;Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠ΅Π³ΠΈΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ
.def Count=R24 ;Π²Π½Π΅ΡΠ½ΠΈΠΉ ΡΡΠ΅ΡΡΠΈΠΊ Π΄Π»Ρ Timer0
.def ac_tmp=R25 ;Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠ΅Π³ΠΈΡΡΡ ΡΡΠ°ΡΡΡΠ°
.def DivideL=R17 ;Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Timer0
.def DivideH=R18 ;Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Count
.def T_Dir=R19 ;Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡΠ° PWM
.def drem16uL=R15;ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ (Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅)
.def drem16uH=R16
.cseg
.org 0
;ΠΠ΅ΠΊΡΠΎΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ
rjmp RESET; Reset Handler
rjmp EXT_INT0; IRQ0 Handler
rjmp EXT_INT1; IRQ1 Handler
rjmp TIM_CAPT1; Timer1 Capture Handler
rjmp TIM_COMP1; Timer1 Compare Handler
rjmp TIM_OVF1; Timer1 Overflow Handler
rjmp TIM_OVF0; Timer0 Overflow Handler
rjmp UART_RXC; UART RX Complete Handler
rjmp UART_DRE; UDR Empty Handler
rjmp UART_TXC; UART TX Complete Handler
rjmp ANA_COMP; Analog Comparator Handler
;ΠΠ΅ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ
EXT_INT0 :
EXT_INT1 :
TIM_CAPT1 :
TIM_OVF1 :
UART_RXC :
UART_DRE :
UART_TXC :
ANA_COMP :
TIM_COMP1: reti
;ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
RESET:
ldi Temp, RamEnd ;ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΠΊΠ° Π½Π° ΠΊΠΎΠ½Π΅Ρ ΠΏΠ°ΠΌΡΡΠΈ
out SPL, Temp
ldi Temp, 0b00001000 ;ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΡΠ° PB
out DDRB, Temp ;PB3 (OC1) — Π²ΡΡ ΠΎΠ΄, ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ PBx — Π²Ρ ΠΎΠ΄Ρ
ldi Temp, 0b00000010 ;ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΡΠ° PD
out DDRD, Temp ;PD1 (TXD) — Π²ΡΡ ΠΎΠ΄, ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ PDx — Π²Ρ ΠΎΠ΄Ρ
ldi Temp,(1<<
;OC1 — Π½Π΅ ΠΈΠ½Π²Π΅ΡΡΠ½ΡΠΉ
out TCCR1A, Temp
ldi Temp, 1 ;ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ°ΡΡΠΎΡΡ Timer1 CLK=CK
out TCCR1B, Temp
ldi Temp, 1 ;ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ°ΡΡΠΎΡΡ Timer0 CLK=CK
out TCCR0, Temp
ldi Temp,(1<
out TIMSK, Temp
ldi Temp,(1<<
out UCR, Temp
ldi Temp, 51 ;ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠΊΠΎΡΠΎΡΡΠΈ 9600bps ΠΏΡΠΈ CK=8MHz
out UBRR, Temp
ldi DivideL, 79 ;ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΡΠ°ΡΡΠΎΡΡ 1000Hz
ldi DivideH, 0
mov Count, DivideH ;Π·Π°Π½ΠΎΡΠΈΠΌ Π² Count ΠΈ Timer0 Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Divide
out TCNT0, DivideL
sei ;ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ
;*************************************************************** Loop:
rcall Recv ;ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· UART ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅
cpi Temp,':' ;Ρ ':F '
brne Error ;Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΡΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π½Π° Error
rcall Recv
cpi Temp,'F'
brne Error
rcall Recv
cpi Temp,' '
brne Error
ldi FreqL, 0 ;Freq=0
ldi FreqH, 0
Inpf:
rcall Recv ;ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· UART ΡΠΈΠΌΠ²ΠΎΠ»Π°
cpi Temp, 13 ;Π΅ΡΠ»ΠΈ ΠΏΡΠΎΡΠΈΡΠ°Π½ ,
breq InpOk ;ΡΠΎ ΠΊΠΎΠ½Π΅Ρ Π²Π²ΠΎΠ΄Π°
subi Temp,'0' ;Π΅ΡΠ»ΠΈ ΠΏΡΠΎΡΠΈΡΠ°Π½Π° Π½Π΅ ΡΠΈΡΡΠ°,
brcs Error ;ΡΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π½Π° Error
cpi Temp, 10
brcc Error
add FreqL, FreqL ;Freq=10*Freq+digit
adc FreqH, FreqH
push FreqH
push FreqL
add FreqL, FreqL
adc FreqH, FreqH
add FreqL, FreqL
adc FreqH, FreqH
add FreqL, Temp
brcc Inpf1
inc FreqH
Inpf1:
pop Temp
add FreqL, Temp
pop Temp
adc FreqH, Temp
cpi FreqH, 1024/256 ;Π΅ΡΠ»ΠΈ Freq>1024, ΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ°
brcs Inpf
Error:
ldi Temp,'E' ;Π²ΡΠ²ΠΎΠ΄ Π² UART ΡΡΡΠΎΠΊΠΈ 'ERROR'
rcall Trans
ldi Temp,'R'
rcall Trans
ldi Temp,'R'
rcall Trans
ldi Temp,'O'
rcall Trans
ldi Temp,'R'
rcall Trans
ldi Temp, 13
rcall Trans
rjmp Loop
InpOk:
cpi FreqH, 0 ;Π΅ΡΠ»ΠΈ Freq<10, ΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ°
brne test1
cpi FreqL, 10
brcs Error
test1:
ldi Temp,'O' ;Π²ΡΠ²ΠΎΠ΄ Π² UART ΡΡΡΠΎΠΊΠΈ 'OK'
rcall Trans
ldi Temp,'K'
rcall Trans
ldi Temp, 13
rcall Trans
cli ;Π·Π°ΠΏΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ Π½Π° Π²ΡΠ΅ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Divide
;ΠΡΡΠΈΡΠ»ΡΠ΅ΠΌ Divide=K/Freq
ldi DivideL, 0×04 ;K=63 492 (Π΄Π»Ρ CK=8MHz)
ldi DivideH, 0xF8
div16u:
clr drem16uL ;ΠΎΡΠΈΡΠ°Π΅ΠΌ ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ
sub drem16uH, drem16uH
ldi Temp, 17 ;ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ ΡΠΈΠΊΠ»ΠΎΠ²
d16u1:
rol DivideL ;ΡΠ΄Π²ΠΈΠ³Π°Π΅ΠΌ Π²Π»Π΅Π²ΠΎ Π΄Π΅Π»ΠΈΠΌΠΎΠ΅
rol DivideH
dec Temp ;ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ ΡΠΈΠΊΠ»ΠΎΠ²
breq d16u2 ;Π΅ΡΠ»ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ»ΠΎ, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ Π½Π° d16u2
rol drem16uL ;ΡΠ΄Π²ΠΈΠ³Π°Π΅ΠΌ Π΄Π΅Π»ΠΈΠΌΠΎΠ΅ Π² ΠΎΡΡΠ°ΡΠΎΠΊ
rol drem16uH
sub drem16uL, FreqL ;ΠΎΡΡΠ°ΡΠΎΠΊ=ΠΎΡΡΠ°ΡΠΎΠΊ-Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ
sbc drem16uH, FreqH
brcc d16u3 ;Π΅ΡΠ»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»Π΅Π½,
add drem16uL, FreqL ;ΡΠΎ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΎΡΡΠ°ΡΠΎΠΊ
adc drem16uH, FreqH
clc ;ΠΈ ΠΎΡΠΈΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ΅Π½ΠΎΡ Π΄Π»Ρ ΡΠ΄Π²ΠΈΠ³Π° Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ,
rjmp d16u1
d16u3:
sec ;ΠΈΠ½Π°ΡΠ΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΏΠ΅ΡΠ΅Π½ΠΎΡ Π΄Π»Ρ ΡΠ΄Π²ΠΈΠ³Π° Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
rjmp d16u1
d16u2:
neg DivideL ;ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΡΠ΅ΠΌ Π΄Π»Ρ ΡΠ°ΠΉΠΌΠ΅ΡΠ°
;(ΡΠ°ΠΉΠΌΠ΅Ρ ΡΡΠΈΡΠ°Π΅Ρ Π½Π° ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ)
sei ;ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ
rjmp Loop
;************ ********************************************
Recv: ;ΠΏΡΠΈΠ΅ΠΌ Π±Π°ΠΉΡΠ° ΠΈΠ· UART
in Temp, USR ;ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ Π±Π°ΠΉΡΠ°
bst Temp, RXC
brtc Recv
in Temp, UDR ;ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π±Π°ΠΉΡΠ° Π² Temp
ret
Trans: ;ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° Π±Π°ΠΉΡΠ° Π² UART
in Temp, USR ;ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠΈΠΊΠ°
bst Temp, UDRE
brtc Trans
out UDR, Temp ;ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° Π±Π°ΠΉΡΠ° ΠΈΠ· Temp
ret
;*************************************************************
;ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΎΡ Timer0 (ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ Count ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ
;Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ)
TIM_OVF0:
in ac_tmp, SREG ;Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡ ΡΡΠ°ΡΡΡΠ°
subi Count, 1 ;ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΠΌ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΡΡΠ΅ΡΡΠΈΠΊ
brcc Tim3 ;0 Π½Π΅ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡ, Π²ΡΡ ΠΎΠ΄ΠΈΠΌ ΠΈΠ· ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ
mov Count, DivideH ;Π·Π°Π½ΠΎΡΠΈΠΌ Π² Count ΠΈ Timer0 Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Divide
out TCNT0, DivideL
in Temp1, OCR1AL ;ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ Π² Temp1 Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡΠ° PWM
cpi Temp1,0 ;Π΅ΡΠ»ΠΈ ΠΊΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡ Π΄ΠΎΡΡΠΈΠ³ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΠ°,
brne Tim1
ldi T_Dir, 4 ;ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΠ° Π½Π° ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅
Tim1:
cpi Temp1,0xFF ;Π΅ΡΠ»ΠΈ ΠΊΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡ Π΄ΠΎΡΡΠΈΠ³ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠ°,
brne Tim2
ldi T_Dir,-4 ;ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΠ° Π½Π° ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅
Tim2:
add Temp1, T_Dir ;ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ/ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΠΌ ΠΊΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡ
out OCR1AL, Temp1
Tim3:
out SREG, ac_tmp ;Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡ ΡΡΠ°ΡΡΡΠ°
reti
1) ΠΠ²Π΅Π³Π»ΠΈΡ Π‘. Π. ΠΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ AVR: ΠΠ΅ΡΠΎΠ΄. ΠΏΠΎΡΠΎΠ±ΠΈΠ΅. — ΠΠΎΠ²ΠΎΡΠΈΠ±ΠΈΡΡΠΊ: ΠΠ·Π΄-Π²ΠΎ ΠΠΠ’Π£, 2003.
2) ΠΠ΅ΡΠ΅Π±ΡΠΎΠ² Π. Π. ΠΡΠ½ΠΎΠ²Ρ ΡΠ»Π΅ΠΊΡΡΠΎΠ½ΠΈΠΊΠΈ. — Π.: ΠΠ½Π΅ΡΠ³ΠΎΠ°ΡΠΎΠΌΠΈΠ·Π΄Π°Ρ, 1985.
3) Π£ΡΠ°ΡΠ΅Π½ΠΊΠΎ Π‘. Π’., ΠΠ°ΡΠ΅Π½ΡΠΊ Π’. Π., Π’Π΅ΡΠ΅Ρ ΠΎΠ²Π° Π. Π. ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΊΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡ Π΅ΠΌ ΠΏΠΎ ΠΠ‘ΠΠ: Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ. — Π.: ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ², 1992.
4) www.analog.com
5) http://sevastianov.simbir.ru
6) http://kazus.ru
7) http://www.pcports.ru/articles/avr2.php
8) http://easyelectronics.ru/avr-uchebnyj-kurs-ispolzovanie-shim.html