ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ сигнала Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹

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

Рассмотрим Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° прСрывания ΠΏΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ 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

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