Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ВстраиваСмыС систСмы. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… сСмСйства 68HC12/HCS12 с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ языка Π‘Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 103

Автор Π‘Ρ‚ΠΈΠ²Π΅Π½ Π‘Π°Ρ€Ρ€Π΅Ρ‚Ρ‚

ΠŸΠ°Ρ€Π° ИК ΠΈΠ·Π»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŒ-ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ. Π’ ΠΏΠ°Ρ€Π΅ ИК ΠΈΠ·Π»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŒ-ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ источник ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ инфракрасного (ИК) излучСния. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΎΠΌ являСтся ΡΠ²Π΅Ρ‚ΠΎΠΈΠ·Π»ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π΄ΠΈΠΎΠ΄ с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ схСмой, Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΎΠΌ β€” фототранзистор, Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊ ИК-Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρƒ излучСния с собствСнной схСмой, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π½Π° рис. 7.4. Для питания ИК Π΄ΠΈΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ элСктричСскиС Ρ†Π΅ΠΏΠΈ, описанныС Ρ€Π°Π½Π΅Π΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅, посвящСнном свСтодиодам. Ѐототранзистор ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ²Π΅Ρ‚ΠΎΡ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π±Π°Π·Π°-Π±Π°Π·Π°-эмиттСр. Когда свСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π΄Π»ΠΈΠ½Ρ‹ Π²ΠΎΠ»Π½Ρ‹ ΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄, Π² Π½Π΅ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΎΠΊ. Π’ Ρ†Π΅ΠΏΡŒ эмиттСра Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ рСзистор Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, сопротивлСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ позволяСт ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ напряТСния. Часто вмСсто рСзистора с фиксированным сопротивлСниСм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ 10-ΠΎΠ±ΠΎΡ€ΠΎΡ‚Π½Ρ‹ΠΉ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠΎΠΌΠ΅Ρ‚Ρ€, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°. Π“Ρ€Π°Ρ„ΠΈΠΊ зависимости Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ напряТСния ΠΎΡ‚ расстояния Π΄ΠΎ стСнки Π»Π°Π±ΠΈΡ€ΠΈΠ½Ρ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ. Π’Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ сигнал ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° подаСтся Π½Π° ΠΊΠ°Π½Π°Π» АЦП ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° 68HC12.

Рис. 7.4. ΠŸΠ°Ρ€Π° ΠΈΠ·Π»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŒ-ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ β€” ИК-Π»ΠΎΠΊΠ°Ρ‚ΠΎΡ€

РСзистор (Re) ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠΊ ИК излучатСля Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ номинального значСния (Ie). Π’ΠΎΠΊ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° рСзисторС Rd Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ΅ напряТСниС ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° (Vout)


Π”Π°Ρ‚Ρ‡ΠΈΠΊΠΈ Π₯ΠΎΠ»Π»Π°, ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ… Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ эффСкт Π₯ΠΎΠ»Π»Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ напряТСниС, ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ напряТСнности ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°Π³Π½ΠΈΡ‚Π½ΠΎΠ³ΠΎ поля. На Ρ€Ρ‹Π½ΠΊΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ Π₯ΠΎΠ»Π»Π° Π΄Π²ΡƒΡ… Ρ‚ΠΈΠΏΠΎΠ²: (1) ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ ΠΈ (2) Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Π΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ. Π”Π°Ρ‚Ρ‡ΠΈΠΊ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ Ρ‚ΠΈΠΏΠ°, ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ² присутствиС ΠΌΠ°Π³Π½ΠΈΡ‚Π½ΠΎΠ³ΠΎ поля, фиксируСтся Π²ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΌ состоянии. Он остаСтся Π² этом состоянии, Π΄Π°ΠΆΠ΅ Ссли ΠΌΠ°Π³Π½ΠΈΡ‚Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ исчСзаСт.

Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ΅ напряТСниС, ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ измСряСмому ΠΌΠ°Π³Π½ΠΈΡ‚Π½ΠΎΠΌΡƒ ΠΏΠΎΡ‚ΠΎΠΊΡƒ. И ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠ±ΠΎΡ€ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для обнаруТСния Β«ΠΌΠΈΠ½Β».

Рис. 7.5. Π”Π°Ρ‚Ρ‡ΠΈΠΊ Π₯ΠΎΠ»Π»Π° HAL114 ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Micronas


Π”Π°Ρ‚Ρ‡ΠΈΠΊΠΈ Π₯ΠΎΠ»Π»Π° ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ нСсколькими изготовитСлями. ΠœΡ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ простой Π΄Π°Ρ‚Ρ‡ΠΈΠΊ с трСмя Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌΠΈ HAL114 Ρ„ΠΈΡ€ΠΌΡ‹ Micronas, схСма Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ содСрТит Π΄Π²Π° рСзистора R, RL ΠΈ кондСнсатор C, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 7.5. Как ΠΈ Ρ€Π°Π½Π΅Π΅, Π³Ρ€Π°Ρ„ΠΈΠΊ зависимости Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ напряТСния ΠΎΡ‚ расстояния Π΄ΠΎ стСнки Π»Π°Π±ΠΈΡ€ΠΈΠ½Ρ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ. Π’Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ сигнал с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° подаСтся Π½Π° ΠΊΠ°Π½Π°Π» АЦП ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° 68HC12. Полная схСма интСрфСйса связи МК 68HC12 с Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ срСдствами Ρ€ΠΎΠ±ΠΎΡ‚Π° ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° рис. 7.6. Π—Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ² Π½Π° этом ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… срСдств, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΎΠ±Π·ΠΎΡ€Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Ρ€ΠΎΠ±ΠΎΡ‚Π°.

Рис. 7.6. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ срСдствами Ρ€ΠΎΠ±ΠΎΡ‚Π° ΠΈ 68HC12

7.1.4. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π±Π»ΠΎΠΊ-схСма Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

Рабочая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° Π’ΠΎΠΌΠΎΠΌ Π¨Π΅ΠΈ, Π±Ρ‹Π²ΡˆΠΈΠΌ студСнтом унивСрситСта ΡˆΡ‚Π°Ρ‚Π° Π’Π°ΠΉΠΎΠΌΠΈΠ½Π³, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ компилятора ImageCraft ICC12. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, рассмотрим структуру основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π±Π»ΠΎΠΊ-схСму Π΅Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, прСдставлСнныС Π½Π° рис. 7.7. ΠœΡ‹ просим читатСля, ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊ-схСму Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² качСствС домашнСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ (см. Π·Π°Π΄Π°Π½ΠΈΠ΅ 12).

Π°) Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π±) Π‘Π»ΠΎΠΊ-схСма Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° UML

Рис. 7.7. К ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ управлСния Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠΌ, двиТущимся вдоль стСнок Π»Π°Π±ΠΈΡ€ΠΈΠ½Ρ‚Π°

7.1.5. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄

/********************************************************************/

/*имя Ρ„Π°ΠΉΠ»Π°: robot.c                                                */

/* БистСма управлСния Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠΌ, двиТущимся Π² Π»Π°Π±ΠΈΡ€ΠΈΠ½Ρ‚Π΅: это систСма  */

/* состоящих ΠΈΠ· излучатСля ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ своС ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅*/

/* ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ стСнок Π»Π°Π±ΠΈΡ€ΠΈΠ½Ρ‚Π°.                                   */

/* ΠΎΠΏΠΎΡ€Π½ΠΎΠ³ΠΎ напряТСния, Ρ‚ΠΎ стСнка находится Π² нСпосрСдствСнной близости*/

/* ΠΎΡ‚ Ρ€ΠΎΠ±ΠΎΡ‚Π°.ΠžΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠΎΠΉ ΠΎΡ‚ пяти Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ²,*/

/* Ρ€ΠΎΠ±ΠΎΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ дальнСйшСго двиТСния   */

/* ΠΈΠ·Π±Ρ€Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ столкновСния со стСнками Π»Π°Π±ΠΈΡ€ΠΈΠ½Ρ‚Π°.      */

/* Π”Π°Ρ‚Ρ‡ΠΈΠΊ Π₯ΠΎΠ»Π»Π° позволяСт Ρ€ΠΎΠ±ΠΎΡ‚Ρƒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ΠΌΠ°Π³Π½ΠΈΡ‚Ρ‹ ΠΈΠ»ΠΈ "скрытыС ΠΌΠΈΠ½Ρ‹",*/

/* установлСнныС ΠΏΠΎΠ΄ ΠΏΠΎΠ»ΠΎΠΌ Π»Π°Π±ΠΈΡ€ΠΈΠ½Ρ‚Π°. Π ΠΎΠ±ΠΎΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π–Πš дисплСй  */

/* для сообщСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄*/

/* ΠΏΠΎΠ»ΠΈΠ½Π³Π° для считывания Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² АЦП.Π‘ΠΈΠ³Π½Π°Π» модуля ШИМ         */

/* управляСт Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»Π΅ΠΉ колСс Ρ€ΠΎΠ±ΠΎΡ‚Π°.                     */

/*Автор: Вомас Π¨Π΅ΠΈ. Π”Π°Ρ‚Π° создания: 18 октября 2002                  */

/*ПослСдняя рСдакция: 4 дСкабря 2002                                */

/********************************************************************/

/* Π’ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹*/

#include <912b32.h>

#include <stdio.h>


/*ΠŸΠΎΡ€ΠΎΠ³ΠΈ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ² Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ*/

#define opto_threshold 0x50 /* ΠΏΠΎΡ€ΠΎΠ³ оптичСского Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° */

#define hes_threshold 0x80 /* ΠΏΠΎΡ€ΠΎΠ³ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Π₯ΠΎΠ»Π»Π° */

#define forward 0

#define half_left 1

#define half_right 2

#define left_turn 3

#define right_turn 4

#define back_up 5


/*Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅*/

unsigned int i=0,j=0; /*ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ */

unsigned char sens[6]={0, 0, 0, 0, 0, 0};/*массив Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² АЦП */


/*ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ*/

void init_adc(void); /*инициализация АЦП */

void read_adc(void); /*считываниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ АЦП */

void decision(void); /*ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π΅, основанного Π½Π° */

                     /*Π΄Π°Π½Π½Ρ‹Ρ… АЦП* /

void init_pwm(void); /*инициализация ШИМ */

void pwm_motors(const char a); */активация ШИМ для пСрСсылки */

void lcd_init(void); /* инициализация дисплСя */

int putchar(char c); /*Π²Ρ‹Π²ΠΎΠ΄ символа Π½Π° дисплСй */

int putcommand(char с); /*Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° дисплСй */

void delay_25(void); /*ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½Π° 2,5 с */

void lcd_print(char *string); /*Π²Ρ‹Π²ΠΎΠ΄ строки Π½Π° Π–Πš дисплСй */


void main() {

 asm(".area vectors(abs)\n" /*инициализация Π²Π΅ΠΊΡ‚ΠΎΡ€Π° сброса МК */

  " org 0xFFF8\n"

  " .word 0x8000, 0x8000, 0x8000, 0x8000\n"

  ".text");

 lcd_init(); /*инициализация Π–Πš дисплСя */

 lcd_print("LCD initialized");

 void delay_25(void); /* Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½Π° 2,5 с */

 init_adc(); /*инициализация АЦП */

 lcd_print("ADC initialized");

 void delay_25(void); /* Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½Π° 2,5 с */

 init_pwm(); /*инициализация ШИМ */

 lcd_print("PWM initialized");

 void delay_25(void); /* Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½Π° 2,5 с */

 while(1) / *Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» */

 {

  read_adc(); /* ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· АЦП */

  decision(); /* ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ двиТСния */

 }

} /*ΠΊΠΎΠ½Π΅Ρ† ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ main*/


********************************************************************/

/*initialize_adc: инициализация АЦП ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° 68HC12             */

/*******************************************************************/

void init_adc() {

 ATDCTL2 = 0x80; /*Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΡ‚ ADPU для ΠΏΠΎΠ΄Π°Ρ‡ΠΈ питания Π½Π° АЦП */

 ATDCTL3 = 0x00;

 ATDCTL4 = 0x7F; /* частоту P_CLK ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π° 125 ΠΊΠ“Ρ† */

 /* врСмя прСобразования: 32 ATD CLK, */

 /*1 считываниС ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 256 мкс /*

 for(i=0; i<67; i++) /*Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° 100 мкс ΠΏΡ€ΠΈ 8 ΠœΠ“Ρ† E_CLK */

 {

  ;

 }

}

/********************************************************************/


/********************************************************************/

/*read_adc: считываниС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΈΠ· АЦП                           */

/********************************************************************/

void read_adc() {

 ATDCTL5 = 0x50; /*Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ АЦП Π½Π° Ρ€Π΅ΠΆΠΈΠΌ многоканального,*/

                 /* прСобразования 8 ΠΊΠ°Π½Π°Π»ΠΎΠ² */

 while((ATDSTAT & 0x8000) == 0)/* ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π±ΠΈΡ‚Π° SCF для окончания */

                               /*прСобразования */

 {

  ;

 }

 /* сохранСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π² глобальном массивС */

 sens[0] = ADR7H; /*дальний Π»Π΅Π²Ρ‹ΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ */

 sens[l] = ADR6H; /*срСдний ΠΏΡ€Π°Π²Ρ‹ΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ */

 sens[2] = ADR5H; /*Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ */

 sens[3] = ADR4H; /* срСдний ΠΏΡ€Π°Π²Ρ‹ΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ */

 sens[4] = ADR3H; /* дальний ΠΏΡ€Π°Π²Ρ‹ΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ */

 sens[5] = ADR2H; /*Π΄Π°Ρ‚Ρ‡ΠΈΠΊ Π₯ΠΎΠ»Π»Π°*/

}


/********************************************************************/

/*decision(): Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π΅ основано Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ ΠΎΡ‚*/

/* пяти Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ². ΠŸΠΎΡ€ΠΎΠ³ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Π₯ΠΎΠ»Π»Π° (hes_threshold) ΠΈ ΠΏΠΎΡ€ΠΎΠ³       */

/* оптичСского Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° (opto_threshold) ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ.*/