Π‘ΡΠ΅Π½Π°ΡΠΈΠΉ: Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ ΡΠΎΠ±ΠΎΡΠΎΠΌ Ρ Π½Π°Ρ Π±ΡΠ»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°Π΄Π°Ρ ΠΏΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°Π·Π½Π°ΡΠΈΡΡ ΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ. ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠ΅ ΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π·Π°Π΄Π°Ρ Ρ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°Π΄Π°ΡΠ΅ Ρ ΡΠ°ΠΌΡΠΌ Π²ΡΡΠΎΠΊΠΈΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π½Π°ΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΡ ΡΠ°Π±ΠΎΡΡ ΡΠΎΠ±ΠΎΡΠ°, ΡΡΠΎΠ±Ρ Π½Π°Π·Π½Π°ΡΠΈΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΡ Π·Π°Π΄Π°Ρ. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°Ρ ΡΠΎΠ±ΠΎΡ Π΄Π΅Π·Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ°Π΅ΡΡΡ ΠΊ ΠΌΠΈΠ½Π΅, ΠΌΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ Π·Π°Π΄Π°ΡΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΌΠΈΠ½ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ 1. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°ΠΌΡΠΉ Π²ΡΡΠΎΠΊΠΈΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ, ΡΠ°Π²Π½ΡΠΉ 2 ΠΏΡΠΈΡΠ²ΠΎΠΈΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅Π·Π΄Π° ΠΌΠΈΠ½Ρ. ΠΠ°Π΄Π°ΡΠ΅ ATD-ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΡΠ²ΠΎΠΈΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ 3, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π±Π»ΠΈΠ·ΠΎΡΡΠΈ ΡΡΠ΅Π½ΠΎΠΊ Π»Π°Π±ΠΈΡΠΈΠ½ΡΠ°. ΠΠ°Π΄Π°ΡΠ΅ Π²ΡΠ±ΠΎΡΠ° ΠΏΠΎΠ²ΠΎΡΠΎΡΠ° ΠΏΡΠΈΡΠ²ΠΎΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ 4, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΡΠΎ ΡΡΠ΅Π½ΠΊΠ°ΠΌΠΈ. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π·Π°Π΄Π°ΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΠΠ Π½Π°Π·Π½Π°ΡΠ°Π΅ΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ 5. ΠΡΠΎ ΡΠ°ΠΌΡΠΉ Π½ΠΈΠ·ΠΊΠΈΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π΄Π»Ρ Π·Π°Π΄Π°Ρ, ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΡ ΠΊ Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ; ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π²ΡΠ΅Ρ ΠΏΡΠΎΡΠΈΡ Π·Π°Π΄Π°Ρ Π΅ΡΠ΅ Π½ΠΈΠΆΠ΅. ΠΡΡΠ°ΡΡΠΈΠ΅ΡΡ Π·Π°Π΄Π°ΡΠΈ ΠΈΠΌΠ΅ΡΡ Π΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ. ΠΠ½ΠΈ Π°ΠΊΡΠΈΠ²Π½Ρ Π½Π° Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ°ΠΏΠ°Ρ ΡΠ°Π±ΠΎΡΡ Π½Π°ΡΠ΅ΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π° Π·Π°ΡΠ΅ΠΌ Π²Ρ ΠΎΠ΄ΡΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π±Π΅Π·Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΡ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π½Π°Π·Π½Π°ΡΠ°Π΅ΠΌ ΠΈΠΌ ΡΠ°ΠΌΡΠΉ Π½ΠΈΠ·ΠΊΠΈΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ, Π΄Π°Π²Π°Ρ ΠΈΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΡ 6 (ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΠΠ), 7 (ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ATD), ΠΈ 8 (ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π¨ΠΠ).
Π€ΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π·Π°Π΄Π°Ρ. ΠΠ°ΠΊ ΠΌΡ ΡΠΆΠ΅ Π²ΡΡΡΠ½ΠΈΠ»ΠΈ Π² ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅, ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ Π·Π°Π΄Π°ΡΠΈ Π½Π° Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΠ°ΡΡΠΈ ΠΈΠ»ΠΈ ΡΠ°Π·Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ² ΡΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΠΎΡΠΊΠΈ Π²ΡΡ ΠΎΠ΄Π°. ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΠΠ‘Π Π Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ, Π·Π°Π΄Π°ΡΠ° ΡΠ΅Π΄ΠΊΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΏΠΎΡΠΎΠ±Π½Π° Π·Π°Π²Π΅ΡΡΠΈΡΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π½Π΅ΠΉ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΎΡ Π½Π°ΡΠ°Π»Π° Π΄ΠΎ ΠΊΠΎΠ½ΡΠ°. Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π·Π°Π΄Π°ΡΠ° Π·Π°Π²Π΅ΡΡΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ°ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΈ Π·Π°ΡΠ΅ΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° Π·Π°Π΄Π°ΡΠ΅ΠΉ ΠΈΠ»ΠΈ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ Ρ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ. Π€Π°ΠΊΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° Π·Π°Π΄Π°ΡΠΈ Ρ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ Π΅ΡΠ΅ Π½Π΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π΅ΠΉ. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΎΡ ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΊ Π΄ΡΡΠ³ΠΎΠΉ, ΠΏΡΠ΅ΡΠ²Π°Π² Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² Π·Π°ΡΠ°Π½Π΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΡΠ΄ΠΎΠ±Π½ΠΎΠΌ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ΅. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π΅ΠΌΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΅Π³ΠΎ Π² ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΡ Π½Π° ΡΡΠΈ ΡΠ°ΡΡΠΈ. ΠΠ΅ΡΠ²ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π·Π°Π΄Π°ΡΠ° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ, ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠ΅ΡΠ²ΡΡ ΡΡΠ΅ΡΡ ΠΊΠΎΠ΄Π° Π΄ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΎΡΠΌΠ΅ΡΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ (ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π²Π°ΠΌΠΈ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ). ΠΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ ΡΡΠΎΠΉ ΠΎΡΠΌΠ΅ΡΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² TCB, ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΏΡΠ΅ΡΡΠ²Π°Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠ΅ΠΉ. ΠΠ°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π·Π°Π΄Π°ΡΠ° Ρ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ. ΠΠΎΠ³Π΄Π° ΠΏΡΠ΅ΡΠ²Π°Π½Π½Π°Ρ Π·Π°Π΄Π°ΡΠ° ΡΠ½ΠΎΠ²Π° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄ΡΠ°Π³ΠΎΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΎΠ½Π° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ°, Π³Π΄Π΅ Π±ΡΠ»Π° ΠΏΡΠ΅ΡΠ²Π°Π½Π° ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π²ΡΠΎΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°. ΠΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ, ΠΏΠΎΠΊΠ° Π·Π°Π΄Π°ΡΠ° Π½Π΅ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ Π²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
ΠΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅ΠΌ ΡΠ°ΠΊΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ.
ΠΡΠΈΠΌΠ΅Ρ: ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΡΠΎΠ±ΠΎΡ, ΠΈΠΌΠ΅ΡΡΠΈΠΉ ΠΏΡΡΡ ΠΠ Π»ΠΎΠΊΠ°ΡΠΎΡΠΎΠ² (ΡΠΈΡ. 8.16) Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ Π½Π°Π·Π²Π°Π½Π½ΡΡ process_turn, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΡ ATD ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° 68HC12, Π½Π°ΡΠΈΠ½Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ, ΡΡΠΎΠ±Ρ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΡΠ΅ ΡΠΈΠ³Π½Π°Π»Ρ ΠΎΡ ΠΏΡΡΠΈ Π΄Π°ΡΡΠΈΠΊΠΎΠ² (Ρ Π½ΠΎΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΎΡ 0 Π΄ΠΎ 4), ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ ATD ΠΎΡ 7 Π΄ΠΎ 3, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΡΡ ΠΎΠ΄ Π΄Π°ΡΡΠΈΠΊΠ° Π₯ΠΎΠ»Π»Π°, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π½ΠΈΠΆΠ½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΡΠΎΠ±ΠΎΡΠ°, ΡΡΠΎΠ±Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°ΡΡ ΠΌΠ°Π³Π½ΠΈΡΠ½ΡΠ΅ ΠΌΠΈΠ½Ρ, ΡΠ²ΡΠ·Π°Π½ Ρ ΠΊΠ°Π½Π°Π»ΠΎΠΌ 2 ATD. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π½, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΠΊΠΎΠ΄, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΠΎΡΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ.
Π ΠΈΡ. 8.16. Π ΠΎΠ±ΠΎΡ c ΠΏΡΡΡΡ ΠΠ Π»ΠΎΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ ΠΈ Π΄Π°ΡΡΠΈΠΊΠΎΠΌ Π₯ΠΎΠ»Π»Π°. ΠΠ-Π΄Π°ΡΡΠΈΠΊ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΠ΅ ΡΡΠ΅Π½ΠΎΠΊ Π»Π°Π±ΠΈΡΠΈΠ½ΡΠ°, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π΄Π°ΡΡΠΈΠΊ Π₯ΠΎΠ»Π»Π° ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΠ΅ ΠΌΠ°Π³Π½ΠΈΡΠ½ΡΡ ΠΌΠΈΠ½.
ΠΠΎΠ΄ process_turn, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ°, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅.
void process_turn() {
/*ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ATD */
ATDCTL2 = 0x80; /*ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ»Π°Π³Π° ADPU, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄Π°ΡΡ ΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΡ ATD*/
ATDCTL3 = 0x00; /*ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Β«Π·Π°ΠΌΠΎΡΠ°ΠΆΠΈΠ²Π°Π½ΠΈΠ΅Β» ΡΠΈΡΡΠ΅ΠΌΡ */
ATDCTL4 = 0x7F; /*Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠΎΡΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° P Π΄ΠΎ 125 ΠΊΠΡ */
/*Π²ΡΠ±ΠΎΡΠΊΠ°, Π²ΡΠ΅ΠΌΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ = 32 ATD ΡΠΈΠΊΠ»Π° */
/* 1 Π²ΡΠ±ΠΎΡΠΊΠ° Π·Π° ΠΊΠ°ΠΆΠ΄ΡΠ΅ 256 ΠΌΠΊΡ */
for (i=0; i<67; i++) { /* ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ 100 ΠΌΠΊΡ ΠΏΡΠΈ 8 ΠΠΡ ECLK*/
;
}
/*ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ATD-ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ */
ATDCTL5 = 0x50; /*ΠΠ°ΡΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΠ°Π½Π°Π»ΡΠ½ΠΎΠ΅ ATD-ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ */
/* Π΄Π»Ρ 8 ΠΊΠ°Π½Π°Π»ΠΎΠ² */
while((ATDSTAT & 0x8000) == 0) { /* ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ*/
/*ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ»Π°Π³Π° SCF */
;
}
/* ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ATD-ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ*/
/* Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅ char*/
sens[0] = ADR7H; /*ΠΊΡΠ°ΠΉΠ½ΠΈΠΉ Π»Π΅Π²ΡΠΉ Π΄Π°ΡΡΠΈΠΊ */
sens[1] = ADR6H; /*ΡΡΠ΅Π΄Π½ΠΈΠΉ Π»Π΅Π²ΡΠΉ Π΄Π°ΡΡΠΈΠΊ */
sens[2] = ADR5H; /*ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΡΠΉ Π΄Π°ΡΡΠΈΠΊ */
sens[3] = ADR4H; /*ΡΡΠ΅Π΄Π½ΠΈΠΉ ΠΏΡΠ°Π²ΡΠΉ Π΄Π°ΡΡΠΈΠΊ */
sens[4] = ADR3H; /*ΠΊΡΠ°ΠΉΠ½ΠΈΠΉ ΠΏΡΠ°Π²ΡΠΉ Π΄Π°ΡΡΠΈΠΊ */
sens[5] = ADR2H; /*ΠΠ°ΡΡΠΈΠΊ Π₯ΠΎΠ»Π»Π°*/
/*Π°Π½Π°Π»ΠΈΠ· ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π΄Π°ΡΡΠΈΠΊΠΎΠ² Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ΅. ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΏΠΎΡΠΎΠ³ΠΈ Π΄Π»Ρ*/
/*Π΄Π°ΡΡΠΈΠΊΠ° Π₯ΠΎΠ»Π»Π°(hes_threshold) ΠΈ Π΄Π»Ρ ΠΠ-Π΄Π°ΡΡΠΈΠΊΠΎΠ² (opto_threshold)ΡΠ²Π»ΡΡΡΡΡ*/
/* Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎ*/
if (sens[5] < hes_threshold) { /*ΡΠΈΠ³Π½Π°Π» Ρ Π΄Π°ΡΡΠΈΠΊΠ° Π₯ΠΎΠ»Π»Π°, ΠΎΠ±ΡΠ΅Π·Π΄*/
pwm_motors(back_up); /* ΡΠΎΠ±ΠΎΡ Π΄Π°Π΅Ρ Π·Π°Π΄Π½ΠΈΠΉ Ρ ΠΎΠ΄*/
/*Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ */
/* ΠΊΠ°ΠΊ ΡΠΎΠ±ΠΎΡ ΠΎΡΡΠ΅Ρ Π°Π» Π½Π°Π·Π°Π΄ */
if(sens[0] > opto_threshold) pwm_motors(right_turn);
else pwm_motors(left_turn);
for(i=0; i<0xFFFF; i++) { /*Π·Π°Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ */
for(j=0; j<15; j++){
;
}
}
}
/*Π΅ΡΠ»ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ ΡΡΠΏΠΈΠΊ - Π·Π°Π΄Π½ΠΈΠΉ Ρ ΠΎΠ΄*/
else if((sens[2]>opto_threshold) && (sens[0]>opto_threshold) && (sens[4]>opto_threshold)) {
pwm_motors(back_up);
}
/*Π΅ΡΠ»ΠΈ ΡΡΠ΅Π½ΠΊΠΈ ΡΠΏΠ΅ΡΠ΅Π΄ΠΈ ΠΈ ΡΠ»Π΅Π²Π°, */
/*ΠΏΠΎΠ²ΠΎΡΠΎΡ ΡΠΎΠ±ΠΎΡΠ° Π½Π°ΠΏΡΠ°Π²ΠΎ */
else if((sens[0]>opto_threshold) && (sens[2]>opto_threshold)) {
pwm_motors(right_turn);
}
/*Π΅ΡΠ»ΠΈ ΡΡΠ΅Π½ΠΊΠΈ ΡΠΏΠ΅ΡΠ΅Π΄ΠΈ ΠΈ ΡΠΏΡΠ°Π²Π°, */
/*ΠΏΠΎΠ²ΠΎΡΠΎΡ ΡΠΎΠ±ΠΎΡΠ° Π½Π°Π»Π΅Π²ΠΎ */
else if((sens[2]>opto_threshold) && (sens[4]>opto_threshold)) {
pwm_motors(left_turn);
}
/*Π΅ΡΠ»ΠΈ ΡΡΠ΅Π½ΠΊΠ° ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠ΅Π΄Π½ΠΈΠΌ ΠΏΡΠ°Π²ΡΠΌ */
/* Π΄Π°ΡΡΠΈΠΊΠΎΠΌ, ΡΠΎ ΠΏΠΎΠ»ΡΠΏΠΎΠ²ΠΎΡΠΎΡ Π½Π°ΠΏΡΠ°Π²ΠΎ */
else if (sens[1] > opto_threshold) {
pwm_motors(half_right);
}
/*Π΅ΡΠ»ΠΈ ΡΡΠ΅Π½ΠΊΠ° ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠ΅Π΄Π½ΠΈΠΌ Π»Π΅Π²ΡΠΌ */
/* Π΄Π°ΡΡΠΈΠΊΠΎΠΌ, ΡΠΎ ΠΏΠΎΠ»ΡΠΏΠΎΠ²ΠΎΡΠΎΡ Π½Π°Π»Π΅Π²ΠΎ */
else if (sens[3]>opto_threshold) {
pwm_motors(half_left);
}
/*Π΅ΡΠ»ΠΈ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΠΎΡ Π΄Π°ΡΡΠΈΠΊΠΎΠ² Π½Π΅Ρ, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΏΠ΅ΡΠ΅Π΄*/
else {
pwm_motors(forward);
}
}
ΠΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄ Π½Π° ΡΡΠΈ ΡΠ°ΡΡΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠ΅ ΠΠ‘Π Π Π±Π΅Π· ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΡΠ°Π²ΠΈΡΡ ΡΠΎΡΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ATD ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π·Π°ΠΏΠΈΡΠΈ Π΄Π°Π½Π½ΡΡ Ρ ATD. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠ΅ΡΡΠ²Π°ΡΡ ΠΈ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ. Π§ΡΠΎΠ±Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²Π²Π΅ΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π½Π°Π·ΠΎΠ²Π΅ΠΌ code_section. ΠΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π½Π°ΠΌ ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΡΡ, ΠΊΠ°ΠΊΠ°Ρ ΠΈΠ· ΡΡΠ΅Ρ ΡΠ°ΡΡΠ΅ΠΉ ΠΊΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° ΠΏΡΠΈ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ Π·Π°Π΄Π°ΡΠΈ.
int process_turn(int code_section) {
switch(code_section) {
case 0:
/*ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ATD */
ATDCTL2 = 0x80; /*Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ATD */
ATDCTL3 = 0x00; /*ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΏΡΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ */
ATDCTL4 = 0x7F; /*Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠΎΡΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° P Π΄ΠΎ 125 ΠΊΠΡ */
/*Π²ΡΠ±ΠΎΡΠΊΠ°, Π²ΡΠ΅ΠΌΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ = 32 ATD ΡΠΈΠΊΠ»Π° */
/* 1 Π²ΡΠ±ΠΎΡΠΊΠ° Π·Π° ΠΊΠ°ΠΆΠ΄ΡΠ΅ 256 ΠΌΠΊΡ */
for (i=0; i<67; i++) {
/* ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ 100 ΠΌΠΊΡ ΠΏΡΠΈ 8 ΠΠΡ ECLK*/
;
}
code_section = 1; /*update code_section variable */
break;
case 1:
/*ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ATD-ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ */
ATDCTL5 = 0x50; /*ΠΠ°ΡΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΠ°Π½Π°Π»ΡΠ½ΠΎΠ΅ ATD-ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅*/
/* Π΄Π»Ρ 8 ΠΊΠ°Π½Π°Π»ΠΎΠ² */
while ((ATDSTAT & 0x8000) == 0) {
/* ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ*/
/*ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ»Π°Π³Π° SCF */
;
}
/* ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ATD-ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ*/
/* Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅ char */
sens[0] = ADR7H; /*ΠΊΡΠ°ΠΉΠ½ΠΈΠΉ Π»Π΅Π²ΡΠΉ Π΄Π°ΡΡΠΈΠΊ */
sens[1] = ADR6H; /*ΡΡΠ΅Π΄Π½ΠΈΠΉ Π»Π΅Π²ΡΠΉ Π΄Π°ΡΡΠΈΠΊ */
sens[2] = ADR5H; /*ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΡΠΉ Π΄Π°ΡΡΠΈΠΊ */
sens[3] = ADR4H; /*ΡΡΠ΅Π΄Π½ΠΈΠΉ ΠΏΡΠ°Π²ΡΠΉ Π΄Π°ΡΡΠΈΠΊ */
sens[4] = ADR3H; /*ΠΊΡΠ°ΠΉΠ½ΠΈΠΉ ΠΏΡΠ°Π²ΡΠΉ Π΄Π°ΡΡΠΈΠΊ */
sens[5] = ADR2H; /*ΠΠ°ΡΡΠΈΠΊ Π₯ΠΎΠ»Π»Π° */
code_section = 2; /*update code_section variable */
break;
case 2:
/*Π°Π½Π°Π»ΠΈΠ· ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π΄Π°ΡΡΠΈΠΊΠΎΠ² Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ΅. ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΏΠΎΡΠΎΠ³ΠΈ Π΄Π»Ρ*/