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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ cortex-m3

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

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΏΠΎΡ€Ρ‚Π° ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ для Π½ΡƒΠΆΠ½Ρ‹Ρ… Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ² Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΉΠΊΠΈ. ВсС адрСса ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ условного обозначСния Π‘Π°Π·Π°→смСщСниС, Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках ΡƒΠΊΠ°Π·Π°Π½ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² Π±ΠΈΡ‚ΠΎΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π°. Рассмотрим нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² построСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΏΠΎΡ€ΡΠ΄ΠΊΠ΅ услоТнСния. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ cortex-m3 (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ C/C++ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² сСмСйства Cortex-ΠœΠ—. Π’Π½Π°Ρ‡Π°Π»Π΅ рассмотрСны ΠΎΠ±Ρ‰ΠΈΠ΅ вопросы программирования ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… устройств Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘ΠΈ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Ρ‹ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Π΅ студСнтам ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ практичСских занятий.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… устройств стСнда

Π‘Π²Π΅Ρ‚ΠΎΠ΄ΠΈΠΎΠ΄Π½Ρ‹Π΅ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹

ΠœΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ 6 ΠΏΠΎΡ€Ρ‚ΠΎΠ² Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΠΎ 16 разрядов ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ. Π’Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΏΠΎΡ€Ρ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Π°Ρ настройка ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ ΠΏΠΎΡ€Ρ‚Π°. На Ρ€ΠΈΡ. 3.1 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ схСмы стСнда, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠΉΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ свСтодиодных ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ².

Π‘Ρ…Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ свСтодиодных ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ².

Рис. 3.1. Π‘Ρ…Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ свСтодиодных ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ².

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΏΠΎΡ€Ρ‚Π° ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ для Π½ΡƒΠΆΠ½Ρ‹Ρ… Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ² Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΉΠΊΠΈ. ВсС адрСса ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ условного обозначСния Π‘Π°Π·Π°->смСщСниС, Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках ΡƒΠΊΠ°Π·Π°Π½ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² Π±ΠΈΡ‚ΠΎΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π°. Рассмотрим нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² построСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΏΠΎΡ€ΡΠ΄ΠΊΠ΅ услоТнСния.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° 1. ВывСсти ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π½Π° ΡΠ²Π΅Ρ‚ΠΎΠ΄ΠΈΠΎΠ΄Π½Ρ‹Π΅ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹. РСшСниС Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для Π»ΠΈΠ½ΠΈΠΉ РБО ΠΈ Π Π‘1 ΠΏΠΎΡ€Ρ‚Π° PORTC. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ содСрТится ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² настройки, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Π²Ρ‹Π²ΠΎΠ΄Π° статичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½Π° Ρ€ΠΈΡ. 3.2.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° 1 для Π²Ρ‹Π²ΠΎΠ΄Π° статичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° свСтодиодныС.

Рис. 3.2. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° 1 для Π²Ρ‹Π²ΠΎΠ΄Π° статичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° ΡΠ²Π΅Ρ‚ΠΎΠ΄ΠΈΠΎΠ΄Π½Ρ‹Π΅.

ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Рассмотрим ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ рСгистров настройки ΠΏΠΎΡ€Ρ‚Π° PORT Π‘.

MDR_RST_CLK->PER_CLOCK [31:0], смСщСниС 0×1Π‘-рСгистр управлСния Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ частотой ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ². Π‘ΠΈΡ‚Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‚Ρ‚Π°ΠΊΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² (0-Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ, 1 — Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ). ΠŸΠΎΡ€Ρ‚Ρƒ PORTC соотвСтствуСт Π±ΠΈΡ‚ 23.

MDR_PORTC, Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ адрСс 0×400Π’_8000 — ΠΏΠΎΡ€Ρ‚ PORTC.

MDR_PORTC->RXTX [15:0], смСщСниС 0×0 — Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΡ€Ρ‚Π° PORTC.

MDR_PORTC->OE [15:0], смСщСниС 0×04 — Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΡ€Ρ‚Π° (0 — Π²Π²ΠΎΠ΄, 1 — Π²Ρ‹Π²ΠΎΠ΄).

MDR_PORTC->ANALOG [15:0], смСщСниС ΠžΡ…ΠžΠ‘ — Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΡ€Ρ‚Π° (0 — Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ, 1 — Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ).

MDR_PORTC->PWR [31:0], смСщСниС ΠžΡ… 18 — ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΡ€Ρ‚Π° Π²Ρ‹Π²ΠΎΠ΄Π°: 00 — ΠΏΠΎΡ€Ρ‚ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½;

  • 01 — ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ Ρ„Ρ€ΠΎΠ½Ρ‚ (100 нс);
  • 10 — быстрый Ρ„Ρ€ΠΎΠ½Ρ‚ (20 нс);
  • 11 — ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ Ρ„Ρ€ΠΎΠ½Ρ‚ (10 нс).

ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ структурированиС ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ 1. Π²Ρ‹Π΄Π΅Π»ΠΈΠ² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎΡ€Ρ‚Π° Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ io_init. Одна ΠΈΠ· Ρ†Π΅Π»Π΅ΠΉ структурирования Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ использования созданных ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½Π° Ρ€ΠΈΡ. 3.3.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ 1 (вСрсия 1).

Рис. 3.3. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ 1 (вСрсия 1).

РСкомСндуСтся Π³ΠΎΠ»ΠΎΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ main () всСгда Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ„Π°ΠΉΠ»Π°, Π° ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ — вслСд Π·Π° Π½Π΅ΠΉ. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ„Π°ΠΉΠ»Π° ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚. Π΅. Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, связанныС с ΡΡ‚ΠΈΠΌΠΈ функциями. Π’ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΊΠΎΠΉ способ дСкларирования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚. Π΅. Π±ΡƒΠ΄Π΅ΠΌ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄ Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ main (). Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½Π° Ρ€ΠΈΡ. 3.4.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ 1 (вСрсия 2).

Рис. 3.4. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ 1 (вСрсия 2).

ΠŸΡ€ΠΎΠ³ Ρ€Π°ΠΌΠΌΠ° 2. ВывСсти Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π½Π° ΠΎΠ±Π° свСтодиодных ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°. На Ρ€ΠΈΡ. 3.5 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ схСмы ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ частоты. ΠœΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° встроСнных Ρ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹Ρ… Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° (HSI ΠΈ LSI) ΠΈ Π΄Π²Π΅ Π»ΠΈΠ½ΠΈΠΈ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ внСшнСго тактирования (HSE ΠΈ LSE), Π° Ρ‚Π°ΠΊΠΆΠ΅ спСциализированный Π±Π»ΠΎΠΊ формирования частоты Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ синхронизации. Оба встроСнных Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° (HSI ΠΈ LSI) автоматичСски Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ появлСнии ΠΏΠΈΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ напряТСния Ucc.

Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ схСмы ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ частоты.

Рис. 3.5. Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ схСмы ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ частоты.

ВстроСнный RC-Π³Π΅ΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ HSI Π²Ρ‹Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΡƒΡŽ частоту 8 ΠœΠ“Ρ†, ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ процСссорноС ядро всСгда запускаСтся Π½Π° Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ частотС HSI. ΠŸΡ€ΠΈ дальнСйшСй Ρ€Π°Π±ΠΎΡ‚Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ HSI ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΈΠ»ΠΈ подстроСн.

ВстроСнный RC-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ LSI Π²Ρ‹Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΡƒΡŽ частоту ΠΎΠΊΠΎΠ»ΠΎ 32 ΠšΠ“Ρ†, которая ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для формирования Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ /Ρ€ΠΎΠ³. ΠŸΡ€ΠΈ дальнСйшСй Ρ€Π°Π±ΠΎΡ‚Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ LSI ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½.

Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ HSE ΠΈ LSE ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для Π²Ρ‹Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ частоты ΠΎΡ‚ 2 Π΄ΠΎ 16 ΠœΠ“Ρ† (HSE) ΠΈ 32 ΠšΠ“Ρ† (LSE). ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Π΄Π²ΡƒΡ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ…: Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ с Π²Π½Π΅ΡˆΠ½ΠΈΠΌ Ρ€Π΅Π·ΠΎΠ½Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ»ΠΈ внСшний Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€, Ρ‚. Π΅. внСшниС сигналы тактирования, ΠΏΠΎΠ΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π½Π° Π»ΠΈΠ½ΠΈΡŽ HSE ΠΈΠ»ΠΈ LSE.

Π’ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ 2 (рис. 3.6) ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒ частоты CPU PLL, Π° Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ внСшний Ρ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ HSE, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π° Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ частотС 8 ΠœΠ“Ρ†. Ѐункция io_init здСсь взята ΠΈΠ· ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ 1, ΠΎΠ½Π° ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»Π°ΡΡŒ Ρ€Π°Π½Π΅Π΅. Π’ ΡΡ‚ΠΎΠΉ связи обсудим Ρ‚ΠΎΠ»ΡŒΠΊΠΎ настройки ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ частоты Π² Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ frq_init.

На Ρ€ΠΈΡ. 3.7 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° функция frq_init_pll, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ PLL (ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒ частоты). Рассмотрим Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ рСгистров.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° 2 для Π²Ρ‹Π²ΠΎΠ΄Π° динамичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ (Π±Π΅Π· использования PLL).

Рис. 3.6. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° 2 для Π²Ρ‹Π²ΠΎΠ΄Π° динамичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ (Π±Π΅Π· использования PLL).

Ѐункция frq_init_pll, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ PLL.

Рис. 3.7. Ѐункция frq_init_pll, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ PLL.

MDR_RST_CLK. Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ адрСс 0×4002_0000 — ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ частоты;

MDR_RST_CLK->HS_CONTROL [31:0], смСщСниС 0×08 — рСгистр для управлСния высокочастотным Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈ ΠΎΡΡ†ΠΈΠ»Π»ΡΡ‚ΠΎΡ€ΠΎΠΌ. [31:2] - Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ся: Π±ΠΈΡ‚ [1] - ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ HSE осциллятором (0 — Ρ€Π΅ΠΆΠΈΠΌ осциллятора. 1 — Ρ€Π΅ΠΆΠΈΠΌ внСшнСго Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°); Π±ΠΈΡ‚ [0] - ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ HSE осциллятором (0 — Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½, 1 — Π²ΠΊΠ»ΡŽΡ‡Π΅Π½);

MDR_RST_CLK->CLOCK_STATUS [31:0], смСщСниС 0×0 — рСгистр состояния Π±Π»ΠΎΠΊΠ° управлСния Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ частоты. Π‘ΠΈΡ‚Ρ‹ [31:3] - Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ся; Π±ΠΈΡ‚ 2 — Ρ„Π»Π°Π³ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ Ρ€Π΅ΠΆΠΈΠΌ осциллятора HSE (0 — осциллятор Π½Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½ ΠΈΠ»ΠΈ Π½Π΅ ΡΡ‚Π°Π±ΠΈΠ»Π΅Π½; 1 — осциллятор Π·Π°ΠΏΡƒΡ‰Π΅Π½ ΠΈ ΡΡ‚Π°Π±ΠΈΠ»Π΅Π½); Π±ΠΈΡ‚ 1 — Ρ„Π»Π°Π³ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ Ρ€Π΅ΠΆΠΈΠΌ CPU PLL; Π±ΠΈΡ‚ 0 — Ρ„Π»Π°Π³ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ Ρ€Π΅ΠΆΠΈΠΌ USB PLL;

MDR_RST_CLK->CPU_CLOCK [31:0], смСщСниС ΠžΡ…ΠžΠ‘-рСгистр управлСния Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ частотой процСссорного ядра. НазначСниС Π±ΠΈΡ‚ΠΎΠ²:

[31:10]- Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ся;

[9:8] (CPU_CLK) — Π²Ρ‹Π±ΠΎΡ€ источника HCLK (00 — HS1; 01 — CPU_C3; 10 — LSE; 11 — LSI);

[7:4] (CPU_C3_SEL) — Π²Ρ‹Π±ΠΎΡ€ дСлитСля для получСния CPU_C3: CPU_C3 = CPU_C2/n (ΠžΡ…Ρ…Ρ… — n = 1; 1000-ΠΏ = 2; 1001 — ΠΏ = 4; 1010-ΠΏ = 8… 1111 -ΠΏ = 256);

[3] - Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся. РСкомСндуСтся Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅;

[2] (CPU_C2_SEL) — Π²Ρ‹Π±ΠΎΡ€ источника для CPU_C2 (0 — CPU_C1; 1 — PLLCPUo);

[1:0] (CPU_C1_SEL) — Π²Ρ‹Π±ΠΎΡ€ источника для CPU_C1 (00 — HSI; 01 — HSI/2; 10 — HSE; 11 — HSE/2).

Π’ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ 2 Π±Ρ‹Π» сдСлан ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€ для Π±ΠΈΡ‚ΠΎΠ² [9:0] рСгистра MDR_RST_CLK->CPU_CLOCK = 0×102 = 100 000 010:

01 (CPU_C3) — 0000 (ΠΈ = 1) — 0 (Ρ…) — 0 (CPU_C 1) -10 (HSE).

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ частотС содСрТится Π² ΡΠΈΡΡ‚Π΅ΠΌΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ SystemCoreClock, Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ осущСствляСт систСмная функция SystemCoreClockUpdateQ. РСкомСндуСтся всС настройки Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ частоты Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ систСмной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SystemCoreClockUpdateQ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всСгда ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π² Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ состоянии ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ SystemCoreClock.

ΠžΠ±ΡΡƒΠ΄ΠΈΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ рСгистров управлСния ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»Π΅ΠΌ частоты PLL CPU, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ вСрсии Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ frqjnit (см. Ρ€ΠΈΡ. 3.7):

MDR_RST_CLK->PLL_CONTROL [31:0]. смСщСниС 0×04 — рСгистр управлСния Π±Π»ΠΎΠΊΠ°ΠΌΠΈ умноТСния частоты. НазначСниС Π±ΠΈΡ‚ΠΎΠ²:

[31:12]- Π±ΠΈΡ‚Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ся;

[11:8] PLLCPUMUL — коэффициСнт умноТСния частоты для CPU: PLLCPUUo = CPU_C3 Ρ… PLLCPUMUL + 1;

[7:4] PLLUSBMUL — коэффициСнт умноТСния частоты для USB;

[3] PLLCPU — Π±ΠΈΡ‚ пСрСзапуска;

[2] PLLCPU — Π±ΠΈΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ;

[1] PLLUSB — Π±ΠΈΡ‚ пСрСзапуска;

[0] PLLUSB — Π±ΠΈΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° 3. Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΡΠΎΡΡ‚оянии клавишного дТойстика Π½Π° ΡΠ²Π΅Ρ‚ΠΎΠ΄ΠΈΠΎΠ΄Π½Ρ‹Π΅ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹. Π‘Ρ…Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ клавиш дТойстика прСдставлСна Π½Π° Ρ€ΠΈΡ. 3.8. ДТойстик состоит ΠΈΠ· ΠΏΡΡ‚ΠΈ клавиш, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… UP (Π²Π²Π΅Ρ€Ρ…), DOWN (Π²Π½ΠΈΠ·), LEFT (Π²Π»Π΅Π²ΠΎ), RIGHT (Π²ΠΏΡ€Π°Π²ΠΎ) ΠΈ SEL (select, Π²Ρ‹Π±ΠΎΡ€). Для управлСния двумя свСтодиодными ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ клавиши: LEFT для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ свСтодиода VD1, RIGHT для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ свСтодиода VD0 ΠΈ SEL для ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΠ±ΠΎΠΈΡ… ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² VD0 ΠΈ VD1.

Π‘Ρ…Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ клавишного дТойстика.

Рис. 3.8. Π‘Ρ…Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ клавишного дТойстика.

Головная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для Π²Ρ‹Π²ΠΎΠ΄Π° состояний дТойстика Π½Π° ΡΠ²Π΅Ρ‚ΠΎΠ΄ΠΈΠΎΠ΄Π½Ρ‹Π΅ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° Ρ€ΠΈΡ. 3.9. Для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠ³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° эта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ frq_init_pll (), которая Π±Ρ‹Π»Π° описана Ρ€Π°Π½Π΅Π΅ (см. Ρ€ΠΈΡ. 3.7). ДСйствиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ состоит Π² Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΌ сканировании Π»ΠΈΠ½ΠΈΠΉ ΠΏΠΎΡ€Ρ‚ΠΎΠ², ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Ρ€Π΅ΠΌ клавишам дТойстика LEFT, RIGHT ΠΈ SEL. ΠŸΡ€ΠΈ опросС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ производится ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ уровня, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ исходноС состояниС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ клавиши — ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ логичСской Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ свСтодиодных ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Ρ‹ Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ led_on () ΠΈ led_off (). ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ являСтся Π½ΠΎΠΌΠ΅Ρ€ свСтодиодного ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° 0 ΠΈΠ»ΠΈ 1. Для опрСдСлСния констант, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… линиям ΠΏΠΎΡ€Ρ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ возмоТности прСпроцСссора: ΠΊΠΎΠΌΠ°Π½Π΄Π° #define.

для опрСдСлСния Π±Π°Π·ΠΎΠ²Ρ‹Ρ… констант ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ ««» для сдвига Π²Π»Π΅Π²ΠΎ. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ константы ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ ΠΈΠ· Π±Π°Π·ΠΎΠ²Ρ‹Ρ… констант ΠΏΡƒΡ‚Π΅ΠΌ логичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° 3 для Π²Ρ‹Π²ΠΎΠ΄Π° состояний клавиш дТойстика Π½Π° свСтодиодныС.

Рис. 3.9. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° 3 для Π²Ρ‹Π²ΠΎΠ΄Π° состояний клавиш дТойстика Π½Π° ΡΠ²Π΅Ρ‚ΠΎΠ΄ΠΈΠΎΠ΄Π½Ρ‹Π΅.

ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹

ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-функция joystick_init для Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π»ΠΈΠ½ΠΈΠΉ Ρ‚Ρ€Π΅Ρ… ΠΏΠΎΡ€Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для считывания ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ с ΠΊΠ»Π°Π²ΠΈΡˆ дТойстика, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π½Π° Ρ€ΠΈΡ. 3.10. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π»ΠΈΠ½ΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° здСсь Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½Π½ΠΎΠΉ Ρ€Π°Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ io_init. ВсС Π»ΠΈΠ½ΠΈΠΈ ΠΏΠΎΡ€Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΈ Ρ€Π°Π½Π΅Π΅ (см. Ρ€ΠΈΡ. 3.8), ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° Π²Π²ΠΎΠ΄ Π² Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ с ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Ρ„Ρ€ΠΎΠ½Ρ‚Π°ΠΌΠΈ (Π΄ΠΎ 100 нс). Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Ρ‚Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ всСх Ρ‚Ρ€Π΅Ρ… ΠΏΠΎΡ€Ρ‚ΠΎΠ² Π’, Π‘, Π•. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ являСтся ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ использованиС Π΄Π²ΡƒΡ… Π»ΠΈΠ½ΠΈΠΉ ΠΏΠΎΡ€Ρ‚Π° PORT Π‘ Π΄Π»Ρ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° ΡΠ²Π΅Ρ‚ΠΎΠ΄ΠΈΠΎΠ΄Π½Ρ‹Π΅ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π»ΠΈΠ½ΠΈΠΈ РБО ΠΈ Π Π‘1 Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π½Π° Π²Ρ‹Π²ΠΎΠ΄ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΎ сдСлано Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ io_init.

ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-функция joystickjnit для Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Рис. 3.10. ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-функция joystickjnit для Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

клавиш дТойстика.

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