Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8

Π’ ΠΏΡ€Π²ΠΈΠΎΡ‚ Π΄Π΅Π» Π‘Π΅ ΠΎΠ±ΠΈΠ΄ΠΎΠ² Π΄Π° ΠΈΠΌ ΠΊΠ°ΠΆΠ°ΠΌ Π½Π° Ρ…ΠΎΠ±ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΡ‚Π΅ Π·Π° Π΅Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ° ΠΊΠΎΠΈ израснаа ΠΎΠ΄ ΠΏΠ°Π½Ρ‚Π°Π»ΠΎΠ½ΠΈΡ‚Π΅ Arduino ΠΊΠ°ΠΊΠΎ ΠΈ Π·ΠΎΡˆΡ‚ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Ρ‡ΠΈΡ‚Π°Π°Ρ‚ листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π·Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΈ. ВСкстот сС ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊΠΎ Π³ΠΎΠ»Π΅ΠΌ, ΠΏΠ° Π²Π΅Ρ‚ΠΈΠ² Π΄Π΅ΠΊΠ° ќС ΠΏΠΎΠΊΠ°ΠΆΠ°ΠΌ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π²ΠΎ посСбна ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°. Па, сС Π½Π°Ρ€Π΅Ρ‡Π΅ ΠΌΠ»Π΅Ρ‡Π½Π° ΠΏΠ΅Ρ‡ΡƒΡ€ΠΊΠ°...

ДСнСс ќС Π²ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ°ΠΌ ΠΊΠ°ΠΊΠΎ Π΄Π° користитС листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π·Π° Π΄Π° Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ Сдноставни, Π½ΠΎ Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½ΠΈ Π·Π° ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΈΡ‚Π΅ STM32 (Blue Pill) ΠΈ STM8. Π‘ΠΈΡ‚Π΅ Π΄Π΅ΠΌΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ сС посвСтСни Π½Π° ΠΌΠΎΠΈΡ‚Π΅ ΠΎΠΌΠΈΠ»Π΅Π½ΠΈ LED Π΄ΠΈΠΎΠ΄ΠΈ, ќС Π³ΠΈ Π·Π°ΠΏΠ°Π»ΠΈΠΌΠ΅ Π²ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½ΠΈ, Π·Π° ΡˆΡ‚ΠΎ ќС Ρ‚Ρ€Π΅Π±Π° Π΄Π° користимС сСкакви интСрСсни ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½ΠΈ ΡƒΡ€Π΅Π΄ΠΈ.

ВСкстот ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ сС ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΎΠ³Ρ€ΠΎΠΌΠ΅Π½, ΠΏΠ° Π·Π° погодност ја ΠΏΡ€Π°Π²Π°ΠΌ содрТината:

STM32 Blue Pill: 16 LED Π΄ΠΈΠΎΠ΄ΠΈ со Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π» DM634
STM8: ΠŸΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ ΡˆΠ΅ΡΡ‚ PWM ΠΏΠΈΠ½ΠΎΠ²ΠΈ
STM8: 8 RGB LED Π΄ΠΈΠΎΠ΄ΠΈ Π½Π° Ρ‚Ρ€ΠΈ ΠΏΠΈΠ½Π°, ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ

ΠžΠ΄Ρ€Π΅ΠΊΡƒΠ²Π°ΡšΠ΅: НС сум ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€, Π½Π΅ сС ΠΏΡ€Π΅ΠΏΡ€Π°Π²Π°ΠΌ Π΄Π΅ΠΊΠ° ΠΈΠΌΠ°ΠΌ Π΄Π»Π°Π±ΠΎΠΊΠΈ познавања ΠΎΠ΄ Π΅Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ°Ρ‚Π°, ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°Ρ‚Π° Π΅ Π½Π°ΠΌΠ΅Π½Π΅Ρ‚Π° Π·Π° Π°ΠΌΠ°Ρ‚Π΅Ρ€ΠΈ ΠΊΠ°ΠΊΠΎ ΠΌΠ΅Π½Π΅. Π’ΡΡƒΡˆΠ½ΠΎΡΡ‚, ΠΏΡ€Π΅Π΄ Π΄Π²Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ сС смСтав сСбСси Π·Π° Ρ†Π΅Π»Π½Π° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°. Π”Π° ΠΌΠΈ каТСшС нСкој Ρ‚ΠΎΠ³Π°Ρˆ Π΄Π΅ΠΊΠ° листовитС со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π·Π° Π½Π΅ΠΏΠΎΠ·Π½Π°Ρ‚ Ρ‡ΠΈΠΏ Π½Π΅ сС ΡΡ‚Ρ€Π°ΡˆΠ½ΠΈ Π·Π° Ρ‡ΠΈΡ‚Π°ΡšΠ΅, нСмашС Π΄Π° ΠΏΠΎΡ‚Ρ€ΠΎΡˆΠ°ΠΌ ΠΌΠ½ΠΎΠ³Ρƒ Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° Π±Π°Ρ€Π°ΠΌ Π½Π΅ΠΊΠΎΠΈ ΠΏΠ°Ρ€Ρ‡ΠΈΡšΠ° ΠΊΠΎΠ΄ Π½Π° Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΈ Π΄Π° измислувам ΠΏΠ°Ρ‚Π΅Ρ€ΠΈΡ†ΠΈ со Π½ΠΎΠΆΠΈΡ†ΠΈ ΠΈ ΡΠ΅Π»ΠΎΡ‚Π΅Ρ˜ΠΏ.

Ѐокусот Π½Π° ΠΎΠ²Π°Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° Π΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, Π° Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ ΠΊΠΎΠ΄ΠΎΡ‚ ΠΌΠΎΠΆΠ΅Π±ΠΈ Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³Ρƒ ΡƒΡ€Π΅Π΄Π΅Π½ ΠΈ чСсто тСсСн. Π‘Π°ΠΌΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ сС ΠΌΠ½ΠΎΠ³Ρƒ Сдноставни, ΠΈΠ°ΠΊΠΎ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΈ Π·Π° ΠΏΡ€Π²ΠΎ запознавањС со Π½ΠΎΠ²ΠΈΠΎΡ‚ Ρ‡ΠΈΠΏ.

Π‘Π΅ Π½Π°Π΄Π΅Π²Π°ΠΌ Π΄Π΅ΠΊΠ° ΠΌΠΎΡ˜Π°Ρ‚Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° ќС ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π½Π΅ΠΊΠΎΠΌΡƒ Π²ΠΎ слична Ρ„Π°Π·Π° Π½Π° ΠΏΠΎΡ‚ΠΎΠΏΡƒΠ²Π°ΡšΠ΅ Π²ΠΎ Ρ…ΠΎΠ±ΠΈΡ‚ΠΎ.

STM32

16 LED диоди со DM634 и SPI

Мал ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ кој користи Blue Pill (STM32F103C8T6) ΠΈ LED Π΄Ρ€Π°Ρ˜Π²Π΅Ρ€ DM634. ΠšΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, ќС Π³ΠΎ ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ΠΌΠ΅ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΠΎΡ‚, STM IO ΠΏΠΎΡ€Ρ‚ΠΈΡ‚Π΅ ΠΈ ќС Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ SPI.

DM634

Вајвански Ρ‡ΠΈΠΏ со 16 16-Π±ΠΈΡ‚Π½ΠΈ PWM ΠΈΠ·Π»Π΅Π·ΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΠΎΠ²Ρ€Π·Π΅ Π²ΠΎ ΡΠΈΠ½ΡŸΠΈΡ€ΠΈ. Нискиот 12-Π±ΠΈΡ‚Π΅Π½ ΠΌΠΎΠ΄Π΅Π» Π΅ ΠΏΠΎΠ·Π½Π°Ρ‚ ΠΎΠ΄ домашСн ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Lightpack. Π•Π΄Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅, ΠΈΠ·Π±ΠΈΡ€Π°Ρ˜ΡœΠΈ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ DM63x ΠΈ Π΄ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈΠΎΡ‚ TLC5940, Π³ΠΎ ΠΈΠ·Π±Ρ€Π°Π² DM ΠΎΠ΄ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ: 1) TLC Π½Π° Aliexpress Π΅ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ‚ΠΈΠ²Π½ΠΎ Π»Π°ΠΆΠ΅Π½, Π½ΠΎ овој Π½Π΅ Π΅; 2) DM ΠΈΠΌΠ° Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ΅Π½ PWM со сопствСн Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π° Ρ„Ρ€Π΅ΠΊΠ²Π΅Π½Ρ†ΠΈΠΈ; 3) ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΡƒΠΏΠΈ Π΅Ρ„Ρ‚ΠΈΠ½ΠΎ Π²ΠΎ Москва, намСсто Π΄Π° сС Ρ‡Π΅ΠΊΠ° ΠΏΠ°Ρ€Ρ†Π΅Π»Π° ΠΎΠ΄ Али. И, сС Ρ€Π°Π·Π±ΠΈΡ€Π°, бСшС интСрСсно Π΄Π° Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠΎ сами Π΄Π° Π³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Ρ‚Π΅ Ρ‡ΠΈΠΏΠΎΡ‚, намСсто Π΄Π° користитС Π³ΠΎΡ‚ΠΎΠ²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°. Π§ΠΈΠΏΠΎΠ²ΠΈΡ‚Π΅ сСга Π³Π»Π°Π²Π½ΠΎ сС прСтставСни Π²ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚ SSOP24; Ρ‚ΠΈΠ΅ лСсно сС Π»Π΅ΠΌΠ°Ρ‚ Π½Π° Π°Π΄Π°ΠΏΡ‚Π΅Ρ€.

Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΎΡ‚ Π΅ Ρ‚Π°Ρ˜Π²Π°Π½ΡΠΊΠΈ, ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Ρ‡ΠΈΠΏΠΎΡ‚ Π΅ напишан Π½Π° кинСски англиски, ΡˆΡ‚ΠΎ Π·Π½Π°Ρ‡ΠΈ Π΄Π΅ΠΊΠ° ќС Π±ΠΈΠ΄Π΅ Π·Π°Π±Π°Π²Π΅Π½. ΠŸΡ€Π²ΠΎ Π³ΠΎ Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΈΠ½Π°ΡƒΡ‚ΠΎΡ‚ (ΠŸΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ со ΠΏΠΈΠ½ΠΎΠ²ΠΈ) Π΄Π° сС Ρ€Π°Π·Π±Π΅Ρ€Π΅ со која Π½ΠΎΠ³Π° Π΄Π° сС ΠΏΠΎΠ²Ρ€Π·Π΅ со ΡˆΡ‚ΠΎ, ΠΈ опис Π½Π° ΠΏΠΈΠ½ΠΎΠ²ΠΈΡ‚Π΅ (Опис Π½Π° ΠΈΠ³Π»Π°). 16 ΠΈΠ³Π»ΠΈΡ‡ΠΊΠΈ:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
Π˜Π·Π²ΠΎΡ€ΠΈ Π½Π° мијалник со Сднонасочна ΡΡ‚Ρ€ΡƒΡ˜Π° (ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΎΠ΄Π²ΠΎΠ΄)

мијалник / ИзлСз со ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΎΠ΄Π²ΠΎΠ΄ – ΠΎΠ΄Π²ΠΎΠ΄; ΠΈΠ·Π²ΠΎΡ€ Π½Π° ΠΏΡ€ΠΈΠ»ΠΈΠ²Π½Π° ΡΡ‚Ρ€ΡƒΡ˜Π°; ΠΈΠ·Π»Π΅Π·ΠΎΡ‚ Π΅ ΠΏΠΎΠ²Ρ€Π·Π°Π½ со Π·Π΅ΠΌΡ˜Π°Ρ‚Π° Π²ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½Π° ΡΠΎΡΡ‚ΠΎΡ˜Π±Π° - LED Π΄ΠΈΠΎΠ΄ΠΈΡ‚Π΅ сС ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈ со Π²ΠΎΠ·Π°Ρ‡ΠΎΡ‚ со ΠΊΠ°Ρ‚ΠΎΠ΄ΠΈ. Π•Π»Π΅ΠΊΡ‚Ρ€ΠΈΡ‡Π½ΠΎ, ΠΎΠ²Π°, сС Ρ€Π°Π·Π±ΠΈΡ€Π°, Π½Π΅ Π΅ β€žΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΎΠ΄Π²ΠΎΠ΄β€œ (ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΎΠ΄Π²ΠΎΠ΄), Π½ΠΎ Π²ΠΎ листовитС со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ чСсто сС Π½Π°ΠΎΡ“Π° ΠΎΠ²Π°Π° ΠΎΠ·Π½Π°ΠΊΠ° Π·Π° ΠΈΠ³Π»ΠΈΡ‡ΠΊΠΈ Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΎΠ΄Π²ΠΎΠ΄.

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
ΠΠ°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½ΠΈ ΠΎΡ‚ΠΏΠΎΡ€Π½ΠΈΡ†ΠΈ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ REXT ΠΈ GND Π·Π° ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΈΠ·Π»Π΅Π·Π½Π°Ρ‚Π° Ρ‚Π΅ΠΊΠΎΠ²Π½Π° врСдност

ΠŸΠΎΠΌΠ΅Ρ“Ρƒ ΠΏΠΈΠ½ΠΎΡ‚ REXT ΠΈ Π·Π°Π·Π΅ΠΌΡ˜ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π΅ инсталиран Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π΅Π½ ΠΎΡ‚ΠΏΠΎΡ€Π½ΠΈΠΊ, кој Π³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½ΠΈΠΎΡ‚ ΠΎΡ‚ΠΏΠΎΡ€ Π½Π° ΠΈΠ·Π»Π΅Π·ΠΈΡ‚Π΅, Π²ΠΈΠ΄Π΅Ρ‚Π΅ Π³ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΡ‚ Π½Π° страница 9 ΠΎΠ΄ листот со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. Π’ΠΎ DM634, овој ΠΎΡ‚ΠΏΠΎΡ€ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° ΠΈ со софтвСр, ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°Ρ˜ΡœΠΈ ја Π²ΠΊΡƒΠΏΠ½Π°Ρ‚Π° освСтлСност (Π³Π»ΠΎΠ±Π°Π»Π½Π° освСтлСност); НСма Π΄Π° Π½Π°Π²Π»Π΅Π³ΡƒΠ²Π°ΠΌ Π²ΠΎ Π΄Π΅Ρ‚Π°Π»ΠΈ Π²ΠΎ ΠΎΠ²Π°Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°, Ρ‚ΡƒΠΊΠ° само ќС ставам ΠΎΡ‚ΠΏΠΎΡ€Π½ΠΈΠΊ ΠΎΠ΄ 2.2 - 3 kOhm.

Π—Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°ΠΌΠ΅ Ρ‡ΠΈΠΏΠΎΡ‚, Π΄Π° Π³ΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ описот Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠΎΡ‚ Π½Π° ΡƒΡ€Π΅Π΄ΠΎΡ‚:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8

Π”Π°, Π΅Π²Π΅ Π³ΠΎ, кинСски англиски Π²ΠΎ сСта своја слава. ΠŸΡ€Π΅Π²Π΅Π΄ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠ²Π° Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ Π°ΠΊΠΎ сакатС, Π½ΠΎ ΠΈΠΌΠ° ΠΈ Π΄Ρ€ΡƒΠ³ Π½Π°Ρ‡ΠΈΠ½ - ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ ΠΊΠ°ΠΊΠΎ врската со Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ сличниот TLC5940 Π΅ опишана Π²ΠΎ листот со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
... Π‘Π°ΠΌΠΎ Ρ‚Ρ€ΠΈ ΠΏΠΈΠ½Π° сС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ Π·Π° Π²Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π²ΠΎ ΡƒΡ€Π΅Π΄ΠΎΡ‚. ΠŸΠΎΠ΄ΠΈΠ³Π½Π°Ρ‚ΠΈΠΎΡ‚ Ρ€Π°Π± Π½Π° сигналот SCLK Π³ΠΈ ΠΏΡ€Π΅Ρ„Ρ€Π»Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ ΠΎΠ΄ SIN ΠΏΠΈΠ½ΠΎΡ‚ Π²ΠΎ Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½ΠΈΠΎΡ‚ рСгистар. ΠžΡ‚ΠΊΠ°ΠΊΠΎ ќС сС Π²Ρ‡ΠΈΡ‚Π°Π°Ρ‚ ситС ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, ΠΊΡ€Π°Ρ‚ΠΎΠΊ висок XLAT сигнал Π³ΠΈ ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΡƒΠ²Π° послСдоватСлно прСнСсСнитС ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π²ΠΎ Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½ΠΈΡ‚Π΅ рСгистри. Π’Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½ΠΈΡ‚Π΅ рСгистри сС ΠΏΠΎΡ€Ρ‚ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΈ ΠΎΠ΄ Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° сигналот XLAT. Π‘ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΏΡ€Π²ΠΎ сС прСнСсуваат Π½Π°Ρ˜Π·Π½Π°Ρ‡Π°Ρ˜Π½ΠΈΠΎΡ‚ Π±ΠΈΡ‚.

Π—Π°Ρ„Π°Ρ‚ – Π±Ρ€Π°Π²Π°Ρ‚Π°/Π±Ρ€Π°Π²Π°Ρ‚Π°/Π±Ρ€Π°Π²Π°Ρ‚Π°.
ΠŸΠΎΠ΄ΠΈΠ³Π½ΡƒΠ²Π°ΡšΠ΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚ – ΠΏΡ€Π΅Π΄Π½ΠΈΠΎΡ‚ Ρ€Π°Π± Π½Π° пулсот
MSB ΠΏΡ€Π²ΠΎ – Π½Π°Ρ˜Π·Π½Π°Ρ‡Π°Ρ˜Π½ΠΈΠΎΡ‚ (Π½Π°Ρ˜Π»Π΅Π²ΠΈΠΎΡ‚) Π±ΠΈΡ‚ Π½Π°ΠΏΡ€Π΅Π΄.
Π·Π° Ρ‚Π°ΠΊΡ‚ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ – прСнос Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΡΠ΅ΠΊΠ²Π΅Π½Ρ†ΠΈΡ˜Π°Π»Π½ΠΎ (Π±ΠΈΡ‚ ΠΏΠΎ Π±ΠΈΡ‚).

Π—Π±ΠΎΡ€ Π±Ρ€Π°Π²Π°Ρ‚Π° чСсто сС Π½Π°ΠΎΡ“Π° Π²ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° Ρ‡ΠΈΠΏΠΎΠ²ΠΈ ΠΈ сС ΠΏΡ€Π΅Π²Π΅Π΄ΡƒΠ²Π° Π½Π° Ρ€Π°Π·Π½ΠΈ Π½Π°Ρ‡ΠΈΠ½ΠΈ, ΠΏΠ° Π·Π°Ρ€Π°Π΄ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°ΡšΠ΅ ќС си Π΄ΠΎΠ·Π²ΠΎΠ»Π°ΠΌ

ΠΌΠ°Π»Π° Π΅Π΄ΡƒΠΊΠ°Ρ‚ΠΈΠ²Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°LED Π΄Ρ€Π°Ρ˜Π²Π΅Ρ€ΠΎΡ‚ Π²ΠΎ ΡΡƒΡˆΡ‚ΠΈΠ½Π° Π΅ рСгистСр Π·Π° смСна. "Shift" (ΠΏΡ€Π΅Ρ„Ρ€Π»Π°Ρ‚) Π²ΠΎ ΠΈΠΌΠ΅Ρ‚ΠΎ - Π±ΠΈΡ‚ΠΎΠ²ΠΈ двиТСњС Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ Π²ΠΎ ΡƒΡ€Π΅Π΄ΠΎΡ‚: сСкој Π½ΠΎΠ² Π±ΠΈΡ‚ внСсСн Π²Π½Π°Ρ‚Ρ€Π΅ Π³ΠΎ Ρ‚ΡƒΡ€ΠΊΠ° Ρ†Π΅Π»ΠΈΠΎΡ‚ ΡΠΈΠ½ΡŸΠΈΡ€ Π½Π°ΠΏΡ€Π΅Π΄ ΠΏΡ€Π΅Π΄ Π½Π΅Π³ΠΎ. Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ никој Π½Π΅ сака Π΄Π° Π½Π°Π±Ρ™ΡƒΠ΄ΡƒΠ²Π° Ρ…Π°ΠΎΡ‚ΠΈΡ‡Π½ΠΎ Ρ‚Ρ€Π΅ΠΏΠΊΠ°ΡšΠ΅ Π½Π° LED Π΄ΠΈΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° смСната, процСсот сС ΠΎΠ΄Π²ΠΈΠ²Π° Π²ΠΎ Ρ‚Π°ΠΌΠΏΠΎΠ½ рСгистри ΠΎΠ΄Π΄Π΅Π»Π΅Π½ΠΈ ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΡ‚Π΅ рСгистри со Π°ΠΌΠΎΡ€Ρ‚ΠΈΠ·Π΅Ρ€ (Π±Ρ€Π°Π²Π°Ρ‚Π°) Π΅ Π΅Π΄Π΅Π½ Π²ΠΈΠ΄ Ρ‡Π΅ΠΊΠ°Π»Π½Π° ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ Π±ΠΈΡ‚ΠΎΠ²ΠΈΡ‚Π΅ сС распорСдСни ΠΏΠΎ саканата Π½ΠΈΠ·Π°. Кога сè Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΎ, Π±Π»Π΅Π½Π΄Π°Ρ‚Π° сС ΠΎΡ‚Π²ΠΎΡ€Π° ΠΈ Π±ΠΈΡ‚ΠΎΠ²ΠΈΡ‚Π΅ ΠΎΠ΄Π°Ρ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°, Π·Π°ΠΌΠ΅Π½ΡƒΠ²Π°Ρ˜ΡœΠΈ ја ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½Π°Ρ‚Π° ΡΠ΅Ρ€ΠΈΡ˜Π°. Π·Π±ΠΎΡ€ Π±Ρ€Π°Π²Π°Ρ‚Π° Π²ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° ΠΌΠΈΠΊΡ€ΠΎΡ†ΠΈΡ€ΠΊΡƒΡ‚ΠΈ рСчиси сСкогаш сС ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π° Ρ‚Π°ΠΊΠΎΠ² Π°ΠΌΠΎΡ€Ρ‚ΠΈΠ·Π΅Ρ€, Π±Π΅Π· Ρ€Π°Π·Π»ΠΈΠΊΠ° Π²ΠΎ ΠΊΠ°ΠΊΠ²ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ сС користи.

Π—Π½Π°Ρ‡ΠΈ, прСносот Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π΄ΠΎ DM634 сС Π²Ρ€ΡˆΠΈ Π²Π°ΠΊΠ°: поставСтС Π³ΠΎ Π²Π»Π΅Π·ΠΎΡ‚ DAI Π½Π° врСдноста Π½Π° Π½Π°Ρ˜Π·Π½Π°Ρ‡Π°Ρ˜Π½ΠΈΠΎΡ‚ Π±ΠΈΡ‚ ΠΎΠ΄ Π΄Π°Π»Π΅Ρ‡Π½Π°Ρ‚Π° LED Π΄ΠΈΠΎΠ΄Π°, ΠΏΠΎΠ²Π»Π΅Ρ‡Π΅Ρ‚Π΅ Π³ΠΎ DCK Π½Π°Π³ΠΎΡ€Π΅ ΠΈ Π½Π°Π΄ΠΎΠ»Ρƒ; поставСтС Π³ΠΎ Π²Π»Π΅Π·ΠΎΡ‚ DAI Π½Π° врСдноста Π½Π° слСдниот Π±ΠΈΡ‚, ΠΏΠΎΠ²Π»Π΅Ρ‡Π΅Ρ‚Π΅ Π³ΠΎ DCK; ΠΈ Ρ‚Π°ΠΊΠ° Π½Π°Ρ‚Π°ΠΌΡƒ Π΄ΠΎΠ΄Π΅ΠΊΠ° Π½Π΅ сС прСнСсат ситС Π±ΠΈΡ‚ΠΎΠ²ΠΈ (Π·Π°ΠΊΠ»ΡƒΡ‡Π΅Π½ Π²Π½Π°Ρ‚Ρ€Π΅), ΠΏΠΎ ΡˆΡ‚ΠΎ Π²Π»Π΅Ρ‡Π΅ΠΌΠ΅ LAT. Ова ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ Ρ€Π°Ρ‡Π½ΠΎ (Π±ΠΈΡ‚-Π±Π΅Π½Π³), Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΎ Π΅ Π΄Π° користитС SPI ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ ΡΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»Π½ΠΎ ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½ Π·Π° ΠΎΠ²Π°, бидСјќи Π΅ прСтставСн Π½Π° Π½Π°ΡˆΠΈΠΎΡ‚ STM32 Π²ΠΎ Π΄Π²Π΅ ΠΊΠΎΠΏΠΈΠΈ.

Π‘ΠΈΠ½Π° ΠΏΠΈΠ»ΡƒΠ»Π° STM32F103

Π’ΠΎΠ²Π΅Π΄: STM32 ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΈΡ‚Π΅ сС ΠΌΠ½ΠΎΠ³Ρƒ послоТСни ΠΎΠ΄ Atmega328 ΠΎΡ‚ΠΊΠΎΠ»ΠΊΡƒ ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅Π΄Π°Π°Ρ‚ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎ. ΠŸΠΎΠΊΡ€Π°Ρ˜ Ρ‚ΠΎΠ°, ΠΏΠΎΡ€Π°Π΄ΠΈ Π·Π°ΡˆΡ‚Π΅Π΄Π° Π½Π° Π΅Π½Π΅Ρ€Π³ΠΈΡ˜Π°, рСчиси ситС ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½ΠΈ ΡƒΡ€Π΅Π΄ΠΈ сС исклучСни Π½Π° самиот ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊ, Π° Ρ„Ρ€Π΅ΠΊΠ²Π΅Π½Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° часовникот Π΅ 8 MHz ΠΎΠ΄ Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½ΠΈΠΎΡ‚ ΠΈΠ·Π²ΠΎΡ€. Π—Π° ΡΡ€Π΅ΡœΠ°, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π½Π° STM напишаа ΠΊΠΎΠ΄ ΡˆΡ‚ΠΎ Π³ΠΎ носи Ρ‡ΠΈΠΏΠΎΡ‚ Π΄ΠΎ β€žΠΏΡ€Π΅ΡΠΌΠ΅Ρ‚Π΅Π½ΠΈΡ‚Π΅β€œ 72 MHz, Π° Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ Π½Π° ситС IDE ΡˆΡ‚ΠΎ Π³ΠΈ Π·Π½Π°ΠΌ Π³ΠΎ Π²ΠΊΠ»ΡƒΡ‡ΠΈΡ˜Π° Π²ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ‚Π° Π·Π° ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ Π½Π΅ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Ρ‚Π°ΠΊΡ‚ΠΈΡ€Π°ΠΌΠ΅ (Π½ΠΎ моТСш Π°ΠΊΠΎ навистина сакаш). Но, ќС ΠΌΠΎΡ€Π° Π΄Π° Π³ΠΈ Π²ΠΊΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½ΠΈΡ‚Π΅ ΡƒΡ€Π΅Π΄ΠΈ.

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°: Blue Pill Π΅ ΠΎΠΏΡ€Π΅ΠΌΠ΅Π½ со ΠΏΠΎΠΏΡƒΠ»Π°Ρ€Π½ΠΈΠΎΡ‚ Ρ‡ΠΈΠΏ STM32F103C8T6, ΠΈΠΌΠ° Π΄Π²Π° корисни Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈ Π·Π° Π½Π΅Π³ΠΎ:

Π’ΠΎ листот со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ интСрСсира:

  • ΠŸΠΈΠ½Π°ΡƒΡ‚ΠΈ – Ρ‡ΠΈΠΏ ΠΏΠΈΠ½Π°ΡƒΡ‚ΠΈ – Π²ΠΎ ΡΠ»ΡƒΡ‡Π°Ρ˜ Π΄Π° Ρ€Π΅ΡˆΠΈΠΌΠ΅ сами Π΄Π° Π³ΠΈ ΠΏΡ€Π°Π²ΠΈΠΌΠ΅ Ρ‚Π°Π±Π»ΠΈΡ‚Π΅;
  • ΠœΠ΅ΠΌΠΎΡ€ΠΈΡΠΊΠ° ΠΊΠ°Ρ€Ρ‚Π° – мСмориска ΠΊΠ°Ρ€Ρ‚Π° Π·Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ Ρ‡ΠΈΠΏ. Π Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½ΠΈΠΎΡ‚ ΠΏΡ€ΠΈΡ€Π°Ρ‡Π½ΠΈΠΊ ΠΈΠΌΠ° ΠΌΠ°ΠΏΠ° Π·Π° Ρ†Π΅Π»Π°Ρ‚Π° линија, ΠΈ спомСнува рСгистри ΡˆΡ‚ΠΎ Π½Π°ΡˆΠΈΡ‚Π΅ Π³ΠΈ Π½Π΅ΠΌΠ°Π°Ρ‚.
  • Π’Π°Π±Π΅Π»Π° со Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈ Π·Π° ΠΏΠΈΠ½ΠΎΠ²ΠΈ – Π½Π°Π²Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π³Π»Π°Π²Π½ΠΈΡ‚Π΅ ΠΈ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° ΠΏΠΈΠ½ΠΎΠ²ΠΈΡ‚Π΅; Π·Π° β€žΡΠΈΠ½Π°Ρ‚Π° ΠΏΠΈΠ»ΡƒΠ»Π°β€œ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°Ρ˜Π΄Π΅Ρ‚Π΅ ΠΏΠΎΠΏΠΎΠ³ΠΎΠ΄Π½ΠΈ слики Π½Π° Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ со список Π½Π° ΠΏΠΈΠ½ΠΎΠ²ΠΈ ΠΈ Π½ΠΈΠ²Π½ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π—Π°Ρ‚ΠΎΠ°, вСднаш Π³ΠΎ Π±Π°Ρ€Π°ΠΌΠ΅ Π½Π° Google записот Π½Π° Blue Pill ΠΈ ја Ρ‡ΡƒΠ²Π°ΠΌΠ΅ ΠΎΠ²Π°Π° слика ΠΏΡ€ΠΈ Ρ€Π°ΠΊΠ°:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
НапомСна: имашС Π³Ρ€Π΅ΡˆΠΊΠ° Π½Π° сликата ΠΎΠ΄ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚, која бСшС Π·Π°Π±Π΅Π»Π΅ΠΆΠ°Π½Π° Π²ΠΎ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡ‚Π΅, Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π°ΠΌ Π·Π° Ρ‚ΠΎΠ°. Π‘Π»ΠΈΠΊΠ°Ρ‚Π° Π΅ Π·Π°ΠΌΠ΅Π½Π΅Ρ‚Π°, Π½ΠΎ ΠΎΠ²Π° Π΅ Π»Π΅ΠΊΡ†ΠΈΡ˜Π° - ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΎ Π΅ Π΄Π° сС ΠΏΡ€ΠΎΠ²Π΅Ρ€Π°Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π΅ ΠΎΠ΄ листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ.

Π“ΠΎ отстранувамС листот со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, Π³ΠΎ ΠΎΡ‚Π²ΠΎΡ€Π°ΠΌΠ΅ Π Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½ΠΈΠΎΡ‚ ΠΏΡ€ΠΈΡ€Π°Ρ‡Π½ΠΈΠΊ ΠΈ отсСга Π³ΠΎ користимС само Π½Π΅Π³ΠΎ.
ΠŸΠΎΡΡ‚Π°ΠΏΠΊΠ°: сС Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΠΌΠ΅ со стандардСн Π²Π»Π΅Π·/ΠΈΠ·Π»Π΅Π·, Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ SPI, Π³ΠΈ Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°ΠΌΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½ΠΈ ΡƒΡ€Π΅Π΄ΠΈ.

Π’Π»Π΅Π· ΠΈΠ·Π»Π΅Π·

На Atmega328, I/O сС ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° исклучитСлно Сдноставно, ΠΏΠΎΡ€Π°Π΄ΠΈ ΡˆΡ‚ΠΎ изобилството Π½Π° STM32 ΠΎΠΏΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ Π·Π±ΡƒΠ½ΡƒΠ²Π°Ρ‡ΠΊΠΈ. Π‘Π΅Π³Π° Π½ΠΈ Ρ‚Ρ€Π΅Π±Π°Π°Ρ‚ само Π·Π°ΠΊΠ»ΡƒΡ‡ΠΎΡ†ΠΈ, Π½ΠΎ Π΄ΡƒΡ€ΠΈ ΠΈ ΠΎΠ²ΠΈΠ΅ ΠΈΠΌΠ°Π°Ρ‚ Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ ΠΎΠΏΡ†ΠΈΠΈ:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΎΠ΄Π²ΠΎΠ΄, Ρ‚ΡƒΡ€ΠΊΠ°ΡšΠ΅-Π²Π»Π΅Ρ‡Π΅ΡšΠ΅, Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π΅Π½ Ρ‚ΡƒΡ€ΠΊΠ°ΡšΠ΅-Π²Π»Π΅Ρ‡Π΅ΡšΠ΅, Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π΅Π½ ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΎΠ΄Π²ΠΎΠ΄

β€žΠŸΠΎΠ²Π»Π΅Ρ‡Π΅Ρ‚Π΅-Ρ‚ΡƒΡ€ΠΊΠ°Ρ˜Ρ‚Π΅β€œ (Ρ‚ΡƒΡ€ΠΊΠ°ΡšΠ΅) Π΅ Π²ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½ΠΈΠΎΡ‚ ΠΈΠ·Π»Π΅Π· ΠΎΠ΄ Arduino, ΠΏΠΈΠ½ΠΎΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ја Π·Π΅ΠΌΠ΅ врСдноста ΠΈΠ»ΠΈ HIGH ΠΈΠ»ΠΈ LOW. Но, со β€žΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΎΠ΄Π²ΠΎΠ΄β€œ ΠΈΠΌΠ° Ρ‚Π΅ΡˆΠΊΠΎΡ‚ΠΈΠΈ, ΠΈΠ°ΠΊΠΎ Π²ΡΡƒΡˆΠ½ΠΎΡΡ‚ сè Π΅ Сдноставно ΠΎΠ²Π΄Π΅:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
ИзлСзна ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° / ΠΊΠΎΠ³Π° ΠΏΠΎΡ€Ρ‚Π°Ρ‚Π° Π΅ Π΄ΠΎΠ΄Π΅Π»Π΅Π½Π° Π½Π° ΠΈΠ·Π»Π΅Π·: / ΠΈΠ·Π»Π΅Π·Π½ΠΈΠΎΡ‚ Π±Π°Ρ„Π΅Ρ€ Π΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½: / – ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΎΠ΄Π²ΠΎΠ΄: β€ž0β€œ Π²ΠΎ ΠΈΠ·Π»Π΅Π·Π½ΠΈΠΎΡ‚ рСгистар ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° N-MOS, β€ž1β€œ Π²ΠΎ ΠΈΠ·Π»Π΅Π·Π½ΠΈΠΎΡ‚ рСгистар ја Π½Π°ΠΏΡƒΡˆΡ‚Π° ΠΏΠΎΡ€Ρ‚Π°Ρ‚Π° Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌ Hi-Z ( P-MOS Π½Π΅ Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ ) / – Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΏΡ€ΠΈΡ‚ΠΈΡΠΊΠ°ΡšΠ΅: β€ž0β€œ Π²ΠΎ ΠΈΠ·Π»Π΅Π·Π½ΠΈΠΎΡ‚ рСгистар Π³ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° N-MOS, β€ž1β€œ Π²ΠΎ ΠΈΠ·Π»Π΅Π·Π½ΠΈΠΎΡ‚ рСгистар Π³ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° P-MOS.

Π¦Π΅Π»Π°Ρ‚Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΏΠΎΠΌΠ΅Ρ“Ρƒ ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΈΠΎΡ‚ ΠΎΠ΄Π²ΠΎΠ΄ (ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΎΠ΄Π²ΠΎΠ΄) ΠΎΠ΄ β€žpush-pullβ€œ (Ρ‚ΡƒΡ€ΠΊΠ°ΡšΠ΅(висока импСданса, Π—Π΄Ρ€Π°Π²ΠΎ-Π—). Кога ΠΏΠΈΡˆΡƒΠ²Π°Ρ‚Π΅ Π½ΡƒΠ»Π°, ΠΏΠΈΠ½ΠΎΡ‚ сС однСсува исто ΠΈ Π²ΠΎ Π΄Π²Π°Ρ‚Π° Ρ€Π΅ΠΆΠΈΠΌΠΈ, ΠΈ Π»ΠΎΠ³ΠΈΡ‡ΠΊΠΈ ΠΈ Π΅Π»Π΅ΠΊΡ‚Ρ€ΠΈΡ‡Π½ΠΎ.

Π’ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»Π΅Π½ ΠΈΠ·Π»Π΅Π·Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ, ΠΏΠΈΠ½ΠΎΡ‚ Сдноставно ја Π΅ΠΌΠΈΡ‚ΡƒΠ²Π° содрТината Π½Π° ΠΈΠ·Π»Π΅Π·Π½ΠΈΠΎΡ‚ рСгистар. Π’ΠΎ β€žΠ°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π°Ρ‚Π°β€œ сС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° ΠΎΠ΄ соодвСтнитС ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½ΠΈ ΡƒΡ€Π΅Π΄ΠΈ (Π²ΠΈΠ΄ΠΈ 9.1.4):

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
Ако Π±ΠΈΡ‚ Π·Π° ΠΏΠΎΡ€Ρ‚Π° Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ ΠΊΠ°ΠΊΠΎ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½Π° ΠΈΠ³Π»Π°, пинскиот рСгистар Π΅ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΈ ΠΏΠΈΠ½ΠΎΡ‚ Π΅ ΠΏΠΎΠ²Ρ€Π·Π°Π½ со ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½ΠΈΠΎΡ‚ ΠΏΠΈΠ½.

АлтСрнативната функционалност Π½Π° сСкоја ΠΈΠ³Π»Π° Π΅ опишана Π²ΠΎ Π”Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈ Π·Π° ΠΏΠΈΠ½ΠΎΠ²ΠΈ Листот со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π΅ Π½Π° ΠΏΡ€Π΅Π·Π΅ΠΌΠ΅Π½Π°Ρ‚Π° слика. На ΠΏΡ€Π°ΡˆΠ°ΡšΠ΅Ρ‚ΠΎ ΡˆΡ‚ΠΎ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π°ΠΊΠΎ ΠΈΠ³Π»Π°Ρ‚Π° ΠΈΠΌΠ° Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π΅ Π΄Π°Π΄Π΅Π½ со фуснота Π²ΠΎ листот со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
Ако повСќС ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½ΠΈ ΡƒΡ€Π΅Π΄ΠΈ користат ист ΠΏΠΈΠ½, Π·Π° Π΄Π° сС ΠΈΠ·Π±Π΅Π³Π½Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС користи само Π΅Π΄Π΅Π½ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π΅Π½ ΡƒΡ€Π΅Π΄ истоврСмСно, со Π²ΠΊΠ»ΡƒΡ‡Π΅Π½ Π±ΠΈΡ‚ Π·Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½ΠΈΠΎΡ‚ часовник (Π²ΠΎ соодвСтниот RCC рСгистар).

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΈΠ³Π»ΠΈΡ‡ΠΊΠΈΡ‚Π΅ Π²ΠΎ ΠΈΠ·Π»Π΅Π·Π½ΠΈΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌ ΠΈΠΌΠ°Π°Ρ‚ ΠΈ Π±Ρ€Π·ΠΈΠ½Π° Π½Π° часовникот. Ова Π΅ ΡƒΡˆΡ‚Π΅ Π΅Π΄Π½Π° карактСристика Π·Π° Π·Π°ΡˆΡ‚Π΅Π΄Π° Π½Π° Π΅Π½Π΅Ρ€Π³ΠΈΡ˜Π°; Π²ΠΎ Π½Π°ΡˆΠΈΠΎΡ‚ ΡΠ»ΡƒΡ‡Π°Ρ˜, само ја поставивмС Π½Π° максимум ΠΈ ја Π·Π°Π±ΠΎΡ€Π°Π²Π°ΠΌΠ΅.

Π—Π½Π°Ρ‡ΠΈ: користимС SPI, ΡˆΡ‚ΠΎ Π·Π½Π°Ρ‡ΠΈ Π΄Π΅ΠΊΠ° Π΄Π²Π° ΠΏΠΈΠ½Π° (со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΈ со Ρ‚Π°ΠΊΡ‚-сигнал) Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π°Ρ‚ β€žΠ°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° Π·Π° ΠΏΡ€ΠΈΡ‚ΠΈΡΠΊΠ°ΡšΠ΅β€œ, Π° ΡƒΡˆΡ‚Π΅ Π΅Π΄Π΅Π½ (ЛАВ) Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π΅ β€žΡ€Π΅Π΄ΠΎΠ²Π½ΠΎ ΠΏΡ€ΠΈΡ‚ΠΈΡΠΊΠ°ΡšΠ΅β€œ. Но, ΠΏΡ€Π΅Π΄ Π΄Π° Π³ΠΈ Π΄ΠΎΠ΄Π΅Π»ΠΈΠΌΠ΅, Π΄Π° сС Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΠΌΠ΅ со SPI.

SPI

Π£ΡˆΡ‚Π΅ Π΅Π΄Π½Π° ΠΌΠ°Π»Π° Π΅Π΄ΡƒΠΊΠ°Ρ‚ΠΈΠ²Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°

SPI ΠΈΠ»ΠΈ БСриски ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ (сСриски ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ) Π΅ СдноставСн ΠΈ ΠΌΠ½ΠΎΠ³Ρƒ СфикасСн ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ Π·Π° ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ Π½Π° MK со Π΄Ρ€ΡƒΠ³ΠΈ MK ΠΈ со Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½ΠΈΠΎΡ‚ свСт Π²ΠΎΠΎΠΏΡˆΡ‚ΠΎ. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΡ‚ Π½Π° Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°ΡšΠ΅ Π΅ вСќС опишан ΠΏΠΎΠ³ΠΎΡ€Π΅, ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ Π·Π° кинСскиот LED Π΄Ρ€Π°Ρ˜Π²Π΅Ρ€ (Π²ΠΎ упатството Π·Π° ΡƒΠΏΠ°Ρ‚ΡƒΠ²Π°ΡšΠ΅, Π²ΠΈΠ΄Π΅Ρ‚Π΅ Π΄Π΅Π» 25). SPI ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π²ΠΎ Π³Π»Π°Π²Π΅Π½ (β€žΠ³ΠΎΡΠΏΠΎΠ΄Π°Ρ€β€œ) ΠΈ slave (β€žslaveβ€œ) Ρ€Π΅ΠΆΠΈΠΌ. SPI ΠΈΠΌΠ° Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ основни ΠΊΠ°Π½Π°Π»ΠΈ, ΠΎΠ΄ ΠΊΠΎΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС користат ситС:

  • MOSI, Π“Π»Π°Π²Π΅Π½ ΠΈΠ·Π»Π΅Π· / Π‘Π»Π°Π² Π²Π»Π΅Π·: овој ΠΏΠΈΠ½ прСнСсува ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π²ΠΎ Π³Π»Π°Π²Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ ΠΈ ΠΏΡ€ΠΈΠΌΠ° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π²ΠΎ slave Ρ€Π΅ΠΆΠΈΠΌ;
  • MISO, Master Input / Slave Output: Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², ΠΏΡ€ΠΈΠΌΠ° Π²ΠΎ Π³Π»Π°Π²Π½ΠΈΠΎΡ‚, Π° прСнСсува Π²ΠΎ slave;
  • SCK, БСриски часовник: ја поставува Ρ„Ρ€Π΅ΠΊΠ²Π΅Π½Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° прСнос Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π²ΠΎ Π³Π»Π°Π²Π½ΠΈΠΎΡ‚ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΌΠ° сигнал Π·Π° часовникот Π²ΠΎ slave. Π’ΠΎ ΡΡƒΡˆΡ‚ΠΈΠ½Π° ΡƒΠ΄ΠΈΡ€Π°ΡšΠ΅ ΠΎΡ‚Ρ‡ΡƒΠΊΡƒΠ²Π°ΡšΠ°;
  • SS, Slave Select: со помош Π½Π° овој ΠΊΠ°Π½Π°Π», Ρ€ΠΎΠ±ΠΎΡ‚ Π·Π½Π°Π΅ Π΄Π΅ΠΊΠ° Π½Π΅ΡˆΡ‚ΠΎ сС Π±Π°Ρ€Π° ΠΎΠ΄ Π½Π΅Π³ΠΎ. На STM32 сС Π½Π°Ρ€Π΅ΠΊΡƒΠ²Π° NSS, ΠΊΠ°Π΄Π΅ N = Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π΅Π½, Ρ‚.Π΅. ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΎΡ€ΠΎΡ‚ станува Ρ€ΠΎΠ± Π°ΠΊΠΎ ΠΈΠΌΠ° Π·Π°Π·Π΅ΠΌΡ˜ΡƒΠ²Π°ΡšΠ΅ Π²ΠΎ овој ΠΊΠ°Π½Π°Π». Π”ΠΎΠ±Ρ€ΠΎ сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π° со Ρ€Π΅ΠΆΠΈΠΌΠΎΡ‚ Open Drain Output, Π½ΠΎ Ρ‚ΠΎΠ° Π΅ Π΄Ρ€ΡƒΠ³Π° ΠΏΡ€ΠΈΠΊΠ°Π·Π½Π°.

Како ΠΈ сè Π΄Ρ€ΡƒΠ³ΠΎ, SPI Π½Π° STM32 Π΅ Π±ΠΎΠ³Π°Ρ‚ со функционалност, ΡˆΡ‚ΠΎ Π³ΠΎ ΠΎΡ‚Π΅ΠΆΠ½ΡƒΠ²Π° Π΄ΠΎΠ½Π΅ΠΊΠ°Π΄Π΅ Π΄Π° сС Ρ€Π°Π·Π±Π΅Ρ€Π΅. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π΅ само со SPI, Ρ‚ΡƒΠΊΡƒ ΠΈ со ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ I2S, Π° Π²ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½ΠΈΠ²Π½ΠΈΡ‚Π΅ описи сС ΠΌΠ΅ΡˆΠ°Π°Ρ‚, Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½ΠΎ Π΅ Π΄Π° сС отсСчС Π²ΠΈΡˆΠΎΠΊΠΎΡ‚ Π½Π°Π²Ρ€Π΅ΠΌΠ΅Π½ΠΎ. ΠΠ°ΡˆΠ°Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° Π΅ исклучитСлно Сдноставна: само Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΈΡΠΏΡ€Π°ΡœΠ°ΠΌΠ΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ само MOSI ΠΈ SCK. ОдимС Π²ΠΎ Π΄Π΅Π»ΠΎΡ‚ 25.3.4 (полудуплСкс ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°, полудуплСкс ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°), ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ Π½Π°ΠΎΡ“Π°ΠΌΠ΅ 1 часовник ΠΈ 1 Сднонасочна ΠΆΠΈΡ†Π° Π·Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ (1 сигнал Π·Π° часовник ΠΈ 1 СднонасочСн ΠΏΡ€ΠΎΡ‚ΠΎΠΊ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ):

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
Π’ΠΎ овој Ρ€Π΅ΠΆΠΈΠΌ, Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° користи SPI ΠΈΠ»ΠΈ Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌ само Π·Π° прСнос ΠΈΠ»ΠΈ само Π·Π° ΠΏΡ€ΠΈΠΌΠ°ΡšΠ΅. / Π Π΅ΠΆΠΈΠΌΠΎΡ‚ само Π·Π° прСнос Π΅ сличСн Π½Π° дуплСкс Ρ€Π΅ΠΆΠΈΠΌΠΎΡ‚: ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ сС прСнСсуваат Π½Π° ΠΈΠ³Π»Π°Ρ‚Π° Π·Π° прСнос (MOSI Π²ΠΎ Π³Π»Π°Π²Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ ΠΈΠ»ΠΈ MISO Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° slave), Π° ΠΏΠΈΠ½ΠΎΡ‚ Π·Π° ΠΏΡ€ΠΈΠΌΠ°ΡšΠ΅ (MISO ΠΈΠ»ΠΈ MOSI соодвСтно) ΠΌΠΎΠΆΠ΅ Π΄Π° сС користи ΠΊΠ°ΠΊΠΎ ΠΎΠ±ΠΈΡ‡Π΅Π½ I/O ΠΏΠΈΠ½ . Π’ΠΎ овој ΡΠ»ΡƒΡ‡Π°Ρ˜, Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° Ρ‚Ρ€Π΅Π±Π° само Π΄Π° Π³ΠΎ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π° Π±Π°Ρ„Π΅Ρ€ΠΎΡ‚ Rx (Π°ΠΊΠΎ сС Ρ‡ΠΈΡ‚Π°, Π½Π΅ΠΌΠ° Π΄Π° ΠΈΠΌΠ° прСнСсСни ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Ρ‚Π°ΠΌΡƒ).

ΠžΠ΄Π»ΠΈΡ‡Π½ΠΎ, MISO ΠΏΠΈΠ½ΠΎΡ‚ Π΅ бСсплатСн, ајдС Π΄Π° Π³ΠΎ ΠΏΠΎΠ²Ρ€Π·Π΅ΠΌΠ΅ ЛАВ сигналот Π½Π° Π½Π΅Π³ΠΎ. Π”Π° Π³ΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ Slave Select, кој Π½Π° STM32 ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° програмски, ΡˆΡ‚ΠΎ Π΅ исклучитСлно ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ. Π“ΠΎ Ρ‡ΠΈΡ‚Π°ΠΌΠ΅ истоимСниот пасус Π²ΠΎ Π΄Π΅Π»ΠΎΡ‚ 25.3.1 SPI ΠžΠΏΡˆΡ‚ опис:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
БофтвСрска ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° NSS (SSM = 1) / Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° ΠΈΠ·Π±ΠΎΡ€ Π½Π° Ρ€ΠΎΠ±ΠΎΠ²ΠΈ сС содрТани Π²ΠΎ Π±ΠΈΡ‚ΠΎΡ‚ SSI Π½Π° рСгистарот SPI_CR1. ΠΠ°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½ΠΈΠΎΡ‚ NSS ΠΏΠΈΠ½ останува бСсплатСн Π·Π° Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π°.

Π’Ρ€Π΅ΠΌΠ΅ Π΅ Π·Π° ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ Π²ΠΎ рСгистритС. РСшив Π΄Π° користам SPI2, Π΄Π° ја ΠΏΠΎΠ±Π°Ρ€Π°ΠΌ Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° основна адрСса Π²ΠΎ листот со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ - Π²ΠΎ Π΄Π΅Π»ΠΎΡ‚ 3.3 ΠœΠ΅ΠΌΠΎΡ€ΠΈΡΠΊΠ° ΠΊΠ°Ρ€Ρ‚Π°:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8

Па, Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌΠ΅:

#define _SPI2_(mem_offset) (*(volatile uint32_t *)(0x40003800 + (mem_offset)))

ΠžΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ Π³ΠΎ Π΄Π΅Π»ΠΎΡ‚ 25.3.3 со самообјаснив наслов β€žΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° SPI Π²ΠΎ Π³Π»Π°Π²Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌβ€œ:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8

1. ΠŸΠΎΡΡ‚Π°Π²Π΅Ρ‚Π΅ ја Ρ„Ρ€Π΅ΠΊΠ²Π΅Π½Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° сСрискиот часовник со Π±ΠΈΡ‚ΠΎΠ²ΠΈ BR[2:0] Π²ΠΎ рСгистарот SPI_CR1.

РСгистритС сС собрани Π²ΠΎ истоимСниот Π΄Π΅Π» Π·Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½ΠΈΠΎΡ‚ ΠΏΡ€ΠΈΡ€Π°Ρ‡Π½ΠΈΠΊ. ΠŸΡ€ΠΎΠΌΠ΅Π½Π° Π½Π° адрСса (ΠŸΠΎΠΌΠ΅ΡΡ‚ΡƒΠ²Π°ΡšΠ΅ Π½Π° адрСсата) Π·Π° CR1 – 0x00, стандардно ситС Π±ΠΈΡ‚ΠΎΠ²ΠΈ сС Π±Ρ€ΠΈΡˆΠ°Ρ‚ (Π Π΅ΡΠ΅Ρ‚ΠΈΡ€Π°Ρ˜ ја врСдноста 0x0000):

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8

BR Π±ΠΈΡ‚ΠΎΠ²ΠΈΡ‚Π΅ Π³ΠΎ поставуваат Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΎΡ‚ Π½Π° часовникот Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΎΡ€ΠΎΡ‚, со ΡˆΡ‚ΠΎ ја ΠΎΠ΄Ρ€Π΅Π΄ΡƒΠ²Π°Π°Ρ‚ Ρ„Ρ€Π΅ΠΊΠ²Π΅Π½Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° која ќС Ρ€Π°Π±ΠΎΡ‚ΠΈ SPI. ΠΠ°ΡˆΠ°Ρ‚Π° Ρ„Ρ€Π΅ΠΊΠ²Π΅Π½Ρ†ΠΈΡ˜Π° STM32 ќС Π±ΠΈΠ΄Π΅ 72 MHz, LED Π΄Ρ€Π°Ρ˜Π²Π΅Ρ€ΠΎΡ‚, спорСд Π½Π΅Π³ΠΎΠ²ΠΈΠΎΡ‚ лист со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, Ρ€Π°Π±ΠΎΡ‚ΠΈ со Ρ„Ρ€Π΅ΠΊΠ²Π΅Π½Ρ†ΠΈΡ˜Π° Π΄ΠΎ 25 MHz, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС ΠΏΠΎΠ΄Π΅Π»ΠΈΠΌΠ΅ со Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ (BR[2:0] = 001).

#define _SPI_CR1 0x00

#define BR_0        0x0008
#define BR_1        0x0010
#define BR_2        0x0020

_SPI2_ (_SPI_CR1) |= BR_0;// pclk/4

2. ΠŸΠΎΡΡ‚Π°Π²Π΅Ρ‚Π΅ Π³ΠΈ Π±ΠΈΡ‚ΠΎΠ²ΠΈΡ‚Π΅ CPOL ΠΈ CPHA Π΄Π° ја Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π°Ρ‚ врската ΠΏΠΎΠΌΠ΅Ρ“Ρƒ прСносот Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΈ Ρ‚Π°Ρ˜ΠΌΠΈΠ½Π³ΠΎΡ‚ Π½Π° сСрискиот часовник (Π²ΠΈΠ΄Π΅Ρ‚Π΅ Π΄ΠΈΡ˜Π°Π³Ρ€Π°ΠΌ Π½Π° страница 240)

Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ ΠΎΠ²Π΄Π΅ Ρ‡ΠΈΡ‚Π°ΠΌΠ΅ лист со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΈ Π½Π΅ Π³Π»Π΅Π΄Π°ΠΌΠ΅ шСми, ајдС Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π½ΠΎ Π΄Π° Π³ΠΎ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ описот Π½Π° тСкстот Π½Π° Π±ΠΈΡ‚ΠΎΠ²ΠΈΡ‚Π΅ CPOL ΠΈ CPHA Π½Π° страница 704 (ΠΎΠΏΡˆΡ‚ опис Π½Π° SPI):

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
Π€Π°Π·Π° Π½Π° часовник ΠΈ ΠΏΠΎΠ»Π°Ρ€ΠΈΡ‚Π΅Ρ‚
ΠšΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π³ΠΈ Π±ΠΈΡ‚ΠΎΠ²ΠΈΡ‚Π΅ CPOL ΠΈ CPHA Π½Π° рСгистарот SPI_CR1, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ програмски Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ врСмСнски врски. Π‘ΠΈΡ‚ΠΎΡ‚ CPOL (ΠΏΠΎΠ»Π°Ρ€ΠΈΡ‚Π΅Ρ‚ Π½Π° часовникот) ја ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° ΡΠΎΡΡ‚ΠΎΡ˜Π±Π°Ρ‚Π° Π½Π° сигналот Π½Π° часовникот ΠΊΠΎΠ³Π° Π½Π΅ сС прСнСсуваат ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. Овој Π±ΠΈΡ‚ Π³ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° Ρ€Π΅ΠΆΠΈΠΌΠΈΡ‚Π΅ master ΠΈ slave. Ако CPOL сС рСсСтира, ΠΏΠΈΠ½ΠΎΡ‚ SCK Π΅ Π½ΠΈΠ·ΠΎΠΊ Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΌΠΈΡ€ΡƒΠ²Π°ΡšΠ΅. Ако Π±ΠΈΡ‚ΠΎΡ‚ CPOL Π΅ поставСн, ΠΏΠΈΠ½ΠΎΡ‚ SCK Π΅ висок Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π΅ΠΆΠΈΠΌΠΎΡ‚ Π½Π° ΠΎΠ΄ΠΌΠΎΡ€.
Кога Π±ΠΈΡ‚ΠΎΡ‚ CPHA (Ρ„Π°Π·Π° Π½Π° часовникот) Π΅ поставСн, стробот Π·Π° Π·Π°ΠΌΠΊΠ° со високи Π±ΠΈΡ‚ΠΎΠ²ΠΈ Π΅ Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ Ρ€Π°Π± Π½Π° сигналот SCK (ΠΏΠ°Ρ“Π° Π°ΠΊΠΎ CPOL Π΅ јасСн, сС Π·Π³ΠΎΠ»Π΅ΠΌΡƒΠ²Π° Π°ΠΊΠΎ Π΅ поставСн CPOL). ΠŸΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ сС Π·Π°Ρ€ΠΎΠ±Π΅Π½ΠΈ со Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π° Π½Π° сигналот Π½Π° часовникот. Ако Π±ΠΈΡ‚ΠΎΡ‚ CPHA Π΅ јасСн, стробот Π·Π° Π·Π°ΠΌΠΊΠ° со високи Π±ΠΈΡ‚ΠΎΠ²ΠΈ Π΅ растСчкиот Ρ€Π°Π± Π½Π° сигналот SCK (ΠΎΠΏΠ°Ρ“Π°Ρ‡ΠΊΠΈ Ρ€Π°Π± Π°ΠΊΠΎ Π΅ поставСн CPOL, растСчки Ρ€Π°Π± Π°ΠΊΠΎ CPOL Π΅ исчистСн). ΠŸΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ сС Π·Π°Ρ€ΠΎΠ±Π΅Π½ΠΈ ΠΏΡ€ΠΈ ΠΏΡ€Π²Π°Ρ‚Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π° Π½Π° сигналот Π½Π° часовникот.

ΠžΡ‚ΠΊΠ°ΠΊΠΎ Π³ΠΎ апсорбиравмС ΠΎΠ²Π° знаСњС, Π΄ΠΎΠ°Ρ“Π°ΠΌΠ΅ Π΄ΠΎ Π·Π°ΠΊΠ»ΡƒΡ‡ΠΎΠΊ Π΄Π΅ΠΊΠ° Π΄Π²Π°Ρ‚Π° Π±ΠΈΡ‚Π° ΠΌΠΎΡ€Π° Π΄Π° останат Π½ΡƒΠ»ΠΈ, бидСјќи Π‘Π°ΠΊΠ°ΠΌΠ΅ SCK сигналот Π΄Π° останС Π½ΠΈΠ·ΠΎΠΊ ΠΊΠΎΠ³Π° Π½Π΅ сС користи, Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ Π΄Π° сС прСнСсуваат Π½Π° растСчкиот Ρ€Π°Π± Π½Π° пулсот (Π²ΠΈΠ΄ΠΈ Π‘Π». Рајзинг Π•ΡŸ Π²ΠΎ листот со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ DM634).

ΠŸΠ°Ρ‚Π΅ΠΌ, ΠΎΠ²Π΄Π΅ Π·Π° ΠΏΡ€Π² ΠΏΠ°Ρ‚ Π½Π°ΠΈΠ΄ΠΎΠ²ΠΌΠ΅ Π½Π° карактСристика Π½Π° Π²ΠΎΠΊΠ°Π±ΡƒΠ»Π°Ρ€ΠΎΡ‚ Π²ΠΎ листовитС со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ST: Π²ΠΎ Π½ΠΈΠ² Π΅ напишана Ρ„Ρ€Π°Π·Π°Ρ‚Π° β€žΡ€Π΅ΡΠ΅Ρ‚ΠΈΡ€Π°Ρ˜Ρ‚Π΅ Π³ΠΎ Π±ΠΈΡ‚ΠΎΡ‚ Π½Π° Π½ΡƒΠ»Π°β€œ. Π΄Π° сС рСсСтира ΠΌΠ°Π»ΠΊΡƒΠΈ Π½Π΅ Π΄Π° сС расчисти ΠΌΠ°Π»ΠΊΡƒ, ΠΊΠ°ΠΊΠΎ, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, АтмСга.

3. ΠŸΠΎΡΡ‚Π°Π²Π΅Ρ‚Π΅ Π³ΠΎ Π±ΠΈΡ‚ΠΎΡ‚ DFF Π΄Π° ΠΎΠ΄Ρ€Π΅Π΄ΠΈ Π΄Π°Π»ΠΈ Π±Π»ΠΎΠΊΠΎΡ‚ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π΅ 8-Π±ΠΈΡ‚Π΅Π½ ΠΈΠ»ΠΈ 16-Π±ΠΈΡ‚Π΅Π½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Π·Π΅Π΄ΠΎΠ² 16-Π±ΠΈΡ‚Π΅Π½ DM634 Π·Π° Π΄Π° Π½Π΅ сС ΠΌΠ°Ρ‡Π°ΠΌ со прСнос Π½Π° 12-Π±ΠΈΡ‚Π½ΠΈ PWM ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, ΠΊΠ°ΠΊΠΎ DM633. Има смисла Π΄Π° сС постави DFF Π½Π° Π΅Π΄Π½ΠΎ:

#define DFF         0x0800

_SPI2_ (_SPI_CR1) |= DFF; // 16-bit mode

4. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ˜Ρ‚Π΅ Π³ΠΎ LSBFIRST Π±ΠΈΡ‚ΠΎΡ‚ Π²ΠΎ рСгистарот SPI_CR1 Π·Π° Π΄Π° Π³ΠΎ ΠΎΠ΄Ρ€Π΅Π΄ΠΈΡ‚Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΡ‚ Π½Π° Π±Π»ΠΎΠΊΠΎΡ‚

LSBFIRST, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сугСрира Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ ΠΈΠΌΠ΅, ΠΏΡ€Π²ΠΎ Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° прСносот со Π½Π°Ρ˜ΠΌΠ°Π»ΠΊΡƒ Π·Π½Π°Ρ‡Π°Ρ˜Π½ΠΈΠΎΡ‚ Π±ΠΈΡ‚. Но, DM634 сака Π΄Π° ΠΏΡ€ΠΈΠΌΠ° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΏΠΎΡ‡Π½ΡƒΠ²Π°Ρ˜ΡœΠΈ ΠΎΠ΄ Π½Π°Ρ˜Π·Π½Π°Ρ‡Π°Ρ˜Π½ΠΈΠΎΡ‚ Π±ΠΈΡ‚. Π—Π°Ρ‚ΠΎΠ°, Π³ΠΎ оставамС Π΄Π° сС рСсСтира.

5. Π’ΠΎ хардвСрски Ρ€Π΅ΠΆΠΈΠΌ, Π°ΠΊΠΎ Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π΅Π½ Π²Π»Π΅Π· ΠΎΠ΄ NSS ΠΏΠΈΠ½ΠΎΡ‚, нанСсСтС висок сигнал Π½Π° NSS ΠΏΠΈΠ½ΠΎΡ‚ Π²ΠΎ Ρ‚Π΅ΠΊΠΎΡ‚ Π½Π° Ρ†Π΅Π»Π°Ρ‚Π° Π½ΠΈΠ·Π° Π½Π° прСнос Π½Π° Π±Π°Ρ˜Ρ‚ΠΈ. Π’ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠΎΡ‚ Π½Π° софтвСр NSS, поставСтС Π³ΠΈ Π±ΠΈΡ‚ΠΎΠ²ΠΈΡ‚Π΅ SSM ΠΈ SSI Π²ΠΎ рСгистарот SPI_CR1. Ако ΠΏΠΈΠ½ΠΎΡ‚ NSS Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС користи ΠΊΠ°ΠΊΠΎ ΠΈΠ·Π»Π΅Π·, Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС постави само Π±ΠΈΡ‚ΠΎΡ‚ SSOE.

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρ˜Ρ‚Π΅ SSM ΠΈ SSI Π·Π° Π΄Π° Π·Π°Π±ΠΎΡ€Π°Π²ΠΈΡ‚Π΅ Π½Π° хардвСрскиот Ρ€Π΅ΠΆΠΈΠΌ NSS:

#define SSI         0x0100
#define SSM         0x0200

_SPI2_ (_SPI_CR1) |= SSM | SSI; //enable software control of SS, SS high

6. Π‘ΠΈΡ‚ΠΎΠ²ΠΈΡ‚Π΅ MSTR ΠΈ SPE ΠΌΠΎΡ€Π° Π΄Π° Π±ΠΈΠ΄Π°Ρ‚ поставСни (Ρ‚ΠΈΠ΅ остануваат поставСни само Π°ΠΊΠΎ NSS сигналот Π΅ висок)

Π’ΡΡƒΡˆΠ½ΠΎΡΡ‚, со ΠΎΠ²ΠΈΠ΅ Π±ΠΈΡ‚ΠΎΠ²ΠΈ Π³ΠΎ ΠΎΠ·Π½Π°Ρ‡ΡƒΠ²Π°ΠΌΠ΅ Π½Π°ΡˆΠΈΠΎΡ‚ SPI ΠΊΠ°ΠΊΠΎ Π³Π»Π°Π²Π΅Π½ ΠΈ Π³ΠΎ Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°ΠΌΠ΅:

#define MSTR        0x0004
#define SPE         0x0040

_SPI2_ (_SPI_CR1) |= MSTR; //SPI master
//ΠΊΠΎΠ³Π΄Π° всС Π³ΠΎΡ‚ΠΎΠ²ΠΎ, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ SPI
_SPI2_ (_SPI_CR1) |= SPE;

SPI Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½, ајдС вСднаш Π΄Π° напишСмС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡˆΡ‚ΠΎ ΠΈΡΠΏΡ€Π°ΡœΠ°Π°Ρ‚ Π±Π°Ρ˜Ρ‚ΠΈ Π΄ΠΎ Π΄Ρ€Π°Ρ˜Π²Π΅Ρ€ΠΎΡ‚. ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Ρ‚Π΅ со Ρ‡ΠΈΡ‚Π°ΡšΠ΅ 25.3.3 β€žΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° SPI Π²ΠΎ Π³Π»Π°Π²Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌβ€œ:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
Нарачка Π·Π° прСнос Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ
ΠŸΡ€Π΅Π½ΠΎΡΠΎΡ‚ Π·Π°ΠΏΠΎΡ‡Π½ΡƒΠ²Π° ΠΊΠΎΠ³Π° Π±Π°Ρ˜Ρ‚ Π΅ запишан Π²ΠΎ Π±Π°Ρ„Π΅Ρ€ΠΎΡ‚ Tx.
ΠŸΠΎΠ΄Π°Ρ‚ΠΎΡ‡Π½ΠΈΠΎΡ‚ Π±Π°Ρ˜Ρ‚ сС Π²Ρ‡ΠΈΡ‚ΡƒΠ²Π° Π²ΠΎ рСгистарот Π·Π° ΠΏΠΎΠΌΠ΅ΡΡ‚ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ Ρ€Π΅ΠΆΠΈΠΌ (ΠΎΠ΄ Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° магистрала) Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° прСносот Π½Π° ΠΏΡ€Π²ΠΈΠΎΡ‚ Π±ΠΈΡ‚, ΠΏΠΎ ΡˆΡ‚ΠΎ сС прСнСсува Π΄ΠΎ ΡΠ΅ΠΊΠ²Π΅Π½Ρ†ΠΈΡ˜Π°Π»Π΅Π½ Π Π΅ΠΆΠΈΠΌ Π½Π° пински MOSI, ΠΏΡ€Π² ΠΈΠ»ΠΈ послСдСн Π±ΠΈΡ‚ Π½Π°ΠΏΡ€Π΅Π΄ Π²ΠΎ зависност ΠΎΠ΄ Π΄ΠΎΡ‚Π΅Ρ€ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Π±ΠΈΡ‚ΠΎΡ‚ LSBFIRST Π²ΠΎ рСгистарот CPI_CR1. Π—Π½Π°ΠΌΠ΅Ρ‚ΠΎ TXE сС поставува ΠΏΠΎ прСносот Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΎΠ΄ Tx Ρ‚Π°ΠΌΠΏΠΎΠ½ Π΄ΠΎ рСгистар Π·Π° ΠΏΠΎΠΌΠ΅ΡΡ‚ΡƒΠ²Π°ΡšΠ΅, Π° исто Ρ‚Π°ΠΊΠ° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° ΠΏΡ€Π΅ΠΊΠΈΠ½ Π°ΠΊΠΎ Π΅ поставСн Π±ΠΈΡ‚ΠΎΡ‚ TXEIE Π²ΠΎ рСгистарот CPI_CR1.

Π˜ΡΡ‚Π°ΠΊΠ½Π°Π² Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Π·Π±ΠΎΡ€ΠΎΠ²ΠΈ Π²ΠΎ ΠΏΡ€Π΅Π²ΠΎΠ΄ΠΎΡ‚ Π·Π° Π΄Π° ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡Π°ΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΅Π΄Π½Π° карактСристика Π½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° SPI Π²ΠΎ STM ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΈΡ‚Π΅. На Atmega Π·Π½Π°ΠΌΠ΅Ρ‚ΠΎ TXE (Tx ΠŸΡ€Π°Π·Π΅Π½, Tx Π΅ ΠΏΡ€Π°Π·Π΅Π½ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ Π΄Π° ΠΏΡ€ΠΈΠΌΠ° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ) сС поставува само ΠΎΡ‚ΠΊΠ°ΠΊΠΎ ќС сС испрати Ρ†Π΅Π»ΠΈΠΎΡ‚ Π±Π°Ρ˜Ρ‚ Π½Π°Π΄Π²ΠΎΡ€. И ΠΎΠ²Π΄Π΅ ΠΎΠ²Π° Π·Π½Π°ΠΌΠ΅Π½Ρ†Π΅ Π΅ поставСно ΠΎΡ‚ΠΊΠ°ΠΊΠΎ Π±Π°Ρ˜Ρ‚ΠΎΡ‚ Π΅ Π²ΠΌΠ΅Ρ‚Π½Π°Ρ‚ Π²ΠΎ Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½ΠΈΠΎΡ‚ рСгистар Π·Π° ΠΏΠΎΠΌΠ΅ΡΡ‚ΡƒΠ²Π°ΡšΠ΅. Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ сС Ρ‚ΡƒΡ€ΠΊΠ° Ρ‚Π°ΠΌΡƒ со ситС Π±ΠΈΡ‚ΠΎΠ²ΠΈ Π²ΠΎ исто Π²Ρ€Π΅ΠΌΠ΅ (ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ), Π° ΠΏΠΎΡ‚ΠΎΠ° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ сС прСнСсуваат послСдоватСлно, TXE сС поставува ΠΏΡ€Π΅Π΄ Π±Π°Ρ˜Ρ‚ΠΎΡ‚ цСлосно Π΄Π° сС испрати. Ова Π΅ Π²Π°ΠΆΠ½ΠΎ Π·Π°Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ Π²ΠΎ ΡΠ»ΡƒΡ‡Π°Ρ˜ΠΎΡ‚ со Π½Π°ΡˆΠΈΠΎΡ‚ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π» Π·Π° LED, Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π³ΠΎ ΠΏΠΎΠ²Π»Π΅Ρ‡Π΅ΠΌΠ΅ ΠΈΠ³Π»Π°Ρ‚Π° LAT ΠΏΠΎ ΠΈΡΠΏΡ€Π°ΡœΠ°ΡšΠ΅Ρ‚ΠΎ Π‘ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, Ρ‚.Π΅. Π‘Π°ΠΌΠΎ Π·Π½Π°ΠΌΠ΅Ρ‚ΠΎ TXE Π½Π΅ΠΌΠ° Π΄Π° Π½ΠΈ Π±ΠΈΠ΄Π΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ.

Π’ΠΎΠ° Π·Π½Π°Ρ‡ΠΈ Π΄Π΅ΠΊΠ° Π½ΠΈ Ρ‚Ρ€Π΅Π±Π° ΡƒΡˆΡ‚Π΅ Π΅Π΄Π½ΠΎ Π·Π½Π°ΠΌΠ΅. АјдС Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ Π²ΠΎ 25.3.7 - β€žΠ—Π½Π°ΠΌΠΈΡšΠ° Π·Π° ΡΡ‚Π°Ρ‚ΡƒΡβ€œ:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
<…>
Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
Π—Π°Ρ„Π°Ρ‚Π΅Π½ΠΎ Π·Π½Π°ΠΌΠ΅
Π—Π½Π°ΠΌΠ΅Ρ‚ΠΎ BSY Π΅ поставСно ΠΈ Π±Ρ€ΠΈΡˆΠ΅Π½ΠΎ со Ρ…Π°Ρ€Π΄Π²Π΅Ρ€ (ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Π½Π΅Π³ΠΎ Π½Π΅ΠΌΠ° Π΅Ρ„Π΅ΠΊΡ‚). Π—Π½Π°ΠΌΠ΅Ρ‚ΠΎ BSY ја ΠΎΠ·Π½Π°Ρ‡ΡƒΠ²Π° ΡΠΎΡΡ‚ΠΎΡ˜Π±Π°Ρ‚Π° Π½Π° комуникацискиот слој SPI.
Π‘Π΅ рСсСтира:
ΠΊΠΎΠ³Π° прСносот Π΅ Π·Π°Π²Ρ€ΡˆΠ΅Π½ (освСн Π²ΠΎ Π³Π»Π°Π²Π½ΠΈΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌ Π°ΠΊΠΎ прСносот Π΅ ΠΊΠΎΠ½Ρ‚ΠΈΠ½ΡƒΠΈΡ€Π°Π½)
ΠΊΠΎΠ³Π° SPI Π΅ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½
ΠΊΠΎΠ³Π° ќС сС појави Π³Ρ€Π΅ΡˆΠΊΠ° Π²ΠΎ Π³Π»Π°Π²Π½ΠΈΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌ (MODF=1)
Ако прСносот Π½Π΅ Π΅ ΠΊΠΎΠ½Ρ‚ΠΈΠ½ΡƒΠΈΡ€Π°Π½, Π·Π½Π°ΠΌΠ΅Ρ‚ΠΎ BSY сС Π±Ρ€ΠΈΡˆΠ΅ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ сСкој прСнос Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ

Π”ΠΎΠ±Ρ€ΠΎ, ΠΎΠ²Π° ќС Π½ΠΈ сС најдС. АјдС Π΄Π° Π΄ΠΎΠ·Π½Π°Π΅ΠΌΠ΅ ΠΊΠ°Π΄Π΅ сС Π½Π°ΠΎΡ“Π° Ρ‚Π°ΠΌΠΏΠΎΠ½ΠΎΡ‚ Tx. Π—Π° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΎΠ²Π°, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ˜Ρ‚Π΅ β€žΠ Π΅Π³ΠΈΡΡ‚Π°Ρ€ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ SPIβ€œ:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
Π‘ΠΈΡ‚ΠΎΠ²ΠΈ 15:0 DR[15:0] РСгистар Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ
ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΡˆΡ‚ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС прСнСсат.
РСгистарот Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π΅ ΠΏΠΎΠ΄Π΅Π»Π΅Π½ Π½Π° Π΄Π²Π° Π±Π°Ρ„Π΅Ρ€ΠΈ - Π΅Π΄Π΅Π½ Π·Π° Π·Π°ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ (Ρ‚Π°ΠΌΠΏΠΎΠ½ Π·Π° прСнос) ΠΈ Π΅Π΄Π΅Π½ Π·Π° Ρ‡ΠΈΡ‚Π°ΡšΠ΅ (Ρ‚Π°ΠΌΠΏΠΎΠ½ Π·Π° ΠΏΡ€ΠΈΠΌΠ°ΡšΠ΅). ΠŸΠΈΡˆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π²ΠΎ рСгистарот Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π·Π°ΠΏΠΈΡˆΡƒΠ²Π° Π²ΠΎ Π±Π°Ρ„Π΅Ρ€ΠΎΡ‚ Tx, Π° Ρ‡ΠΈΡ‚Π°ΡšΠ΅Ρ‚ΠΎ ΠΎΠ΄ рСгистарот Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ќС ја Π²Ρ€Π°Ρ‚ΠΈ врСдноста содрТана Π²ΠΎ Π±Π°Ρ„Π΅Ρ€ΠΎΡ‚ Rx.

Па, ΠΈ статусниот рСгистар, ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ сС Π½Π°ΠΎΡ“Π°Π°Ρ‚ Π·Π½Π°ΠΌΠΈΡšΠ°Ρ‚Π° TXE ΠΈ BSY:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8

НиС ΠΏΠΈΡˆΡƒΠ²Π°ΠΌΠ΅:

#define _SPI_DR  0x0C
#define _SPI_SR  0x08

#define BSY         0x0080
#define TXE         0x0002

void dm_shift16(uint16_t value)
{
    _SPI2_(_SPI_DR) = value; //send 2 bytes
    while (!(_SPI2_(_SPI_SR) & TXE)); //wait until they're sent
}

Па, бидСјќи Ρ‚Ρ€Π΅Π±Π° Π΄Π° прСнСсСмС 16 ΠΏΠ°Ρ‚ΠΈ Π΄Π²Π° Π±Π°Ρ˜Ρ‚ΠΈ, спорСд Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° ΠΈΠ·Π»Π΅Π·ΠΈ Π½Π° LED Π΄Ρ€Π°Ρ˜Π²Π΅Ρ€ΠΈ, Π½Π΅ΡˆΡ‚ΠΎ Π²Π°ΠΊΠ°:

void sendLEDdata()
{
    LAT_low();
    uint8_t k = 16;
    do
    {   k--;
        dm_shift16(leds[k]);
    } while (k);

    while (_SPI2_(_SPI_SR) & BSY); // finish transmission

    LAT_pulse();
}

Но, сè ΡƒΡˆΡ‚Π΅ Π½Π΅ Π·Π½Π°Π΅ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° ја ΠΏΠΎΠ²Π»Π΅Ρ‡Π΅ΠΌΠ΅ ΠΈΠ³Π»Π°Ρ‚Π° LAT, ΠΏΠ° ќС сС Π²Ρ€Π°Ρ‚ΠΈΠΌΠ΅ Π½Π° Π’/И.

Π”ΠΎΠ΄Π΅Π»ΡƒΠ²Π°ΡšΠ΅ ΠΈΠ³Π»ΠΈΡ‡ΠΊΠΈ

Π’ΠΎ STM32F1, рСгистритС ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π½ΠΈ Π·Π° ΡΠΎΡΡ‚ΠΎΡ˜Π±Π°Ρ‚Π° Π½Π° ΠΏΠΈΠ½ΠΎΠ²ΠΈΡ‚Π΅ сС сосСма Π½Π΅Π²ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½ΠΈ. Јасно Π΅ Π΄Π΅ΠΊΠ° Π³ΠΈ ΠΈΠΌΠ° повСќС ΠΎΠ΄ Atmega, Π½ΠΎ Ρ‚ΠΈΠ΅ сС Ρ€Π°Π·Π»ΠΈΠΊΡƒΠ²Π°Π°Ρ‚ ΠΈ ΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ STM Ρ‡ΠΈΠΏΠΎΠ²ΠΈ. Π”Π΅Π» 9.1 ΠžΠΏΡˆΡ‚ опис Π½Π° GPIO:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
БСкоја ΠΎΠ΄ Π²Π»Π΅Π·Π½ΠΈΡ‚Π΅/ΠΈΠ·Π»Π΅Π·Π½ΠΈ ΠΏΠΎΡ€Ρ‚ΠΈ Π·Π° ΠΎΠΏΡˆΡ‚Π° Π½Π°ΠΌΠ΅Π½Π° (GPIO) ΠΈΠΌΠ° Π΄Π²Π° 32-Π±ΠΈΡ‚Π½ΠΈ конфигурациски рСгистри (GPIOx_CRL ΠΈ GPIOx_CRH), Π΄Π²Π° 32-Π±ΠΈΡ‚Π½ΠΈ рСгистри Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ (GPIOx_IDR ΠΈ GPIOx_ODR), 32-Π±ΠΈΡ‚Π΅Π½ рСгистСр Π·Π° ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅/Ρ€Π΅ΡΠ΅Ρ‚ΠΈΡ€Π°ΡšΠ΅ (GPIOx_BSRR), 16-Π±ΠΈΡ‚Π΅Π½ рСгистар Π·Π° Ρ€Π΅ΡΠ΅Ρ‚ΠΈΡ€Π°ΡšΠ΅ (GPIOx_BRR) ΠΈ рСгистар Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°ΡšΠ΅ Π½Π° Π±ΠΈΡ‚ΠΎΠ²ΠΈ (GPIOx_LCKR).

ΠŸΡ€Π²ΠΈΡ‚Π΅ Π΄Π²Π° рСгистри сС Π½Π΅Π²ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½ΠΈ, Π° исто Ρ‚Π°ΠΊΠ° доста Π½Π΅Π·Π³ΠΎΠ΄Π½ΠΈ, бидСјќи 16-Ρ‚Π΅ ΠΏΠΈΠ½ΠΎΠ²ΠΈ Π½Π° ΠΏΠΎΡ€Ρ‚ΠΈΡ‚Π΅ сС расфрлани Π½ΠΈΠ· Π½ΠΈΠ² Π²ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ β€žΡ‡Π΅Ρ‚ΠΈΡ€ΠΈ Π±ΠΈΡ‚Π° ΠΏΠΎ Π±Ρ€Π°Ρ‚β€œ. ОниС. ΠΏΠΈΠ½ΠΎΠ²ΠΈΡ‚Π΅ ΠΎΠ΄ Π½ΡƒΠ»Π° Π΄ΠΎ сСдум сС Π²ΠΎ CRL, Π° останатитС сС Π²ΠΎ CRH. Π’ΠΎ исто Π²Ρ€Π΅ΠΌΠ΅, прСостанатитС рСгистри ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π³ΠΈ содрТат Π±ΠΈΡ‚ΠΎΠ²ΠΈ ΠΎΠ΄ ситС ΠΏΠΈΠ½ΠΎΠ²ΠΈ Π½Π° ΠΏΡ€ΠΈΡΡ‚Π°Π½ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ - чСсто остануваат ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° β€žΡ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€Π°Π½ΠΈβ€œ.

Π—Π° Сдноставност, Π΄Π° ΠΏΠΎΡ‡Π½Π΅ΠΌΠ΅ ΠΎΠ΄ ΠΊΡ€Π°Ρ˜ΠΎΡ‚ Π½Π° листата.

НС Π½ΠΈ Ρ‚Ρ€Π΅Π±Π° рСгистар Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°ΡšΠ΅.

РСгистритС Π·Π° ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ ΠΈ Ρ€Π΅ΡΠ΅Ρ‚ΠΈΡ€Π°ΡšΠ΅ сС ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ смСшни ΠΏΠΎ Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ Π΄Π΅Π»ΡƒΠΌΠ½ΠΎ сС Π΄ΡƒΠΏΠ»ΠΈΡ€Π°Π°Ρ‚ Π΅Π΄Π΅Π½ со Π΄Ρ€ΡƒΠ³: ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ сè само Π²ΠΎ BSRR, ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ повисокитС 16 Π±ΠΈΡ‚Π° ќС Π³ΠΎ рСсСтираат ΠΏΠΈΠ½ΠΎΡ‚ Π½Π° Π½ΡƒΠ»Π°, Π° Π΄ΠΎΠ»Π½ΠΈΡ‚Π΅ ќС Π±ΠΈΠ΄Π°Ρ‚ поставСни Π½Π° 1, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ исто Ρ‚Π°ΠΊΠ° користСтС BRR, ΠΎΠ΄ ΠΊΠΎΠΈ Π΄ΠΎΠ»Π½ΠΈΡ‚Π΅ 16 Π±ΠΈΡ‚Π° Π³ΠΎ рСсСтираат само ΠΏΠΈΠ½ΠΎΡ‚. Ми сС Π΄ΠΎΠΏΠ°Ρ“Π° Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° ΠΎΠΏΡ†ΠΈΡ˜Π°. ОвиС рСгистри сС Π²Π°ΠΆΠ½ΠΈ Π·Π°Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°Π°Ρ‚ атомски пристап Π΄ΠΎ ΠΏΠΈΠ½ΠΎΠ²ΠΈΡ‚Π΅:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
Атомско ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ ΠΈΠ»ΠΈ Ρ€Π΅ΡΠ΅Ρ‚ΠΈΡ€Π°ΡšΠ΅
НСма ΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π΄Π° сС ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°Π°Ρ‚ ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈΡ‚Π΅ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°ΡšΠ΅ Π½Π° GPIOx_ODR Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° Π±ΠΈΡ‚ΠΎΠ²ΠΈ: Π΅Π΄Π΅Π½ ΠΈΠ»ΠΈ повСќС Π±ΠΈΡ‚ΠΎΠ²ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС смСнат со Π΅Π΄Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π° Π·Π° атомско Π·Π°ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ APB2. Ова сС постигнува со Π·Π°ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ β€ž1β€œ Π²ΠΎ рСгистСрот Π·Π° ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅/Ρ€Π΅ΡΠ΅Ρ‚ΠΈΡ€Π°ΡšΠ΅ (GPIOx_BSRR ΠΈΠ»ΠΈ, само Π·Π° Ρ€Π΅ΡΠ΅Ρ‚ΠΈΡ€Π°ΡšΠ΅, GPIOx_BRR) Π½Π° Π±ΠΈΡ‚ΠΎΡ‚ ΡˆΡ‚ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ. Π”Ρ€ΡƒΠ³ΠΈΡ‚Π΅ Π±ΠΈΡ‚ΠΎΠ²ΠΈ ќС останат Π½Π΅ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Ρ‚ΠΈ.

РСгистритС Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΈΠΌΠ°Π°Ρ‚ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ самообјасниви имиња - IDR = ВнСсСтС РСгистар Π½Π° насоки, рСгистар Π½Π° Π²Π»Π΅Π·ΠΎΠ²ΠΈ; ODR = ΠΈΠ·Π»Π΅Π· РСгистар Π½Π° насока, рСгистСр Π·Π° ΠΈΠ·Π»Π΅Π·. НСма Π΄Π° Π½ΠΈ Ρ‚Ρ€Π΅Π±Π°Π°Ρ‚ Π²ΠΎ Ρ‚Π΅ΠΊΠΎΠ²Π½ΠΈΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

И ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈΡ‚Π΅ рСгистри. Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ смС заинтСрСсирани Π·Π° Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ SPI ΠΏΠΈΠ½ΠΎΠ²ΠΈ, ΠΈΠΌΠ΅Π½ΠΎ PB13, PB14 ΠΈ PB15, вСднаш Π³ΠΎ Ρ€Π°Π·Π³Π»Π΅Π΄ΡƒΠ²Π°ΠΌΠ΅ CRH:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8

И Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° ќС Ρ‚Ρ€Π΅Π±Π° Π΄Π° напишСмС Π½Π΅ΡˆΡ‚ΠΎ Π²ΠΎ Π±ΠΈΡ‚ΠΎΠ²ΠΈ ΠΎΠ΄ 20 Π΄ΠΎ 31.

ΠŸΠΎΠ³ΠΎΡ€Π΅ вСќС сфативмС ΡˆΡ‚ΠΎ сакамС ΠΎΠ΄ ΠΏΠΈΠ½ΠΎΠ²ΠΈΡ‚Π΅, ΠΏΠ° Ρ‚ΡƒΠΊΠ° ќС Π½Π°ΠΏΡ€Π°Π²Π°ΠΌ Π±Π΅Π· слика ΠΎΠ΄ Π΅ΠΊΡ€Π°Π½ΠΎΡ‚, само ќС ΠΊΠ°ΠΆΠ°ΠΌ Π΄Π΅ΠΊΠ° MODE ја ΠΎΠ΄Ρ€Π΅Π΄ΡƒΠ²Π° насоката (Π²Π»Π΅Π· Π°ΠΊΠΎ Π΄Π²Π°Ρ‚Π° Π±ΠΈΡ‚Π° сС поставСни Π½Π° 0) ΠΈ Π±Ρ€Π·ΠΈΠ½Π°Ρ‚Π° Π½Π° ΠΏΠΈΠ½ΠΎΠ²ΠΈΡ‚Π΅ (Π½ΠΈ Ρ‚Ρ€Π΅Π±Π°Π°Ρ‚ 50 MHz, Ρ‚.Π΅. ΠΈ Π΄Π²Π΅Ρ‚Π΅ ΠΏΠΈΠ½ΠΎΠ²ΠΈ Π½Π° β€ž1β€œ), Π° CNF Π³ΠΎ поставува Ρ€Π΅ΠΆΠΈΠΌΠΎΡ‚: Ρ€Π΅Π΄ΠΎΠ²Π½ΠΎ β€žpush-pullβ€œ – 00, β€žalternativeβ€œ – 10. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Π΄Π½ΠΎ, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΎΠ³ΠΎΡ€Π΅, ситС ΠΏΠΈΠ½ΠΎΠ²ΠΈ Π³ΠΎ ΠΈΠΌΠ°Π°Ρ‚ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΎΡ‚ Π±ΠΈΡ‚ ΠΎΠ΄ Π΄Π½ΠΎΡ‚ΠΎ (CNF0). Π³ΠΈ поставува Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌ Π»Π΅Π±Π΄Π΅Ρ‡ΠΊΠΈ Π²Π»Π΅Π·.

Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ ΠΏΠ»Π°Π½ΠΈΡ€Π°ΠΌ Π΄Π° Π½Π°ΠΏΡ€Π°Π²Π°ΠΌ Π½Π΅ΡˆΡ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎ со овој Ρ‡ΠΈΠΏ, Π·Π° Сдноставност Π³ΠΈ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π² ситС ΠΌΠΎΠΆΠ½ΠΈ врСдности MODE ΠΈ CNF ΠΈ Π·Π° Π΄ΠΎΠ»Π½ΠΈΠΎΡ‚ ΠΈ Π·Π° Π³ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Π½ рСгистСр.

НСкако вака

#define CNF0_0 0x00000004
#define CNF0_1 0x00000008
#define CNF1_0 0x00000040
#define CNF1_1 0x00000080
#define CNF2_0 0x00000400
#define CNF2_1 0x00000800
#define CNF3_0 0x00004000
#define CNF3_1 0x00008000
#define CNF4_0 0x00040000
#define CNF4_1 0x00080000
#define CNF5_0 0x00400000
#define CNF5_1 0x00800000
#define CNF6_0 0x04000000
#define CNF6_1 0x08000000
#define CNF7_0 0x40000000
#define CNF7_1 0x80000000
#define CNF8_0 0x00000004
#define CNF8_1 0x00000008
#define CNF9_0 0x00000040
#define CNF9_1 0x00000080
#define CNF10_0 0x00000400
#define CNF10_1 0x00000800
#define CNF11_0 0x00004000
#define CNF11_1 0x00008000
#define CNF12_0 0x00040000
#define CNF12_1 0x00080000
#define CNF13_0 0x00400000
#define CNF13_1 0x00800000
#define CNF14_0 0x04000000
#define CNF14_1 0x08000000
#define CNF15_0 0x40000000
#define CNF15_1 0x80000000

#define MODE0_0 0x00000001
#define MODE0_1 0x00000002
#define MODE1_0 0x00000010
#define MODE1_1 0x00000020
#define MODE2_0 0x00000100
#define MODE2_1 0x00000200
#define MODE3_0 0x00001000
#define MODE3_1 0x00002000
#define MODE4_0 0x00010000
#define MODE4_1 0x00020000
#define MODE5_0 0x00100000
#define MODE5_1 0x00200000
#define MODE6_0 0x01000000
#define MODE6_1 0x02000000
#define MODE7_0 0x10000000
#define MODE7_1 0x20000000
#define MODE8_0 0x00000001
#define MODE8_1 0x00000002
#define MODE9_0 0x00000010
#define MODE9_1 0x00000020
#define MODE10_0 0x00000100
#define MODE10_1 0x00000200
#define MODE11_0 0x00001000
#define MODE11_1 0x00002000
#define MODE12_0 0x00010000
#define MODE12_1 0x00020000
#define MODE13_0 0x00100000
#define MODE13_1 0x00200000
#define MODE14_0 0x01000000
#define MODE14_1 0x02000000
#define MODE15_0 0x10000000
#define MODE15_1 0x20000000

ΠΠ°ΡˆΠΈΡ‚Π΅ ΠΏΠΈΠ½ΠΎΠ²ΠΈ сС Π½Π°ΠΎΡ“Π°Π°Ρ‚ Π½Π° ΠΏΠΎΡ€Ρ‚Π°Ρ‚Π° Π‘ (Π±Π°Π·Π½Π° адрСса – 0x40010C00), ΠΊΠΎΠ΄:

#define _PORTB_(mem_offset) (*(volatile uint32_t *)(0x40010C00 + (mem_offset)))

#define _BRR  0x14
#define _BSRR 0x10
#define _CRL  0x00
#define _CRH  0x04

//ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ стандартный SPI2: MOSI Π½Π° B15, CLK Π½Π° B13
//LAT ΠΏΡƒΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π° Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΌ MISO – B14

//ΠΎΡ‡ΠΈΡ‰Π°Π΅ΠΌ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹ΠΉ Π±ΠΈΡ‚, ΠΎΠ½ Π½Π°ΠΌ Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ Π½ΡƒΠΆΠ΅Π½
_PORTB_ (_CRH) &= ~(CNF15_0 | CNF14_0 | CNF13_0 | CNF12_0);

//Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для MOSI ΠΈ SCK
_PORTB_ (_CRH) |= CNF15_1 | CNF13_1;

//50 ΠœΠ“Ρ†, MODE = 11
_PORTB_ (_CRH) |= MODE15_1 | MODE15_0 | MODE14_1 | MODE14_0 | MODE13_1 | MODE13_0;

И, соодвСтно, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈ Π·Π° LAT, ΠΊΠΎΠΈ ќС Π±ΠΈΠ΄Π°Ρ‚ измСшани ΠΎΠ΄ рСгистритС BRR ΠΈ BSRR:

/*** LAT pulse – high, then low */
#define LAT_pulse() _PORTB_(_BSRR) = (1<<14); _PORTB_(_BRR) = (1<<14)

#define LAT_low() _PORTB_(_BRR) = (1<<14)

(LAT_low само ΠΏΠΎ ΠΈΠ½Π΅Ρ€Ρ†ΠΈΡ˜Π°, сСкогаш Π±ΠΈΠ»ΠΎ Ρ‚Π°ΠΊΠ°, Π½Π΅ΠΊΠ° останС)

Π‘Π΅Π³Π° сè Π΅ ΠΎΠ΄Π»ΠΈΡ‡Π½ΠΎ, Π½ΠΎ Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°. Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ ΠΎΠ²Π° Π΅ STM32, Ρ‚ΠΈΠ΅ Π·Π°ΡˆΡ‚Π΅Π΄ΡƒΠ²Π°Π°Ρ‚ ΡΡ‚Ρ€ΡƒΡ˜Π°, ΡˆΡ‚ΠΎ Π·Π½Π°Ρ‡ΠΈ Π΄Π΅ΠΊΠ° Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈΡ‚Π΅ Ρ‚Π°ΠΊΡ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½ΠΈ ΡƒΡ€Π΅Π΄ΠΈ.

Π’ΠΊΠ»ΡƒΡ‡Π΅Ρ‚Π΅ Π³ΠΎ Ρ‚Π°ΠΊΡ‚ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ

Часовникот, ΠΏΠΎΠ·Π½Π°Ρ‚ ΠΈ ΠΊΠ°ΠΊΠΎ Часовник, Π΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π΅Π½ Π·Π° Ρ‚Π°ΠΊΡ‚. И вСќС ΠΌΠΎΠΆΠ΅Π²ΠΌΠ΅ Π΄Π° ја Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠ΅ ΠΊΡ€Π°Ρ‚Π΅Π½ΠΊΠ°Ρ‚Π° RCC. Π“ΠΎ Π±Π°Ρ€Π°ΠΌΠ΅ Π²ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°: ΠΎΠ²Π° Π΅ Π Π΅ΡΠ΅Ρ‚ΠΈΡ€Π°ΡšΠ΅ ΠΈ ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° часовникот.

Како ΡˆΡ‚ΠΎ бСшС ΠΊΠ°ΠΆΠ°Π½ΠΎ ΠΏΠΎΠ³ΠΎΡ€Π΅, Π·Π° ΡΡ€Π΅ΡœΠ°, Π½Π°Ρ˜Ρ‚Π΅ΡˆΠΊΠΈΠΎΡ‚ Π΄Π΅Π» ΠΎΠ΄ Ρ‚Π΅ΠΌΠ°Ρ‚Π° Π·Π° Ρ‚Π°ΠΊΡ‚ Π½ΠΈ Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ˜Π° Π»ΡƒΡ“Π΅ ΠΎΠ΄ БВМ, Π·Π° ΡˆΡ‚ΠΎ ΠΈΠΌ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΠΌΠ΅ ΠΌΠ½ΠΎΠ³Ρƒ (ΡƒΡˆΡ‚Π΅ Сднаш ќС Π΄Π°Π΄Π°ΠΌ Π»ΠΈΠ½ΠΊ Π΄ΠΎ Π’Π΅Π±-страницата Π½Π° Π”ΠΈ Π₯Π°Π»Ρ‚, Π·Π° Π΄Π° Π±ΠΈΠ΄Π΅ јасно ΠΊΠΎΠ»ΠΊΡƒ Π΅ Π·Π±ΡƒΠ½ΡƒΠ²Π°Ρ‡ΠΊΠΈ). Ни Ρ‚Ρ€Π΅Π±Π°Π°Ρ‚ само рСгистри ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π½ΠΈ Π·Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΡ‚ΠΈΡ€Π°ΡšΠ΅ (Peripheral Clock Enable Registers). ΠŸΡ€Π²ΠΎ, Π΄Π° ја најдСмС основната адрСса Π½Π° RCC, Ρ‚Π°Π° Π΅ Π½Π° самиот ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊ Π½Π° β€žΠœΠ°ΠΏΠ°Ρ‚Π° Π·Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°β€œ:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8

#define _RCC_(mem_offset) (*(volatile uint32_t *)(0x40021000 + (mem_offset)))

И ΠΏΠΎΡ‚ΠΎΠ° ΠΈΠ»ΠΈ ΠΊΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π½Π° врската ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ сС ΠΎΠ±ΠΈΠ΄ΡƒΠ²Π°Ρ‚Π΅ Π΄Π° Π½Π°Ρ˜Π΄Π΅Ρ‚Π΅ Π½Π΅ΡˆΡ‚ΠΎ Π²ΠΎ ΠΏΠ»ΠΎΡ‡Π°Ρ‚Π° ΠΈΠ»ΠΈ, ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΎ, ΠΏΠΎΠΌΠΈΠ½Π΅Ρ‚Π΅ Π½ΠΈΠ· описитС Π½Π° рСгистритС Π·Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°ΡšΠ΅ ΠΎΠ΄ Π΄Π΅Π»ΠΎΠ²ΠΈΡ‚Π΅ Π·Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ рСгистри. КадС ќС Π³ΠΈ најдСмС RCC_APB1ENR ΠΈ RCC_APB2ENR:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8

И Ρ‚ΠΈΠ΅, соодвСтно, содрТат Π±ΠΈΡ‚ΠΎΠ²ΠΈ ΠΊΠΎΠΈ Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Π°Ρ‚ Ρ‚Π°ΠΊΡ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° SPI2, IOPB (I/O Port B) ΠΈ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (AFIO).

#define _APB2ENR 0x18
#define _APB1ENR 0x1C

#define IOPBEN 0x0008
#define SPI2EN 0x4000
#define AFIOEN 0x0001

//Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ‚Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡ€Ρ‚Π° B ΠΈ Π°Π»ΡŒΡ‚. Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
_RCC_(_APB2ENR) |= IOPBEN | AFIOEN;

//Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ  Ρ‚Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ SPI2
_RCC_(_APB1ENR) |= SPI2EN;

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° сС најдС Ρ‚ΡƒΠΊΠ°.

Ако ΠΈΠΌΠ°Ρ‚Π΅ моТност ΠΈ ΠΆΠ΅Π»Π±Π° Π·Π° Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅, Ρ‚ΠΎΠ³Π°Ρˆ ΠΏΠΎΠ²Ρ€Π·Π΅Ρ‚Π΅ Π³ΠΎ DM634 Π²Π°ΠΊΠ°: DAI Π½Π° PB15, DCK Π½Π° PB13, LAT Π½Π° PB14. Π“ΠΎ Π½Π°ΠΏΠΎΡ˜ΡƒΠ²Π°ΠΌΠ΅ Π²ΠΎΠ·Π°Ρ‡ΠΎΡ‚ ΠΎΠ΄ 5 Π²ΠΎΠ»Ρ‚ΠΈ, Π½Π΅ Π·Π°Π±ΠΎΡ€Π°Π²Π°Ρ˜Ρ‚Π΅ Π΄Π° Π³ΠΈ ΠΏΠΎΠ²Ρ€Π·Π΅Ρ‚Π΅ основитС.

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8

STM8 PWM

PWM Π½Π° STM8

Кога само ја ΠΏΠ»Π°Π½ΠΈΡ€Π°Π² ΠΎΠ²Π°Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°, Ρ€Π΅ΡˆΠΈΠ², ΠΊΠ°ΠΊΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π° сС ΠΎΠ±ΠΈΠ΄Π°ΠΌ Π΄Π° совладам нСкоја функционалност Π½Π° Π½Π΅ΠΏΠΎΠ·Π½Π°Ρ‚ Ρ‡ΠΈΠΏ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ само лист со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, Π·Π° Π΄Π° Π½Π΅ Π·Π°Π²Ρ€ΡˆΠ°ΠΌ со Ρ‡Π΅Π²Π»Π°Ρ€ Π±Π΅Π· Ρ‡ΠΈΠ·ΠΌΠΈ. STM8 бСшС ΠΈΠ΄Π΅Π°Π»Π΅Π½ Π·Π° ΠΎΠ²Π°Π° ΡƒΠ»ΠΎΠ³Π°: ΠΏΡ€Π²ΠΎ, ΠΈΠΌΠ°Π² Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ кинСски Ρ‚Π°Π±Π»ΠΈ со STM8S103, ΠΈ Π²Ρ‚ΠΎΡ€ΠΎ, Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΠΎΠΏΡƒΠ»Π°Ρ€Π΅Π½, ΠΈ Π·Π°Ρ‚ΠΎΠ° ΠΈΡΠΊΡƒΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΄Π° сС ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π° ΠΈ Π΄Π° сС најдС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΏΠΎΡ‡ΠΈΠ²Π° Π½Π° нСдостатокот Π½Π° Ρ‚ΠΎΠΊΠΌΡƒ ΠΎΠ²ΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ˜Π°.

Π§ΠΈΠΏΠΎΡ‚ исто Ρ‚Π°ΠΊΠ° ΠΈΠΌΠ° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΈ Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π΅Π½ ΠΏΡ€ΠΈΡ€Π°Ρ‡Π½ΠΈΠΊ RM0016, Π²ΠΎ ΠΏΡ€Π²Π°Ρ‚Π° ΠΈΠΌΠ° адрСси Π·Π° ΠΏΠΈΠ½Π°ΡƒΡ‚ ΠΈ рСгистар, Π²ΠΎ Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° - сС останато. STM8 Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½ Π²ΠΎ C Π²ΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½Π° IDE ST Visual Develop.

ΠšΠ»ΠΎΠΊΠΈΡ€Π°ΡšΠ΅ ΠΈ Π’/И

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Π΄Π½ΠΎ, STM8 Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Ρ„Ρ€Π΅ΠΊΠ²Π΅Π½Ρ†ΠΈΡ˜Π° ΠΎΠ΄ 2 MHz, ΠΎΠ²Π° ΠΌΠΎΡ€Π° вСднаш Π΄Π° сС ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°.

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
HSI (Π’Π½Π°Ρ‚Ρ€Π΅ΡˆΠ΅Π½) часовник со Π³ΠΎΠ»Π΅ΠΌΠ° Π±Ρ€Π·ΠΈΠ½Π°
HSI Ρ‚Π°ΠΊΡ‚-сигналот Π΅ ΠΈΠ·Π²Π΅Π΄Π΅Π½ ΠΎΠ΄ Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ΅Π½ RC осцилатор ΠΎΠ΄ 16 MHz со ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Π±ΠΈΠ»Π΅Π½ Π΄Π΅Π»ΠΈΡ‚Π΅Π» (1 Π΄ΠΎ 8). Вој Π΅ поставСн Π²ΠΎ рСгистарот Π·Π° Π΄Π΅Π»ΠΈΡ‚Π΅Π» Π½Π° часовникот (CLK_CKDIVR).
Π—Π°Π±Π΅Π»Π΅ΡˆΠΊΠ°: Π½Π° ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊΠΎΡ‚, HSI RC осцилатор со Π΄Π΅Π»ΠΈΡ‚Π΅Π» 8 Π΅ ΠΈΠ·Π±Ρ€Π°Π½ ΠΊΠ°ΠΊΠΎ Π²ΠΎΠ΄Π΅Ρ‡ΠΊΠΈ ΠΈΠ·Π²ΠΎΡ€ Π½Π° сигналот Π½Π° часовникот.

Ја Π½Π°ΠΎΡ“Π°ΠΌΠ΅ адрСсата Π½Π° рСгистарот Π²ΠΎ листот со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, описот Π²ΠΎ refman ΠΈ Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° рСгистарот Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС исчисти:

#define CLK_CKDIVR *(volatile uint8_t *)0x0050C6

CLK_CKDIVR &= ~(0x18);

Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ ќС ΠΈΠ·Π²Ρ€ΡˆΠΈΠΌΠ΅ PWM ΠΈ ќС Π³ΠΈ ΠΏΠΎΠ²Ρ€Π·Π΅ΠΌΠ΅ LED Π΄ΠΈΠΎΠ΄ΠΈΡ‚Π΅, ајдС Π΄Π° Π³ΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ ΠΏΠΈΠ½Π°ΡƒΡ‚ΠΎΡ‚:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8

Π§ΠΈΠΏΠΎΡ‚ Π΅ ΠΌΠ°Π», ΠΌΠ½ΠΎΠ³Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сС суспСндирани Π½Π° иститС ΠΏΠΈΠ½ΠΎΠ²ΠΈ. Она ΡˆΡ‚ΠΎ Π΅ Π²ΠΎ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΈ Π·Π°Π³Ρ€Π°Π΄ΠΈ Π΅ β€žΠ°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ‚β€œ, сС ΠΏΡ€Π΅Ρ„Ρ€Π»Π° со β€žΠ±Π°Ρ˜Ρ‚ΠΈ Π·Π° ΠΎΠΏΡ†ΠΈΡ˜Π°β€œ (Π±Π°Ρ˜Ρ‚ΠΈ Π½Π° ΠΎΠΏΡ†ΠΈΠΈ) – Π½Π΅ΡˆΡ‚ΠΎ ΠΊΠ°ΠΊΠΎ Atmega осигурувачи. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΈ ΠΌΠ΅Π½ΡƒΠ²Π°Ρ‚Π΅ Π½ΠΈΠ²Π½ΠΈΡ‚Π΅ врСдности програмски, Π½ΠΎ Ρ‚ΠΎΠ° Π½Π΅ Π΅ Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½ΠΎ, бидСјќи Новата функционалност сС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° само ΠΏΠΎ Ρ€Π΅ΡΡ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΡšΠ΅. ПолСсно Π΅ Π΄Π° сС користи ST Visual Programmer (ΠΏΡ€Π΅Π·Π΅ΠΌΠ΅Π½ со Visual Develop), кој ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΎΠ²ΠΈΠ΅ Π±Π°Ρ˜Ρ‚ΠΈ. ΠŸΡ€ΠΈΠΊΠ°Π·ΠΎΡ‚ ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π° Π΄Π΅ΠΊΠ° ΠΏΠΈΠ½ΠΎΠ²ΠΈΡ‚Π΅ CH1 ΠΈ CH2 Π½Π° ΠΏΡ€Π²ΠΈΠΎΡ‚ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ сС скриСни Π²ΠΎ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΈ Π·Π°Π³Ρ€Π°Π΄ΠΈ; ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ Π΅ Π΄Π° сС постават Π±ΠΈΡ‚ΠΎΠ²ΠΈΡ‚Π΅ AFR1 ΠΈ AFR0 Π²ΠΎ STVP, Π° Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ ќС Π³ΠΎ прСнСсС ΠΈ ΠΈΠ·Π»Π΅Π·ΠΎΡ‚ CH1 Π½Π° Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ ΠΎΠ΄ PD4 Π½Π° PC5.

Π’Π°ΠΊΠ°, 6 ΠΏΠΈΠ½Π° ќС Π³ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Π°Ρ‚ LED Π΄ΠΈΠΎΠ΄ΠΈΡ‚Π΅: PC6, PC7 ΠΈ PC3 Π·Π° ΠΏΡ€Π²ΠΈΠΎΡ‚ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€, PC5, PD3 ΠΈ PA3 Π·Π° Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚.

ΠŸΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° самитС I/O ΠΏΠΈΠ½ΠΎΠ²ΠΈ Π½Π° STM8 Π΅ поСдноставно ΠΈ ΠΏΠΎΠ»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΎΡ‚ΠΊΠΎΠ»ΠΊΡƒ Π½Π° STM32:

  • ΠΏΠΎΠ·Π½Π°Ρ‚ ΠΎΠ΄ рСгистарот Π·Π° насока Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Atmega DDR (РСгистар Π·Π° насока Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ): 1 = ΠΈΠ·Π»Π΅Π·;
  • ΠΏΡ€Π²ΠΈΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Π½ рСгистСр CR1, ΠΊΠΎΠ³Π° ΠΈΠ·Π»Π΅Π³ΡƒΠ²Π°, Π³ΠΎ поставува Ρ€Π΅ΠΆΠΈΠΌΠΎΡ‚ Π·Π° ΠΏΡ€ΠΈΡ‚ΠΈΡΠΊΠ°ΡšΠ΅ (1) ΠΈΠ»ΠΈ ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΎΠ΄Π²ΠΎΠ΄ (0); бидСјќи Π³ΠΈ ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΠΌ LED Π΄ΠΈΠΎΠ΄ΠΈΡ‚Π΅ со Ρ‡ΠΈΠΏΠΎΡ‚ со ΠΊΠ°Ρ‚ΠΎΠ΄ΠΈ, оставам Π½ΡƒΠ»ΠΈ ΠΎΠ²Π΄Π΅;
  • Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Π½ рСгистар CR2, ΠΊΠΎΠ³Π° ΠΈΠ·Π»Π΅Π³ΡƒΠ²Π°, ја поставува Π±Ρ€Π·ΠΈΠ½Π°Ρ‚Π° Π½Π° часовникот: 1 = 10 MHz

#define PA_DDR     *(volatile uint8_t *)0x005002
#define PA_CR2     *(volatile uint8_t *)0x005004
#define PD_DDR     *(volatile uint8_t *)0x005011
#define PD_CR2     *(volatile uint8_t *)0x005013
#define PC_DDR     *(volatile uint8_t *)0x00500C
#define PC_CR2     *(volatile uint8_t *)0x00500E

PA_DDR = (1<<3); //output
PA_CR2 |= (1<<3); //fast
PD_DDR = (1<<3); //output
PD_CR2 |= (1<<3); //fast
PC_DDR = ((1<<3) | (1<<5) | (1<<6) | (1<<7)); //output
PC_CR2 |= ((1<<3) | (1<<5) | (1<<6) | (1<<7)); //fast

ΠŸΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ PWM

ΠŸΡ€Π²ΠΎ, Π΄Π° Π³ΠΈ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°ΠΌΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ‚Π΅:

  • Π€Ρ€Π΅ΠΊΠ²Π΅Π½Ρ†ΠΈΡ˜Π° Π½Π° PWM – Ρ„Ρ€Π΅ΠΊΠ²Π΅Π½Ρ†ΠΈΡ˜Π° со која ΡˆΡ‚ΠΈΠΊΠ»ΠΈΡ€Π° Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΎΡ‚;
  • Автоматско ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²Ρ‡ΠΈΡ‚ΡƒΠ²Π°ΡšΠ΅, AR – автоматска врСдност Π΄ΠΎ која ќС Π±Ρ€ΠΎΠΈ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΎΡ‚ (ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π½Π° пулсот);
  • ΠΠΆΡƒΡ€ΠΈΡ€Π°Ρ˜ настан, UEV – настан ΡˆΡ‚ΠΎ сС случува ΠΊΠΎΠ³Π° Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΎΡ‚ Π±Ρ€ΠΎΠ΅Π» Π΄ΠΎ AR;
  • PWM Duty Cycle – Циклус Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° PWM, чСсто Π½Π°Ρ€Π΅Ρ‡Π΅Π½ β€žΡ„Π°ΠΊΡ‚ΠΎΡ€ Π½Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚β€œ;
  • Π‘Π½ΠΈΠΌΠ°Ρ˜Ρ‚Π΅/Π‘ΠΏΠΎΡ€Π΅Π΄ΠΈ врСдност – врСдност Π·Π° снимањС/ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅, Π½Π° која Π±Ρ€ΠΎΠ΅Π» Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΎΡ‚ ќС Π½Π°ΠΏΡ€Π°Π²ΠΈ Π½Π΅ΡˆΡ‚ΠΎ (Π²ΠΎ ΡΠ»ΡƒΡ‡Π°Ρ˜ Π½Π° PWM, Π³ΠΎ ΠΏΡ€Π΅Π²Ρ€Ρ‚ΡƒΠ²Π° ΠΈΠ·Π»Π΅Π·Π½ΠΈΠΎΡ‚ сигнал);
  • ВрСдност ΠΏΡ€Π΅Π΄ Π²Ρ‡ΠΈΡ‚ΡƒΠ²Π°ΡšΠ΅ – ΠΎΠ΄Π½Π°ΠΏΡ€Π΅Π΄ Π²Ρ‡ΠΈΡ‚Π°Π½Π° врСдност. Π‘ΠΏΠΎΡ€Π΅Π΄Π΅Ρ‚Π΅ ја врСдноста Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π΄ΠΎΠ΄Π΅ΠΊΠ° Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΎΡ‚ ΠΎΡ‚Ρ‡ΡƒΠΊΡƒΠ²Π°, ΠΈΠ½Π°ΠΊΡƒ циклусот PWM ќС сС ΠΏΡ€Π΅ΠΊΠΈΠ½Π΅. Π—Π°Ρ‚ΠΎΠ°, Π½ΠΎΠ²ΠΈΡ‚Π΅ прСнСсСни врСдности сС ставаат Π²ΠΎ Π±Π°Ρ„Π΅Ρ€ ΠΈ сС ΠΈΠ·Π²Π»Π΅ΠΊΡƒΠ²Π°Π°Ρ‚ ΠΊΠΎΠ³Π° Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΎΡ‚ ќС Π³ΠΎ достигнС ΠΊΡ€Π°Ρ˜ΠΎΡ‚ Π½Π° своСто ΠΎΠ΄Π±Ρ€ΠΎΡ˜ΡƒΠ²Π°ΡšΠ΅ ΠΈ ќС сС рСсСтира;
  • ΠŸΠΎΡ€Π°ΠΌΠ½Π΅Ρ‚ΠΈ Π½Π° Ρ€Π°Π±ΠΎΡ‚ ΠΈ Π Π΅ΠΆΠΈΠΌΠΈ ΠΏΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΈ Π²ΠΎ Ρ†Π΅Π½Ρ‚Π°Ρ€ΠΎΡ‚ – ΠΏΠΎΡ€Π°ΠΌΠ½ΡƒΠ²Π°ΡšΠ΅ Π΄ΠΎΠ»ΠΆ Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ‚Π° ΠΈ Π²ΠΎ Ρ†Π΅Π½Ρ‚Π°Ρ€ΠΎΡ‚, исто ΠΊΠ°ΠΊΠΎ ΠΈ АтмСл Π‘Ρ€Π· PWM ΠΈ Π€Π°Π·Π°-Ρ‚ΠΎΡ‡Π΅Π½ PWM.
  • OCiREF, ИзлСзСн спорСдСн Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π΅Π½ сигнал – Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π΅Π½ ΠΈΠ·Π»Π΅Π·Π΅Π½ сигнал, Π²ΡΡƒΡˆΠ½ΠΎΡΡ‚, ΠΎΠ½Π° ΡˆΡ‚ΠΎ сС ΠΏΠΎΡ˜Π°Π²ΡƒΠ²Π° Π½Π° соодвСтниот ΠΏΠΈΠ½ Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠΎΡ‚ PWM.

Како ΡˆΡ‚ΠΎ Π΅ вСќС јасно ΠΎΠ΄ ΠΏΠΈΠ½Π°ΡƒΡ‚ΠΎΡ‚, Π΄Π²Π° Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​имаат PWM моТности – ΠΏΡ€Π²ΠΈΠΎΡ‚ ΠΈ Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚. И Π΄Π²Π΅Ρ‚Π΅ сС 16-Π±ΠΈΡ‚Π½ΠΈ, ΠΏΡ€Π²ΠΈΠΎΡ‚ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³Ρƒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (особСно, ΠΌΠΎΠΆΠ΅ Π΄Π° Π±Ρ€ΠΎΠΈ ΠΈ Π½Π°Π³ΠΎΡ€Π΅ ΠΈ Π½Π°Π΄ΠΎΠ»Ρƒ). Ни Ρ‚Ρ€Π΅Π±Π° ΠΈ Π΄Π²Π΅Ρ‚Π΅ Π·Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌΠ΅ ΠΏΠΎΠ΄Π΅Π΄Π½Π°ΠΊΠ²ΠΎ, ΠΏΠ° Ρ€Π΅ΡˆΠΈΠ² Π΄Π° ΠΏΠΎΡ‡Π½Π°ΠΌ со ΠΎΡ‡ΠΈΠ³Π»Π΅Π΄Π½ΠΎ послабата Π²Ρ‚ΠΎΡ€Π°, Π·Π° ΡΠ»ΡƒΡ‡Π°Ρ˜Π½ΠΎ Π΄Π° Π½Π΅ искористам Π½Π΅ΡˆΡ‚ΠΎ ΡˆΡ‚ΠΎ Π³ΠΎ Π½Π΅ΠΌΠ°. НСкој ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π΅ ΡˆΡ‚ΠΎ описот Π½Π° PWM функционалноста Π½Π° ситС Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​во упатството Π·Π° ΠΏΠΎΠ²ΠΈΠΊΡƒΠ²Π°ΡšΠ΅ Π΅ Π²ΠΎ ΠΏΠΎΠ³Π»Π°Π²Ρ˜Π΅Ρ‚ΠΎ Π·Π° ΠΏΡ€Π²ΠΈΠΎΡ‚ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ (17.5.7 PWM Ρ€Π΅ΠΆΠΈΠΌ), Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ ΠΌΠΎΡ€Π° ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Π½ΠΎ Π΄Π° скокатС Π½Π°ΠΏΡ€Π΅Π΄-Π½Π°Π·Π°Π΄ Π½ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΡ‚.

PWM Π½Π° STM8 ΠΈΠΌΠ° Π²Π°ΠΆΠ½Π° прСдност Π²ΠΎ однос Π½Π° PWM Π½Π° Atmega:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
ΠŸΠΎΡ€Π°ΠΌΠ½Π΅Ρ‚ΠΈ Π³Ρ€Π°Π½ΠΈΡ†ΠΈ PWM
ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π½Π° смСтката ΠΎΠ΄ Π΄Π½ΠΎΡ‚ΠΎ ΠΊΠΎΠ½ Π²Ρ€Π²ΠΎΡ‚
Π‘Ρ€ΠΎΠ΅ΡšΠ΅Ρ‚ΠΎ ΠΎΠ΄ Π΄ΠΎΠ»Ρƒ Π½Π°Π³ΠΎΡ€Π΅ Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π°ΠΊΠΎ Π±ΠΈΡ‚ΠΎΡ‚ DIR Π²ΠΎ рСгистарот TIM_CR1 Π΅ исчистСн
ΠŸΡ€ΠΈΠΌΠ΅Ρ€
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΡ‚ Π³ΠΎ користи ΠΏΡ€Π²ΠΈΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌ PWM. Π Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½ΠΈΠΎΡ‚ сигнал PWM OCiREF сС ΠΎΠ΄Ρ€ΠΆΡƒΠ²Π° високо Π΄ΠΎΠ΄Π΅ΠΊΠ° TIM1_CNT < TIM1_CCRi. Π’ΠΎ спротивно, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ Π΅ ниско Π½ΠΈΠ²ΠΎ. Ако спорСдбСната врСдност Π²ΠΎ рСгистарот TIM1_CCRi Π΅ ΠΏΠΎΠ³ΠΎΠ»Π΅ΠΌΠ° ΠΎΠ΄ врСдноста Π½Π° автоматско Π²Ρ‡ΠΈΡ‚ΡƒΠ²Π°ΡšΠ΅ (рСгистар TIM1_ARR), сигналот OCiREF сС ΠΎΠ΄Ρ€ΠΆΡƒΠ²Π° Π½Π° 1. Ако спорСдбСната врСдност Π΅ 0, OCiREF сС ΠΎΠ΄Ρ€ΠΆΡƒΠ²Π° Π½Π° Π½ΡƒΠ»Π°....

STM8 Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ настан ΠΏΡ€Π²ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡƒΠ²Π° спорСдСтС ја врСдноста, ΠΈ само Ρ‚ΠΎΠ³Π°Ρˆ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄ΡƒΠ²Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π΅Π½ сигнал. Π’Π°Ρ˜ΠΌΠ΅Ρ€ΠΎΡ‚ Π½Π° Atmega ΠΏΡ€Π²ΠΎ сС Π½Π°Π²Ρ€Ρ‚ΡƒΠ²Π°, Π° ΠΏΠΎΡ‚ΠΎΠ° сС спорСдува, ΡˆΡ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚ΠΈΡ€Π° со compare value == 0 ΠΈΠ·Π»Π΅Π·ΠΎΡ‚ Π΅ ΠΈΠ³Π»Π°, со која ΠΌΠΎΡ€Π° Π½Π΅ΠΊΠ°ΠΊΠΎ Π΄Π° сС справи (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, со програмско ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π°).

Π—Π½Π°Ρ‡ΠΈ, ΡˆΡ‚ΠΎ сакамС Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌΠ΅: 8-Π±ΠΈΡ‚Π΅Π½ PWM (AR == 255), Π±Ρ€ΠΎΠ΅Ρ˜ΡœΠΈ ΠΎΠ΄ Π΄Π½ΠΎΡ‚ΠΎ ΠΊΠΎΠ½ Π²Ρ€Π²ΠΎΡ‚, ΠΏΠΎΡ€Π°ΠΌΠ½ΡƒΠ²Π°ΡšΠ΅ ΠΏΠΎ Π΄ΠΎΠ»ΠΆΠΈΠ½Π°Ρ‚Π° Π½Π° Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ‚Π°. Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ свСтилкитС сС ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈ со Ρ‡ΠΈΠΏΠΎΡ‚ со ΠΊΠ°Ρ‚ΠΎΠ΄ΠΈ, PWM Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π΄Π°Π΄Π΅ 0 (свСтло LED) Π΄ΠΎΠ΄Π΅ΠΊΠ° спорСдСтС ја врСдноста ΠΈ 1 послС.

Π—Π° Π½Π΅ΠΊΠΎΠΈ вСќС ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π²ΠΌΠ΅ Π Π΅ΠΆΠΈΠΌ PWM, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ Π³ΠΎ Π½Π°ΠΎΡ“Π°ΠΌΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΠΎΡ‚ рСгистар Π½Π° Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ со ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ Π²ΠΎ упатството Π·Π° ΠΎΠ²Π°Π° Ρ„Ρ€Π°Π·Π° (18.6.8 - TIMx_CCMR1):

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
110: ΠŸΡ€Π² PWM Ρ€Π΅ΠΆΠΈΠΌ – ΠΊΠΎΠ³Π° сС Π±Ρ€ΠΎΠΈ ΠΎΠ΄ Π΄Π½ΠΎΡ‚ΠΎ Π½Π°Π³ΠΎΡ€Π΅, ΠΏΡ€Π²ΠΈΠΎΡ‚ ΠΊΠ°Π½Π°Π» Π΅ Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ Π΄ΠΎΠ΄Π΅ΠΊΠ° TIMx_CNT < TIMx_CCR1. Π’ΠΎ спротивно, ΠΏΡ€Π²ΠΈΠΎΡ‚ ΠΊΠ°Π½Π°Π» Π΅ Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π΅Π½. [ΠŸΠΎΠ½Π°Ρ‚Π°ΠΌΡƒ Π²ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΡ‚ ΠΈΠΌΠ° ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½Π° копија-лСпСњС ΠΎΠ΄ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΎΡ‚ 1] 111: Π’Ρ‚ΠΎΡ€ Ρ€Π΅ΠΆΠΈΠΌ PWM – ΠΊΠΎΠ³Π° сС Π±Ρ€ΠΎΠΈ ΠΎΠ΄ Π΄Π½ΠΎΡ‚ΠΎ ΠΊΠΎΠ½ Π²Ρ€Π²ΠΎΡ‚, ΠΏΡ€Π²ΠΈΠΎΡ‚ ΠΊΠ°Π½Π°Π» Π΅ Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ Π΄ΠΎΠ΄Π΅ΠΊΠ° TIMx_CNT < TIMx_CCR1. Π’ΠΎ спротивно, ΠΏΡ€Π²ΠΈΠΎΡ‚ ΠΊΠ°Π½Π°Π» Π΅ Π°ΠΊΡ‚ΠΈΠ²Π΅Π½.

Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ LED Π΄ΠΈΠΎΠ΄ΠΈΡ‚Π΅ сС ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈ со MK со ΠΊΠ°Ρ‚ΠΎΠ΄ΠΈ, Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌ Π½ΠΈ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π° (ΠΈ ΠΏΡ€Π²ΠΈΠΎΡ‚, Π½ΠΎ Ρ‚ΠΎΠ° сè ΡƒΡˆΡ‚Π΅ Π½Π΅ Π³ΠΎ Π·Π½Π°Π΅ΠΌΠ΅).

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
Π‘ΠΈΡ‚ 3 OC1PE: ΠžΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ Π²Ρ‡ΠΈΡ‚ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΠΈΠ½ΠΎΡ‚ 1
0: РСгистарот ΠΎΠ΄Π½Π°ΠΏΡ€Π΅Π΄ Π²Ρ‡ΠΈΡ‚Π°Π½ Π½Π° TIMx_CCR1 Π΅ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½. МоТС Π΄Π° ΠΏΠΈΡˆΡƒΠ²Π°Ρ‚Π΅ Π½Π° TIMx_CCR1 Π²ΠΎ сСкоС Π²Ρ€Π΅ΠΌΠ΅. Новата врСдност Ρ€Π°Π±ΠΎΡ‚ΠΈ вСднаш.
1: РСгистарот Π·Π° ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ Π²Ρ‡ΠΈΡ‚ΡƒΠ²Π°ΡšΠ΅ Π½Π° TIMx_CCR1 Π΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° Ρ‡ΠΈΡ‚Π°ΡšΠ΅/Π·Π°ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ пристапуваат Π΄ΠΎ рСгистарот Π·Π° ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ Π²Ρ‡ΠΈΡ‚ΡƒΠ²Π°ΡšΠ΅. Π’Ρ‡ΠΈΡ‚Π°Π½Π°Ρ‚Π° врСдност TIMx_CCR1 сС Π²Ρ‡ΠΈΡ‚ΡƒΠ²Π° Π²ΠΎ рСгистарот Π²ΠΎ сСнка Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° сСкој настан Π·Π° Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ΅.
*Π—Π°Π±Π΅Π»Π΅ΡˆΠΊΠ°: Π·Π° PWM Ρ€Π΅ΠΆΠΈΠΌΠΎΡ‚ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ, рСгистритС Π·Π° ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ Π²Ρ‡ΠΈΡ‚ΡƒΠ²Π°ΡšΠ΅ ΠΌΠΎΡ€Π° Π΄Π° Π±ΠΈΠ΄Π°Ρ‚ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ΠΈ. Ова Π½Π΅ Π΅ Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½ΠΎ Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠΎΡ‚ Π½Π° Π΅Π΄Π΅Π½ сигнал (Π±ΠΈΡ‚ΠΎΡ‚ OPM Π΅ поставСн Π²ΠΎ рСгистарот TIMx_CR1).

Π”ΠΎΠ±Ρ€ΠΎ, ајдС Π΄Π° Π²ΠΊΠ»ΡƒΡ‡ΠΈΠΌΠ΅ сè ΡˆΡ‚ΠΎ Π½ΠΈ Ρ‚Ρ€Π΅Π±Π° Π·Π° Ρ‚Ρ€ΠΈΡ‚Π΅ ΠΊΠ°Π½Π°Π»ΠΈ Π½Π° Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€:

#define TIM2_CCMR1 *(volatile uint8_t *)0x005307
#define TIM2_CCMR2 *(volatile uint8_t *)0x005308
#define TIM2_CCMR3 *(volatile uint8_t *)0x005309

#define PWM_MODE2   0x70 //PWM mode 2, 0b01110000
#define OCxPE       0x08 //preload enable

TIM2_CCMR1 = (PWM_MODE2 | OCxPE);
TIM2_CCMR2 = (PWM_MODE2 | OCxPE);
TIM2_CCMR3 = (PWM_MODE2 | OCxPE);

AR сС состои ΠΎΠ΄ Π΄Π²Π° осум-Π±ΠΈΡ‚Π½ΠΈ рСгистри, сè Π΅ Сдноставно:

#define TIM2_ARRH  *(volatile uint8_t *)0x00530F
#define TIM2_ARRL  *(volatile uint8_t *)0x005310

TIM2_ARRH = 0;
TIM2_ARRL = 255;

Π’Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±Ρ€ΠΎΠΈ само ΠΎΠ΄ Π΄Π½ΠΎΡ‚ΠΎ ΠΊΠΎΠ½ Π²Ρ€Π²ΠΎΡ‚, ΠΏΠΎΡ€Π°ΠΌΠ½ΡƒΠ²Π°ΡšΠ΅ Π΄ΠΎΠ»ΠΆ Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ‚Π°, Π½ΠΈΡˆΡ‚ΠΎ Π½Π΅ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС ΠΌΠ΅Π½ΡƒΠ²Π°. Π”Π° Π³ΠΎ поставимС Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΎΡ‚ Π½Π° Ρ„Ρ€Π΅ΠΊΠ²Π΅Π½Ρ†ΠΈΡ˜Π°, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° 256. Π—Π° Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€, Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΎΡ‚ Π΅ поставСн Π²ΠΎ рСгистарот TIM2_PSCR ΠΈ Π΅ ΠΌΠΎΡœΠ½ΠΎΡΡ‚ ΠΎΠ΄ Π΄Π²Π°:

#define TIM2_PSCR  *(volatile uint8_t *)0x00530E

TIM2_PSCR = 8;

ΠžΡΡ‚Π°Π½ΡƒΠ²Π° само Π΄Π° сС Π²ΠΊΠ»ΡƒΡ‡Π°Ρ‚ Π·Π°ΠΊΠ»ΡƒΡ‡ΠΎΡ†ΠΈΡ‚Π΅ ΠΈ самиот Π²Ρ‚ΠΎΡ€ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€. ΠŸΡ€Π²ΠΈΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ сС Ρ€Π΅ΡˆΠ°Π²Π° со рСгистри Π‘Π½ΠΈΠΌΠ°Ρ˜Ρ‚Π΅/Π‘ΠΏΠΎΡ€Π΅Π΄ΠΈ ОвозмоТи: ΠΈΠΌΠ° Π΄Π²Π°, Ρ‚Ρ€ΠΈ ΠΊΠ°Π½Π°Π»ΠΈ расфрлани Π½ΠΈΠ· Π½ΠΈΠ² асимСтрично. ОвдС ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π½Π°ΡƒΡ‡ΠΈΠΌΠ΅ ΠΈ Π΄Π΅ΠΊΠ° Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»Π°Ρ€ΠΈΡ‚Π΅Ρ‚ΠΎΡ‚ Π½Π° сигналот, Ρ‚.Π΅. Π²ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ, бСшС ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° сС користи Ρ€Π΅ΠΆΠΈΠΌΠΎΡ‚ PWM 1. НиС ΠΏΠΈΡˆΡƒΠ²Π°ΠΌΠ΅:

#define TIM2_CCER1 *(volatile uint8_t *)0x00530A
#define TIM2_CCER2 *(volatile uint8_t *)0x00530B

#define CC1E  (1<<0) // CCER1
#define CC2E  (1<<4) // CCER1
#define CC3E  (1<<0) // CCER2

TIM2_CCER1 = (CC1E | CC2E);
TIM2_CCER2 = CC3E;

И, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π³ΠΎ стартувамС Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΎΡ‚ Π²ΠΎ рСгистарот TIMx_CR1:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8

#define TIM2_CR1   *(volatile uint8_t *)0x005300

TIM2_CR1 |= 1;

АјдС Π΄Π° напишСмС СдноставСн Π°Π½Π°Π»ΠΎΠ³ Π½Π° AnalogWrite(), кој ќС Π³ΠΈ прСнСсС вистинскитС врСдности Π½Π° Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΎΡ‚ Π·Π° спорСдба. РСгистритС сС ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½ΠΈ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π»ΠΈΠ²ΠΎ Π‘Π½ΠΈΠΌΠ°Ρ˜Ρ‚Π΅/Π‘ΠΏΠΎΡ€Π΅Π΄ΠΈ рСгистри, ΠΈΠΌΠ° Π΄Π²Π° ΠΎΠ΄ Π½ΠΈΠ² Π·Π° сСкој ΠΊΠ°Π½Π°Π»: 8 Π±ΠΈΡ‚Π° ΠΎΠ΄ Π½ΠΈΠ·ΠΎΠΊ Ρ€Π΅Π΄ Π²ΠΎ TIM2_CCRxL ΠΈ ΠΎΠ½ΠΈΠ΅ ΠΎΠ΄ висок Ρ€Π΅Π΄ Π²ΠΎ TIM2_CCRxH. Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ создадовмС 8-Π±ΠΈΡ‚Π΅Π½ PWM, Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ Π΅ Π΄Π° Π³ΠΈ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ само Π½Π°Ρ˜ΠΌΠ°Π»ΠΊΡƒ Π·Π½Π°Ρ‡Π°Ρ˜Π½ΠΈΡ‚Π΅ Π±ΠΈΡ‚ΠΎΠ²ΠΈ:

#define TIM2_CCR1L *(volatile uint8_t *)0x005312
#define TIM2_CCR2L *(volatile uint8_t *)0x005314
#define TIM2_CCR3L *(volatile uint8_t *)0x005316

void setRGBled(uint8_t r, uint8_t g, uint8_t b)
{
    TIM2_CCR1L = r;
    TIM2_CCR2L = g;
    TIM2_CCR3L = b;
}

Π’Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π½ΠΈΠΎΡ‚ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π» ќС Π·Π°Π±Π΅Π»Π΅ΠΆΠΈ Π΄Π΅ΠΊΠ° ΠΈΠΌΠ°ΠΌΠ΅ ΠΌΠ°Π»ΠΊΡƒ Π΄Π΅Ρ„Π΅ΠΊΡ‚Π΅Π½ PWM, кој Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅ 100% полнСњС (ΠΏΡ€ΠΈ максимална врСдност ΠΎΠ΄ 255, сигналот сС ΠΏΡ€Π΅Π²Ρ€Ρ‚ΡƒΠ²Π° Π·Π° Π΅Π΄Π΅Π½ циклус Π½Π° Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€). Π—Π° LED Π΄ΠΈΠΎΠ΄ΠΈ ΠΎΠ²Π° Π½Π΅ Π΅ Π²Π°ΠΆΠ½ΠΎ, Π° Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π½ΠΈΠΎΡ‚ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π» вСќС ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ³ΠΎΠ΄ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΎ ΠΏΠΎΠΏΡ€Π°Π²ΠΈ.

PWM Π½Π° Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚ΠΈ, ајдС Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌΠ΅ Π½Π° ΠΏΡ€Π²ΠΈΠΎΡ‚.

ΠŸΡ€Π²ΠΈΠΎΡ‚ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ Π³ΠΈ ΠΈΠΌΠ° Ρ‚ΠΎΠΊΠΌΡƒ иститС Π±ΠΈΡ‚ΠΎΠ²ΠΈ Π²ΠΎ иститС рСгистри (само ΠΎΠ½ΠΈΠ΅ Π±ΠΈΡ‚ΠΎΠ²ΠΈ ΡˆΡ‚ΠΎ останаа β€žΡ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€Π°Π½ΠΈβ€œ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ сС користат Π²ΠΎ ΠΏΡ€Π²ΠΈΠΎΡ‚ Π·Π° сСкакви Π½Π°ΠΏΡ€Π΅Π΄Π½ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΈ). Π—Π°Ρ‚ΠΎΠ°, Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ Π΅ Π΄Π° Π³ΠΈ ΠΏΡ€ΠΎΠ½Π°Ρ˜Π΄Π΅Ρ‚Π΅ адрСситС Π½Π° иститС рСгистри Π²ΠΎ листот со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΈ Π΄Π° Π³ΠΎ ΠΊΠΎΠΏΠΈΡ€Π°Ρ‚Π΅ ΠΊΠΎΠ΄ΠΎΡ‚. Па, смСнСтС ја врСдноста Π½Π° Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΎΡ‚ Π½Π° Ρ„Ρ€Π΅ΠΊΠ²Π΅Π½Ρ†ΠΈΡ˜Π°Ρ‚Π°, бидСјќи ... ΠΏΡ€Π²ΠΈΠΎΡ‚ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ сака Π΄Π° Π½Π΅ ΠΏΡ€ΠΈΠΌΠΈ ΠΌΠΎΡœΠ½ΠΎΡΡ‚ ΠΎΠ΄ Π΄Π²Π°, Ρ‚ΡƒΠΊΡƒ Ρ‚ΠΎΡ‡Π½Π° 16-Π±ΠΈΡ‚Π½Π° врСдност Π²ΠΎ Π΄Π²Π° рСгистри ΠŸΡ€Π΅ΡΠΊΠ°Π»Π°Ρ€ Висок ΠΈ Ниско. ΠŸΡ€Π°Π²ΠΈΠΌΠ΅ сС ΠΈ... ΠΏΡ€Π²ΠΈΠΎΡ‚ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ. Π¨Ρ‚ΠΎ Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΡ‚?

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ€Π΅ΡˆΠΈ само со ΠΏΡ€Π΅Π³Π»Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° Ρ†Π΅Π»ΠΈΠΎΡ‚ Π΄Π΅Π» Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈΡ‚Π΅ рСгистри Π½Π° Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΎΡ‚ 1, ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ Π³ΠΎ Π±Π°Ρ€Π°ΠΌΠ΅ оној ΡˆΡ‚ΠΎ Π³ΠΎ Π½Π΅ΠΌΠ° Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€. ЌС Π±ΠΈΠ΄Π΅ 17.7.30 РСгистар Π·Π° ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ (TIM1_BKR), ΠΊΠ°Π΄Π΅ Π³ΠΎ ΠΈΠΌΠ° овој Π±ΠΈΡ‚:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
ΠžΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π³ΠΎ Π³Π»Π°Π²Π½ΠΈΠΎΡ‚ ΠΈΠ·Π»Π΅Π·

#define TIM1_BKR   *(volatile uint8_t *)0x00526D

TIM1_BKR = (1<<7);

Π’ΠΎΠ° Π΅ сСга сигурно, ΠΊΠΎΠ΄ΠΎΡ‚ Ρ‚Π°ΠΌΡƒ.

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8

STM8 мултиплСкс

ΠœΡƒΠ»Ρ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€Π°ΡšΠ΅ Π½Π° STM8

Π’Ρ€Π΅Ρ‚ΠΈΠΎΡ‚ ΠΌΠΈΠ½ΠΈ-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π΅ Π΄Π° ΠΏΠΎΠ²Ρ€Π·Π΅Ρ‚Π΅ осум RGB LED Π΄ΠΈΠΎΠ΄ΠΈ со Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌ PWM ΠΈ Π΄Π° Π³ΠΈ Π½Π°Ρ‚Π΅Ρ€Π°Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΈΠΊΠ°ΠΆΡƒΠ²Π°Π°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π±ΠΎΠΈ. Вој сС заснова Π½Π° ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΠΎΡ‚ Π½Π° LED ΠΌΡƒΠ»Ρ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€Π°ΡšΠ΅, Π° Ρ‚ΠΎΠ° Π΅ Π΄Π΅ΠΊΠ° Π°ΠΊΠΎ Π³ΠΈ Π²ΠΊΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΈ исклучитС LED Π΄ΠΈΠΎΠ΄ΠΈΡ‚Π΅ ΠΌΠ½ΠΎΠ³Ρƒ, ΠΌΠ½ΠΎΠ³Ρƒ Π±Ρ€Π·ΠΎ, ќС Π½ΠΈ сС Ρ‡ΠΈΠ½ΠΈ Π΄Π΅ΠΊΠ° Ρ‚ΠΈΠ΅ сС ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Π½ΠΎ Π²ΠΊΠ»ΡƒΡ‡Π΅Π½ΠΈ (упорност Π½Π° Π²ΠΈΠ΄ΠΎΡ‚, ΠΈΠ½Π΅Ρ€Ρ†ΠΈΡ˜Π° Π½Π° Π²ΠΈΠ·ΡƒΠ΅Π»Π½Π° ΠΏΠ΅Ρ€Ρ†Π΅ΠΏΡ†ΠΈΡ˜Π°). Јас Сднаш Π½Π°ΠΏΡ€Π°Π²ΠΈΠ² Π²Π°ΠΊΠ²ΠΎ Π½Π΅ΡˆΡ‚ΠΎ Π½Π° Arduino.

Алгоритмот Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΈΠ·Π³Π»Π΅Π΄Π° Π²Π°ΠΊΠ°:

  • ја ΠΏΠΎΠ²Ρ€Π·Π° Π°Π½ΠΎΠ΄Π°Ρ‚Π° Π½Π° ΠΏΡ€Π²Π°Ρ‚Π° RGB LED;
  • Π³ΠΎ Π·Π°ΠΏΠ°Π»ΠΈ, ΠΈΡΠΏΡ€Π°ΡœΠ°Ρ˜ΡœΠΈ Π³ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ сигнали Π΄ΠΎ ΠΊΠ°Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅;
  • Ρ‡Π΅ΠΊΠ°ΡˆΠ΅ Π΄ΠΎ ΠΊΡ€Π°Ρ˜ΠΎΡ‚ Π½Π° циклусот PWM;
  • ја ΠΏΠΎΠ²Ρ€Π·Π° Π°Π½ΠΎΠ΄Π°Ρ‚Π° Π½Π° Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° RGB LED;
  • Π·Π°ΠΏΠ°Π»ΠΈ Π³ΠΎ...

Па, ΠΈΡ‚Π½. Π‘Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°, Π·Π° ΡƒΠ±Π°Π²ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ΡšΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ Π΅ Π°Π½ΠΎΠ΄Π°Ρ‚Π° Π΄Π° сС ΠΏΠΎΠ²Ρ€Π·Π΅ ΠΈ Π›Π•Π  Π΄Π° сС β€žΠ·Π°ΠΏΠ°Π»ΠΈβ€œ Π²ΠΎ исто Π²Ρ€Π΅ΠΌΠ΅. Па, ΠΈΠ»ΠΈ рСчиси. Π’ΠΎ сСкој ΡΠ»ΡƒΡ‡Π°Ρ˜, Ρ‚Ρ€Π΅Π±Π° Π΄Π° напишСмС ΠΊΠΎΠ΄ ΡˆΡ‚ΠΎ ќС Π³ΠΈ исфрли врСдноститС Π²ΠΎ Ρ‚Ρ€ΠΈ ΠΊΠ°Π½Π°Π»ΠΈ ΠΎΠ΄ Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€, ќС Π³ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΊΠΎΠ³Π° ќС сС достигнС UEV ΠΈ Π²ΠΎ исто Π²Ρ€Π΅ΠΌΠ΅ ќС ја смСни ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½Π°Ρ‚Π° RGB LED.

Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ ΠΏΡ€Π΅Ρ„Ρ€Π»ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Π›Π•Π” Π΅ автоматско, Ρ‚Ρ€Π΅Π±Π° Π΄Π° создадСмС β€žΠ²ΠΈΠ΄Π΅ΠΎ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°β€œ ΠΎΠ΄ која ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°Ρ‡ΠΎΡ‚ со ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ ќС ΠΏΡ€ΠΈΠΌΠ° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. Ова Π΅ Сдноставна Π½ΠΈΠ·Π°:

uint8_t colors[8][3];

Π—Π° Π΄Π° ја смСнитС Π±ΠΎΡ˜Π°Ρ‚Π° Π½Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° LED Π΄ΠΈΠΎΠ΄Π°, ќС Π±ΠΈΠ΄Π΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ Π΄Π° Π³ΠΈ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ врСдности Π²ΠΎ ΠΎΠ²Π°Π° Π½ΠΈΠ·Π°. И ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° ќС Π±ΠΈΠ΄Π΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π½Π° Π·Π° Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π½Π°Ρ‚Π° Π›Π•Π 

uint8_t cnt;

ДСмукс

Π—Π° ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΌΡƒΠ»Ρ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€Π°ΡšΠ΅, ΠΏΠΎΡ‚Ρ€Π΅Π±Π΅Π½ Π½ΠΈ Π΅, Ρ‡ΡƒΠ΄Π½ΠΎ, дСмултиплСксСр CD74HC238. ДСмултиплСксСр - Ρ‡ΠΈΠΏ ΡˆΡ‚ΠΎ Π³ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΡ‚ Π²ΠΎ Ρ…Π°Ρ€Π΄Π²Π΅Ρ€ <<. ΠŸΡ€Π΅ΠΊΡƒ Ρ‚Ρ€ΠΈ Π²Π»Π΅Π·Π½ΠΈ ΠΏΠΈΠ½ΠΎΠ²ΠΈ (Π±ΠΈΡ‚ΠΎΠ²ΠΈ 0, 1 ΠΈ 2) Π³ΠΎ внСсувамС со Ρ‚Ρ€ΠΈΠ±ΠΈΡ‚Π΅Π½ Π±Ρ€ΠΎΡ˜ X, Π° ΠΊΠ°ΠΊΠΎ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ Π³ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° ΠΈΠ·Π»Π΅Π·Π½ΠΈΠΎΡ‚ Π±Ρ€ΠΎΡ˜ (1<<X). ΠžΡΡ‚Π°Π½Π°Ρ‚ΠΈΡ‚Π΅ Π²Π»Π΅Π·ΠΎΠ²ΠΈ Π½Π° Ρ‡ΠΈΠΏΠΎΡ‚ сС користат Π·Π° ΡΠΊΠ°Π»ΠΈΡ€Π°ΡšΠ΅ Π½Π° Ρ†Π΅Π»ΠΈΠΎΡ‚ дизајн. Овој Ρ‡ΠΈΠΏ Π½ΠΈ Ρ‚Ρ€Π΅Π±Π° Π½Π΅ само Π·Π° Π΄Π° Π³ΠΎ Π½Π°ΠΌΠ°Π»ΠΈΠΌΠ΅ Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° Π·Π°Ρ„Π°Ρ‚Π΅Π½ΠΈ ΠΏΠΈΠ½ΠΎΠ²ΠΈ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΎΡ‚, Ρ‚ΡƒΠΊΡƒ ΠΈ Π·Π° бСзбСдност - Π·Π° ΡΠ»ΡƒΡ‡Π°Ρ˜Π½ΠΎ Π΄Π° Π½Π΅ Π²ΠΊΠ»ΡƒΡ‡ΠΈΠΌΠ΅ повСќС LED Π΄ΠΈΠΎΠ΄ΠΈ ΠΎΡ‚ΠΊΠΎΠ»ΠΊΡƒ ΡˆΡ‚ΠΎ Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π΄Π° Π½Π΅ Π³ΠΎ Π·Π°ΠΏΠ°Π»ΠΈΠΌΠ΅ MK. Π§ΠΈΠΏΠΎΡ‚ Ρ‡ΠΈΠ½ΠΈ Π΅Π΄Π΅Π½ Π΄Π΅Π½Π°Ρ€ ΠΈ сСкогаш Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС Ρ‡ΡƒΠ²Π° Π²ΠΎ Π²Π°ΡˆΠΈΠΎΡ‚ домашСн ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚ со Π»Π΅ΠΊΠΎΠ²ΠΈ.

ΠΠ°ΡˆΠΈΠΎΡ‚ CD74HC238 ќС Π±ΠΈΠ΄Π΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π΅Π½ Π·Π° Π½Π°ΠΏΠΎΡ˜ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π½Π°ΠΏΠΎΠ½ Π΄ΠΎ Π°Π½ΠΎΠ΄Π°Ρ‚Π° Π½Π° саканата Π›Π•Π . Π’ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΏΡ€Π°Π²Π½ΠΎ мултиплСкс, Ρ‚ΠΎΡ˜ Π±ΠΈ снабдувал Π½Π°ΠΏΠΎΠ½ Π΄ΠΎ столбот ΠΏΡ€Π΅ΠΊΡƒ P-MOSFET, Π½ΠΎ Π²ΠΎ ΠΎΠ²Π°Π° Π΄Π΅ΠΌΠΎ Ρ‚ΠΎΠ° Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ, бидСјќи ΠΏΠΎΠ²Π»Π΅ΠΊΡƒΠ²Π° 20 mA, спорСд апсолутни максимални ΠΎΡ†Π΅Π½ΠΊΠΈ Π²ΠΎ листот со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. Од Лист со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ CD74HC238 Π½ΠΈ Ρ‚Ρ€Π΅Π±Π°Π°Ρ‚ ΠΏΠΈΠ½Π°ΡƒΡ‚ΠΈ ΠΈ овој лист Π·Π° ΠΈΠ·ΠΌΠ°ΠΌΠΈ:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
H = високонапонско Π½ΠΈΠ²ΠΎ, L = ниско напонско Π½ΠΈΠ²ΠΎ, X – нСмај гајлС

НиС Π³ΠΈ ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΠΌΠ΅ E2 ΠΈ E1 со Π·Π΅ΠΌΡ˜Π°Ρ‚Π°, E3, A0, A1 ΠΈ A3 со ΠΏΠΈΠ½ΠΎΠ²ΠΈΡ‚Π΅ PD5, PC3, PC4 ΠΈ PC5 Π½Π° STM8. Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ Π³ΠΎΡ€Π½Π°Ρ‚Π° Ρ‚Π°Π±Π΅Π»Π° содрТи ΠΈ ниски ΠΈ високи Π½ΠΈΠ²ΠΎΠ°, Π½ΠΈΠ΅ Π³ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ ΠΎΠ²ΠΈΠ΅ ΠΏΠΈΠ½ΠΎΠ²ΠΈ ΠΊΠ°ΠΊΠΎ ΠΏΠΈΠ½ΠΎΠ²ΠΈ Π·Π° ΠΏΡ€ΠΈΡ‚ΠΈΡΠΊΠ°ΡšΠ΅.

PWM

PWM Π½Π° Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ Π½Π° ист Π½Π°Ρ‡ΠΈΠ½ ΠΊΠ°ΠΊΠΎ ΠΈ Π²ΠΎ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½Π°Ρ‚Π° ΠΏΡ€ΠΈΠΊΠ°Π·Π½Π°, со Π΄Π²Π΅ Ρ€Π°Π·Π»ΠΈΠΊΠΈ:

ΠŸΡ€Π²ΠΎ, Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π³ΠΎ Π²ΠΊΠ»ΡƒΡ‡ΠΈΠΌΠ΅ ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΎΡ‚ ΠΠΆΡƒΡ€ΠΈΡ€Π°Ρ˜Ρ‚Π΅ Π³ΠΎ настанот (UEV) кој ќС ΠΏΠΎΠ²ΠΈΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° ΡˆΡ‚ΠΎ ја Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π° Π°ΠΊΡ‚ΠΈΠ²Π½Π°Ρ‚Π° LED Π΄ΠΈΠΎΠ΄Π°. Ова сС ΠΏΡ€Π°Π²ΠΈ со ΠΏΡ€ΠΎΠΌΠ΅Π½Π° Π½Π° Π±ΠΈΡ‚ΠΎΡ‚ ΠΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ ОвозмоТи Π²ΠΎ рСгистар со ΠΊΠ°ΠΆΡƒΠ²Π°Ρ‡ΠΊΠΎ ΠΈΠΌΠ΅

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
РСгистар Π·Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°ΡšΠ΅ ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ

#define TIM2_IER   *(volatile uint8_t *)0x005303

//enable interrupt
TIM2_IER = 1;

Π’Ρ‚ΠΎΡ€Π°Ρ‚Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° Π΅ ΠΏΠΎΠ²Ρ€Π·Π°Π½Π° со Ρ„Π΅Π½ΠΎΠΌΠ΅Π½ΠΎΡ‚ Π½Π° ΠΌΡƒΠ»Ρ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΈΡ€Π°ΡšΠ΅, ΠΊΠ°ΠΊΠΎ Π½Π° ΠΏΡ€ ΠΈΠΌΠ°Π³ΠΈΠ½Π°Ρ€Π½ΠΈΡ‚Π΅ ΠΎΠ±Π»ΠΈΡ†ΠΈ – паразитски сјај Π½Π° Π΄ΠΈΠΎΠ΄ΠΈ. Π’ΠΎ Π½Π°ΡˆΠΈΠΎΡ‚ ΡΠ»ΡƒΡ‡Π°Ρ˜, ΠΌΠΎΠΆΠ΅ Π΄Π° сС појави ΠΏΠΎΡ€Π°Π΄ΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ‚ ΡˆΡ‚ΠΎ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΎΡ‚, ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΡƒΠ²Π°Ρ˜ΡœΠΈ ΠΏΡ€Π΅ΠΊΠΈΠ½ Π½Π° UEV, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΡƒΠ²Π° Π΄Π° ΡˆΡ‚ΠΈΠΊΠ»ΠΈΡ€Π°, Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°Ρ‡ΠΎΡ‚ со ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π΅ΠΌΠ° Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° ја ΠΏΡ€Π΅Ρ„Ρ€Π»ΠΈ Π›Π•Π  ΠΏΡ€Π΅Π΄ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΎΡ‚ Π΄Π° ΠΏΠΎΡ‡Π½Π΅ Π΄Π° ΠΏΠΈΡˆΡƒΠ²Π° Π½Π΅ΡˆΡ‚ΠΎ Π½Π° ΠΏΠΈΠ½ΠΎΠ²ΠΈΡ‚Π΅. Π—Π° Π΄Π° сС Π±ΠΎΡ€ΠΈΡ‚Π΅ со ΠΎΠ²Π°, ќС Ρ‚Ρ€Π΅Π±Π° Π΄Π° ја ΠΏΡ€Π΅Π²Ρ€Ρ‚ΠΈΡ‚Π΅ Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° (0 = максимална освСтлСност, 255 = Π½ΠΈΡˆΡ‚ΠΎ Π½Π΅ свСти) ΠΈ Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅Ρ‚Π΅ СкстрСмни врСдности Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΎΡ‚ циклус. ОниС. ΠΏΠΎΠ³Ρ€ΠΈΠΆΠ΅Ρ‚Π΅ сС ΠΏΠΎ UEV LED Π΄ΠΈΠΎΠ΄ΠΈΡ‚Π΅ цСлосно Π΄Π° сС изгаснат Π·Π° Π΅Π΄Π΅Π½ циклус PWM.

ΠŸΡ€ΠΎΠΌΠ΅Π½Π° Π½Π° ΠΏΠΎΠ»Π°Ρ€ΠΈΡ‚Π΅Ρ‚:

//set polarity 
    TIM2_CCER1 |= (CC1P | CC2P);
    TIM2_CCER2 |= CC3P;

Π˜Π·Π±Π΅Π³Π½ΡƒΠ²Π°Ρ˜Ρ‚Π΅ ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° r, g ΠΈ b Π½Π° 255 ΠΈ Π½Π΅ Π·Π°Π±ΠΎΡ€Π°Π²Π°Ρ˜Ρ‚Π΅ Π΄Π° Π³ΠΈ ΠΏΡ€Π΅Π²Ρ€Ρ‚ΠΈΡ‚Π΅ ΠΊΠΎΠ³Π° Π³ΠΈ користитС.

ΠŸΡ€Π΅ΠΊΠΈΠ½ΡƒΠ²Π°

Π‘ΡƒΡˆΡ‚ΠΈΠ½Π°Ρ‚Π° Π½Π° ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΎΡ‚ Π΅ Π΄Π΅ΠΊΠ° ΠΏΠΎΠ΄ ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΈ околности Ρ‡ΠΈΠΏΠΎΡ‚ прСстанува Π΄Π° ја ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π° Π³Π»Π°Π²Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° ΠΈ ΠΏΠΎΠ²ΠΈΠΊΡƒΠ²Π° нСкоја Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°. ΠŸΡ€Π΅ΠΊΠΈΠ½ΠΈΡ‚Π΅ сС Ρ˜Π°Π²ΡƒΠ²Π°Π°Ρ‚ ΠΏΠΎΡ€Π°Π΄ΠΈ Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½ΠΈ ΠΈΠ»ΠΈ Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½ΠΈ влијанија, Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Ρ˜ΡœΠΈ Π³ΠΎ ΠΈ Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΎΡ‚.

Кога ΠΏΡ€Π²ΠΏΠ°Ρ‚ создадовмС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π²ΠΎ ST Visual Develop, ΠΏΠΎΠΊΡ€Π°Ρ˜ main.c Π΄ΠΎΠ±ΠΈΠ²ΠΌΠ΅ ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ† со мистСриозна Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° stm8_interrupt_vector.c, автоматски Π²ΠΊΠ»ΡƒΡ‡Π΅Π½ Π²ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚. Π’ΠΎ ΠΎΠ²Π°Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° Π΅ Π΄ΠΎΠ΄Π΅Π»Π΅Π½Π° Π½Π° сСкој ΠΏΡ€Π΅ΠΊΠΈΠ½ NonHandledInterrupt. Π’Ρ€Π΅Π±Π° Π΄Π° ја ΠΏΠΎΠ²Ρ€Π·Π΅ΠΌΠ΅ Π½Π°ΡˆΠ°Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° Π·Π° саканиот ΠΏΡ€Π΅ΠΊΠΈΠ½.

Листот со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΈΠΌΠ° Ρ‚Π°Π±Π΅Π»Π° со Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈ Π½Π° ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ, ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ Π³ΠΈ Π½Π°ΠΎΡ“Π°ΠΌΠ΅ ΠΎΠ½ΠΈΠ΅ ΡˆΡ‚ΠΎ Π½ΠΈ сС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ:

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8
13 ΠΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ΅/ΠΏΡ€Π΅Π»Π΅Π²Π°ΡšΠ΅ Π½Π° TIM2
14 БнимањС/ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° TIM2

Π’Ρ€Π΅Π±Π° Π΄Π° ја смСнимС Π›Π•Π  Π½Π° UEV, ΠΏΠ° Π½ΠΈ Ρ‚Ρ€Π΅Π±Π° ΠΏΡ€Π΅ΠΊΠΈΠ½ #13.

Π‘ΠΏΠΎΡ€Π΅Π΄ Ρ‚ΠΎΠ°, ΠΏΡ€Π²ΠΎ, Π²ΠΎ досиСто stm8_interrupt_vector.c смСнСтС Π³ΠΎ стандардното ΠΈΠΌΠ΅ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π½Π° Π·Π° ΠΏΡ€Π΅ΠΊΠΈΠ½ Π±Ρ€. 13 (IRQ13) Π²ΠΎ своС:

{0x82, TIM2_Overflow}, /* irq13 */

Π’Ρ‚ΠΎΡ€ΠΎ, ќС Ρ‚Ρ€Π΅Π±Π° Π΄Π° создадСмС Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° main.h со слСднава содрТина:

#ifndef __MAIN_H
#define __MAIN_H

@far @interrupt void TIM2_Overflow (void);
#endif

И ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ја ΠΎΠ²Π°Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° Π²ΠΎ Π²Π°ΡˆΠΈΠΎΡ‚ main.c:

@far @interrupt void TIM2_Overflow (void)
{
    PD_ODR &= ~(1<<5); // Π²Ρ‹Ρ€ΡƒΠ±Π°Π΅ΠΌ Π΄Π΅ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€
    PC_ODR = (cnt<<3); // записываСм Π² Π΄Π΅ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
    PD_ODR |= (1<<5); // Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π΄Π΅ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€

    TIM2_SR1 = 0; // сбрасываСм Ρ„Π»Π°Π³ Update Interrupt Pending

    cnt++; 
    cnt &= 7; // Π΄Π²ΠΈΠ³Π°Π΅ΠΌ счСтчик LED

    TIM2_CCR1L = ~colors[cnt][0]; // ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π² Π±ΡƒΡ„Π΅Ρ€ ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ значСния
    TIM2_CCR2L = ~colors[cnt][1]; // для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π° ШИМ
    TIM2_CCR3L = ~colors[cnt][2]; // 

    return;
}

ΠžΡΡ‚Π°Π½ΡƒΠ²Π° само Π΄Π° сС ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ°Ρ‚ ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ. Ова Π΅ Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΎ со помош Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° асСмблСр rim - ќС ΠΌΠΎΡ€Π° Π΄Π° Π³ΠΎ Π±Π°Ρ€Π°Ρ‚Π΅ ΠŸΡ€ΠΈΡ€Π°Ρ‡Π½ΠΈΠΊ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°ΡšΠ΅:

//enable interrupts
_asm("rim");

Π”Ρ€ΡƒΠ³Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° асСмблСр Π΅ sim – Π³ΠΈ исклучува ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈΡ‚Π΅. Π’ΠΈΠ΅ ΠΌΠΎΡ€Π° Π΄Π° сС исклучат Π΄ΠΎΠ΄Π΅ΠΊΠ° сС Π·Π°ΠΏΠΈΡˆΡƒΠ²Π°Π°Ρ‚ Π½ΠΎΠ²ΠΈ врСдности Π²ΠΎ β€žΠ²ΠΈΠ΄Π΅ΠΎ-ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π°β€œ, Π·Π° ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Π½ Π²ΠΎ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΄Π° Π½Π΅ ја расипС Π½ΠΈΠ·Π°Ρ‚Π°.

Π‘ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΈ - Π½Π° GitHub.

Π§ΠΈΡ‚Π°ΡšΠ΅ Π½Π° листови со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ 2: SPI Π½Π° STM32; PWM, Ρ‚Π°Ρ˜ΠΌΠ΅Ρ€ΠΈ ​​и ΠΏΡ€Π΅ΠΊΠΈΠ½ΠΈ Π½Π° STM8

Ако Π±Π°Ρ€Π΅ΠΌ нСкој ја смСта ΠΎΠ²Π°Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° корисна, Ρ‚ΠΎΠ³Π°Ρˆ Π½Π΅ ја напишав Π·Π°Π»ΡƒΠ΄Π½ΠΎ. ЌС ΠΌΠΈ Π±ΠΈΠ΄Π΅ Π΄Ρ€Π°Π³ΠΎ Π΄Π° Π΄ΠΎΠ±ΠΈΠ²Π°ΠΌ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈ ΠΈ забСлСшки, ќС сС ΠΎΠ±ΠΈΠ΄Π°ΠΌ Π΄Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π°ΠΌ Π½Π° сС.

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€