рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ

╨Т рдкрд╣рд┐рд▓реЛ рднрд╛рдЧ рдореИрд▓реЗ рдЕрд░реНрдбрд┐рдиреЛ рдкреНрдпрд╛рдиреНрдЯрдмрд╛рдЯ рд╣реБрд░реНрдХреЗрдХрд╛ рд╢реМрдХ рдЗрд▓реЗрдХреНрдЯреНрд░реЛрдирд┐рдХреНрд╕ рдЗрдиреНрдЬрд┐рдирд┐рдпрд░рд╣рд░реВрд▓рд╛рдИ рдХрд╕рд░реА рд░ рдХрд┐рди рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдорд╛рдЗрдХреНрд░реЛрдХрдиреНрдЯреНрд░реЛрд▓рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдбрд╛рдЯрд╛рд╢реАрдЯ рд░ рдЕрдиреНрдп рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рдкрдвреНрдиреЗ рднрдиреЗрд░ рдмрддрд╛рдЙрди рдЦреЛрдЬреЗред рдкрд╛рда рдареВрд▓реЛ рднрдпреЛ, рддреНрдпрд╕реИрд▓реЗ рдореИрд▓реЗ рдЫреБрдЯреНрдЯреИ рд▓реЗрдЦрдорд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рджреЗрдЦрд╛рдЙрдиреЗ рд╡рд╛рдЪрд╛ рдЧрд░реЗрдВред рдЦреИрд░, рдЙрд╕рд▓реЗ рдЖрдлреВрд▓рд╛рдИ рджреВрдз рдЪреНрдпрд╛рдЙ рднрдиреНрдпреЛ ...

рдЖрдЬ рдо рддрдкрд╛рдИрд▓рд╛рдИ рджреЗрдЦрд╛рдЙрдиреЗрдЫреБ рдХрд┐ рдХрд╕рд░реА рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдзреЗрд░реИ рд╕рд░рд▓, рддрд░ рдзреЗрд░реИ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рдЫ, STM32 (рдмреНрд▓реВ рдкрд┐рд▓) рд░ STM8 рдирд┐рдпрдиреНрддреНрд░рдХрд╣рд░реВрдорд╛ рдХрд╛рд░реНрдпрд╣рд░реВред рд╕рдмреИ рдбреЗрдореЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВ рдореЗрд░реЛ рдордирдкрд░реНрдиреЗ рдПрд▓рдИрдбреАрд╣рд░реВрдорд╛ рд╕рдорд░реНрдкрд┐рдд рдЫрдиреН, рд╣рд╛рдореА рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдареВрд▓реЛ рдорд╛рддреНрд░рд╛рдорд╛ рдкреНрд░рдХрд╛рд╢ рдЧрд░реНрдиреЗрдЫреМрдВ, рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореАрд▓реЗ рд╕рдмреИ рдкреНрд░рдХрд╛рд░рдХрд╛ рд░реЛрдЪрдХ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫред

рдкрд╛рда рдлреЗрд░рд┐ рдареВрд▓реЛ рднрдпреЛ, рддреНрдпрд╕реИрд▓реЗ рд╕реБрд╡рд┐рдзрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдо рд╕рд╛рдордЧреНрд░реА рдмрдирд╛рдЙрдБрджреИрдЫреБ:

STM32 рдирд┐рд▓реЛ рдЪрдХреНрдХреА: DM16 рдЪрд╛рд▓рдХ рд╕рдВрдЧ 634 LEDs
STM8: рдЫ PWM рдкрд┐рдирд╣рд░реВ рд╕реЗрдЯрдЕрдк рдЧрд░реНрджреИ
STM8: 8 RGB LEDs рддреАрди рдкрд┐рдирдорд╛, рдЕрд╡рд░реЛрдзрд╣рд░реВ

рдЕрд╕реНрд╡реАрдХрд░рдг: рдо рдИрдиреНрдЬрд┐рдирд┐рдпрд░ рд╣реЛрдЗрди, рдо рдЗрд▓реЗрдХреНрдЯреНрд░реЛрдирд┐рдХреНрд╕рдорд╛ рдЧрд╣рд┐рд░реЛ рдЬреНрдЮрд╛рди рднрдПрдХреЛ рдирд╛рдЯрдХ рдЧрд░реНрджрд┐рди, рд▓реЗрдЦ рдо рдЬрд╕реНрддреИ рдПрдореЗрдЪреНрдпреЛрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╣реЛред рд╡рд╛рд╕реНрддрд╡рдорд╛, рдо рджреБрдИ рд╡рд░реНрд╖ рдкрд╣рд┐рд▓реЗ рдЖрдлреВрд▓рд╛рдИ рд▓рдХреНрд╖рд┐рдд рджрд░реНрд╢рдХ рдорд╛рдиреНрдЫреБред рдпрджрд┐ рдХрд╕реИрд▓реЗ рдорд▓рд╛рдИ рднрдиреЗрдХреЛ рдерд┐рдпреЛ рднрдиреЗ рдЕрдкрд░рд┐рдЪрд┐рдд рдЪрд┐рдкрдорд╛ рднрдПрдХреЛ рдбрд╛рдЯрд╛рд╢реАрдЯрд╣рд░реВ рдкрдвреНрди рдбрд░рд▓рд╛рдЧреНрджреЛ рдерд┐рдПрди, рдореИрд▓реЗ рдЗрдиреНрдЯрд░рдиреЗрдЯрдорд╛ рдХреЛрдбрдХрд╛ рдХреЗрд╣реА рдЯреБрдХреНрд░рд╛рд╣рд░реВ рдЦреЛрдЬреНрди рд░ рдХреИрдВрдЪреА рд░ рдЯрд╛рдБрд╕рд┐рдПрдХреЛ рдЯреЗрдкрдХреЛ рд╕рд╛рде рдмреИрд╕рд╛рдЦреА рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдЧрд░реНрди рдзреЗрд░реИ рд╕рдордп рдмрд┐рддрд╛рдЙрдиреЗ рдерд┐рдПрдиред

рдпрд╕ рд▓реЗрдЦрдХреЛ рдлреЛрдХрд╕ рдбрд╛рдЯрд╛рд╢реАрдЯрд╣рд░реВрдорд╛ рдЫ, рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВ рд╣реЛрдЗрди, рддреНрдпрд╕реИрд▓реЗ рдХреЛрдб рдзреЗрд░реИ рд╕рдлрд╛ рд░ рдкреНрд░рд╛рдпрдГ рдХреНрд░реНрдпрд╛рдореНрдк рдирд╣реБрди рд╕рдХреНрдЫред рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВ рдЖрдлреИрдВрдорд╛ рдзреЗрд░реИ рд╕рд░рд▓ рдЫрдиреН, рдпрджреНрдпрдкрд┐ рдирдпрд╛рдБ рдЪрд┐рдкрд╕рдБрдЧ рдкрд╣рд┐рд▓реЛ рдкрд░рд┐рдЪрд┐рддрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреБрдХреНрддред

рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рдореЗрд░реЛ рд▓реЗрдЦрд▓реЗ рд╢реМрдХрдорд╛ рд╡рд┐рд╕рд░реНрдЬрдирдХреЛ рд╕рдорд╛рди рдЪрд░рдгрдорд╛ рдХрд╕реИрд▓рд╛рдИ рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫред

рдПрд╕рдЯреАрдПрдо 32режреж

DM16 рд░ SPI рд╕рдВрдЧ 634 LEDs

рдмреНрд▓реВ рдкрд┐рд▓ (STM32F103C8T6) рд░ DM634 LED рдбреНрд░рд╛рдЗрднрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдПрдЙрдЯрд╛ рд╕рд╛рдиреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ред рдбрд╛рдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рд╣рд╛рдореА рдбреНрд░рд╛рдЗрднрд░, STM IO рдкреЛрд░реНрдЯрд╣рд░реВ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреЗрдЫреМрдВ рд░ SPI рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗрдЫреМрдВред

DM634

16 16-рдмрд┐рдЯ PWM рдЖрдЙрдЯрдкреБрдЯрд╣рд░реВрдХреЛ рд╕рд╛рде рддрд╛рдЗрд╡рд╛рди рдЪрд┐рдк, рдЪреЗрдирд╣рд░реВрдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдХрдо-рдЕрдиреНрдд 12-рдмрд┐рдЯ рдореЛрдбреЗрд▓ рдШрд░реЗрд▓реБ рдкрд░рд┐рдпреЛрдЬрдирд╛рдмрд╛рдЯ рдЪрд┐рдирд┐рдиреНрдЫ рд▓рд╛рдЗрдЯрдкреНрдпрд╛рдХред рдПрдХ рдкрдЯрдХ, DM63x рд░ рдкреНрд░рд╕рд┐рджреНрдз TLC5940 рдмреАрдЪрдХреЛ рдЫрдиреМрдЯ рдЧрд░реНрджрд╛, рдореИрд▓реЗ рдзреЗрд░реИ рдХрд╛рд░рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ DM рд░реЛрдЬреЗрдВ: 1) Aliexpress рдорд╛ TLC рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдкрдорд╛ рдирдХреНрдХрд▓реА рд╣реЛ, рддрд░ рдпреЛ рд╣реЛрдЗрди; 2) DM рд╕рдБрдЧ рдпрд╕рдХреЛ рдЖрдлреНрдиреИ рдлреНрд░рд┐рдХреНрд╡реЗрдиреНрд╕реА рдЬреЗрдирд░реЗрдЯрд░рдХреЛ рд╕рд╛рде рдПрдХ рд╕реНрд╡рд╛рдпрддреНрдд PWM рдЫ; 3) рдЕрд▓реАрдмрд╛рдЯ рдкрд╛рд░реНрд╕рд▓рдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреБрдХреЛ рд╕рдЯреНрдЯрд╛ рдорд╕реНрдХреЛрдорд╛ рд╕рд╕реНрддреЛрдорд╛ рдХрд┐рдиреНрди рд╕рдХрд┐рдиреНрдЫред рд░, рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рддрдпрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдХреЛ рд╕рдЯреНрдЯрд╛ рдЪрд┐рдк рдЖрдлреИрд▓рд╛рдИ рдХрд╕рд░реА рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдЬрд╛рдиреНрди рд░реЛрдЪрдХ рдерд┐рдпреЛред рдЪрд┐рдкрд╣рд░реВ рдЕрдм рдореБрдЦреНрдп рд░реВрдкрдорд╛ SSOP24 рдкреНрдпрд╛рдХреЗрдЬрдорд╛ рдкреНрд░рд╕реНрддреБрдд рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреН; рддрд┐рдиреАрд╣рд░реВ рдПрдбрд╛рдкреНрдЯрд░рдорд╛ рд╕реЛрд▓реНрдбрд░ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдЫрдиреНред

рдХрд┐рдирдХрд┐ рдирд┐рд░реНрдорд╛рддрд╛ рддрд╛рдЗрд╡рд╛рди рд╣реЛ, рдбрд╛рдЯрд╛ рдкрд╛рдирд╛ рдЪрд┐рдк рдЪрд┐рдирд┐рдпрд╛рдБ рдЕрдВрдЧреНрд░реЗрдЬреАрдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ, рдЬрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рд░рдорд╛рдЗрд▓реЛ рд╣реБрдиреЗрдЫред рдкрд╣рд┐рд▓реЗ рд╣рд╛рдореА рдкрд┐рдирдЖрдЙрдЯ (рдкрд┐рди рдЬрдбрд╛рди) рдХреБрди рдЦреБрдЯреНрдЯрд╛рд▓рд╛рдИ рдХреЗрд╕рдБрдЧ рдЬреЛрдбреНрдиреЗ рднрдиреЗрд░ рдмреБрдЭреНрди рд░ рдкрд┐рдирд╣рд░реВрдХреЛ рд╡рд┐рд╡рд░рдг (рдкрд┐рди рд╡рд┐рд╡рд░рдг)ред резрем рдкрд┐рди:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
DC рд╕рд┐рдВрдХ рд╕реНрд░реЛрддрд╣рд░реВ (рдЦреБрд▓рд╛ рдирд╛рд▓реА)

рд╕рд┐рдВрдХ / рдУрдкрди-рдбреНрд░реЗрди рдЖрдЙрдЯрдкреБрдЯ - рдирд╛рд▓реА; рдкреНрд░рд╡рд╛рд╣ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рд╕реНрд░реЛрдд; рдЖрдЙрдЯрдкреБрдЯ рд╕рдХреНрд░рд┐рдп рдЕрд╡рд╕реНрдерд╛рдорд╛ рдЬрдорд┐рдирдорд╛ рдЬреЛрдбрд┐рдПрдХреЛ рдЫ - рдПрд▓рдИрдбреАрд╣рд░реВ рдХреНрдпрд╛рдереЛрдбрд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдбреНрд░рд╛рдЗрднрд░рд╕рдБрдЧ рдЬреЛрдбрд┐рдПрдХрд╛ рдЫрдиреНред рд╡рд┐рджреНрдпреБрддреАрдп рд░реВрдкрдорд╛, рдпреЛ, рдЕрд╡рд╢реНрдп рдкрдирд┐, "рдЦреБрд▓рд╛ рдирд╛рд▓реА" рд╣реЛрдЗрди (рдЦреБрд▓рд╛ рдирд╛рд▓реА), рддрд░ рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВрдорд╛ рдбреНрд░реЗрди рдореЛрдбрдорд╛ рдкрд┐рдирдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ рдкрджрдирд╛рдо рдкреНрд░рд╛рдпрдГ рдкрд╛рдЗрдиреНрдЫред

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
рдЖрдЙрдЯрдкреБрдЯ рд╣рд╛рд▓рдХреЛ рдорд╛рди рд╕реЗрдЯ рдЧрд░реНрди REXT рд░ GND рдмреАрдЪрдХреЛ рдмрд╛рд╣реНрдп рдкреНрд░рддрд┐рд░реЛрдзрдХрд╣рд░реВ

REXT рдкрд┐рди рд░ рдЧреНрд░рд╛рдЙрдиреНрдбрдХреЛ рдмреАрдЪрдорд╛ рдПрдЙрдЯрд╛ рд╕рдиреНрджрд░реНрдн рдкреНрд░рддрд┐рд░реЛрдзрдХ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рд▓реЗ рдЖрдЙрдЯрдкреБрдЯрд╣рд░реВрдХреЛ рдЖрдиреНрддрд░рд┐рдХ рдкреНрд░рддрд┐рд░реЛрдзрд▓рд╛рдИ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрджрдЫ, рдбрд╛рдЯрд╛рд╢реАрдЯрдХреЛ рдкреГрд╖реНрда 9 рдорд╛ рдЧреНрд░рд╛рдл рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред DM634 рдорд╛, рдпреЛ рдкреНрд░рддрд┐рд░реЛрдз рдкрдирд┐ рд╕рдлреНрдЯрд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рд╕рдордЧреНрд░ рдЪрдордХ рд╕реЗрдЯ рдЧрд░реНрджреИ (рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рдЪрдордХ); рдо рдпрд╕ рд▓реЗрдЦрдорд╛ рд╡рд┐рд╡рд░рдгрд╣рд░реВрдорд╛ рдЬрд╛рдиреЗ рдЫреИрди, рдо рдпрд╣рд╛рдБ 2.2 - 3 kOhm рдкреНрд░рддрд┐рд░реЛрдзрдХ рд░рд╛рдЦреНрдиреЗрдЫреБред

рдЪрд┐рдк рдХрд╕рд░реА рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐, рдЙрдкрдХрд░рдг рдЗрдиреНрдЯрд░рдлреЗрд╕рдХреЛ рд╡рд┐рд╡рд░рдг рд╣реЗрд░реМрдВ:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ

рд╣реЛ, рдпрд╣рд╛рдБ рдЫ, рдЪрд┐рдирд┐рдпрд╛рдБ рдЕрдВрдЧреНрд░реЗрдЬреА рдпрд╕рдХреЛ рд╕рдмреИ рдорд╣рд┐рдорд╛рдорд╛ред рдпреЛ рдЕрдиреБрд╡рд╛рдж рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдЫ, рдпрджрд┐ рддрдкрд╛рдИрдВ рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ рдпрд╕рд▓рд╛рдИ рдмреБрдЭреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рддрд░ рддреНрдпрд╣рд╛рдБ рдЕрд░реНрдХреЛ рддрд░рд┐рдХрд╛ рдЫ - рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рдХрд╕рд░реА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕рдорд╛рди TLC5940 рдЬрдбрд╛рди рдбрд╛рдЯрд╛рд╢реАрдЯ рдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫ:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
... рдЙрдкрдХрд░рдгрдорд╛ рдбрд╛рдЯрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрди рдХреЗрд╡рд▓ рддреАрди рдкрд┐рди рдЖрд╡рд╢реНрдпрдХ рдЫред SCLK рд╕рд┐рдЧреНрдирд▓рдХреЛ рдмрдвреНрджреЛ рдХрд┐рдирд╛рд░рд╛рд▓реЗ рдбреЗрдЯрд╛рд▓рд╛рдИ SIN рдкрд┐рдирдмрд╛рдЯ рдЖрдиреНрддрд░рд┐рдХ рджрд░реНрддрд╛рдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрдЫред рд╕рдмреИ рдбрд╛рдЯрд╛ рд▓реЛрдб рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐, рдЫреЛрдЯреЛ рдЙрдЪреНрдЪ XLAT рд╕рдВрдХреЗрддрд▓реЗ рдХреНрд░рдорд╢рдГ рдЯреНрд░рд╛рдиреНрд╕рдлрд░ рдЧрд░рд┐рдПрдХреЛ рдбрд╛рдЯрд╛рд▓рд╛рдИ рдЖрдиреНрддрд░рд┐рдХ рджрд░реНрддрд╛рд╣рд░реВрдорд╛ рд▓реИрдЪ рдЧрд░реНрдЫред рдЖрдиреНрддрд░рд┐рдХ рджрд░реНрддрд╛рд╣рд░реВ XLAT рд╕рдВрдХреЗрдд рд╕реНрддрд░ рджреНрд╡рд╛рд░рд╛ рдЯреНрд░рд┐рдЧрд░ рдЧреЗрдЯрд╣рд░реВ рд╣реБрдиреНред рд╕рдмреИ рдбрд╛рдЯрд╛ рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯ рдкрд╣рд┐рд▓реЗ рдкреНрд░рд╕рд╛рд░рдг рдЧрд░рд┐рдиреНрдЫред

Latch - рдХреБрдВрдбреА / рдХреБрдВрдбреА / рддрд╛рд▓рд╛ред
рдмрдвреНрджреЛ рдХрд┐рдирд╛рд░рд╛ - рдкрд▓реНрд╕ рдХреЛ рдЕрдЧреНрд░рдгреА рдХрд┐рдирд╛рд░рд╛
MSB рдкрд╣рд┐рд▓реЗ - рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг (рдмрд╛рдпрд╛рдБ) рдмрд┐рдЯ рдЕрдЧрд╛рдбрд┐ред
рдбреЗрдЯрд╛ рдШрдбреА рдЧрд░реНрди - рдХреНрд░рдорд┐рдХ рд░реВрдкрдорд╛ рдбрд╛рдЯрд╛ рдкреНрд░рд╕рд╛рд░рдг (рдмрд┐рдЯ рджреНрд╡рд╛рд░рд╛ рдмрд┐рдЯ)ред

рд╢рдмреНрдж latch рдкреНрд░рд╛рдпрдГ рдЪрд┐рдкреНрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдХрд╛рдЧрдЬрд╛рддрдорд╛ рдкрд╛рдЗрдиреНрдЫ рд░ рд╡рд┐рднрд┐рдиреНрди рддрд░рд┐рдХрд╛рдорд╛ рдЕрдиреБрд╡рд╛рдж рдЧрд░рд┐рдПрдХреЛ рдЫ, рддреНрдпрд╕реИрд▓реЗ рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдо рдЖрдлреИрд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗрдЫреБ

рдПрдЙрдЯрд╛ рд╕рд╛рдиреЛ рд╢реИрдХреНрд╖рд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдоLED рдЪрд╛рд▓рдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдкрдорд╛ рдПрдХ рд╢рд┐рдлреНрдЯ рджрд░реНрддрд╛ рд╣реЛред "рд╢рд┐рдлреНрдЯ" (shift) рдирд╛рдордорд╛ - рдпрдиреНрддреНрд░ рднрд┐рддреНрд░ рдбрд╛рдЯрд╛рдХреЛ рдмрд┐рдЯрд╡рд╛рдЗрдЬ рдЪрд╛рд▓: рднрд┐рддреНрд░ рдЦрдиреНрдпрд╛рдЗрдПрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдирдпрд╛рдБ рдмрд┐рдЯрд▓реЗ рд╕рдореНрдкреВрд░реНрдг рдЪреЗрдирд▓рд╛рдИ рдЕрдЧрд╛рдбрд┐ рдзрдХреЗрд▓реНрдЫред рдХреЛрд╣реА рдкрдирд┐ рд╢рд┐рдлреНрдЯрдХреЛ рдХреНрд░рдордорд╛ LEDs рдХреЛ рдЕрд░рд╛рдЬрдХ рдЭрд┐рдореНрдХрд╛рдЙрдиреЗ рдЕрд╡рд▓реЛрдХрди рдЧрд░реНрди рдЪрд╛рд╣рдБрджреИрди, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдбрдореНрдкрд░ (latch) рдПрдХ рдкреНрд░рдХрд╛рд░рдХреЛ рдкреНрд░рддрд┐рдХреНрд╖рд╛ рдХреЛрдард╛ рд╣реЛ рдЬрд╣рд╛рдБ рдмрд┐рдЯрд╣рд░реВ рдЗрдЪреНрдЫрд┐рдд рдЕрдиреБрдХреНрд░рдордорд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реБрдиреНрдЫрдиреНред рдЬрдм рд╕рдмреИ рддрдпрд╛рд░ рд╣реБрдиреНрдЫ, рд╢рдЯрд░ рдЦреБрд▓реНрдЫ рд░ рдмрд┐рдЯрд╣рд░реВ рдХрд╛рдордорд╛ рдЬрд╛рдиреНрдЫрдиреН, рдЕрдШрд┐рд▓реНрд▓реЛ рдмреНрдпрд╛рдЪ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдиред рд╢рдмреНрдж latch рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрдХрд┐рдЯрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рдЧрдЬрд╛рддрдорд╛ рд▓рдЧрднрдЧ рд╕рдзреИрдВ рдпрд╕реНрддреЛ рдбрдореНрдкрд░рд▓рд╛рдИ рд╕рдВрдХреЗрдд рдЧрд░реНрджрдЫ, рдЪрд╛рд╣реЗ рдпреЛ рдХреБрди рд╕рдВрдпреЛрдЬрдирдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред

рддреНрдпрд╕реЛрднрдП, DM634 рдорд╛ рдбрд╛рдЯрд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдпрд╕рд░реА рдЧрд░рд┐рдиреНрдЫ: DAI рдЗрдирдкреБрдЯрд▓рд╛рдИ рдЯрд╛рдврд╛рдХреЛ LED рдХреЛ рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯрдХреЛ рдорд╛рдирдорд╛ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН, DCK рдорд╛рдерд┐ рд░ рддрд▓ рддрд╛рдиреНрдиреБрд╣реЛрд╕реН; DAI рдЗрдирдкреБрдЯрд▓рд╛рдИ рдЕрд░реНрдХреЛ рдмрд┐рдЯрдХреЛ рдорд╛рдирдорд╛ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН, DCK рддрд╛рдиреНрдиреБрд╣реЛрд╕реН; рд░ рдпрд╕реНрддреИ рд╕рдмреИ рдмрд┐рдЯрд╣рд░реВ рдкреНрд░рд╕рд╛рд░рдг рдирднрдПрд╕рдореНрдо (рдШрдбреА рднрд┐рддреНрд░), рдЬрд╕ рдкрдЫрд┐ рд╣рд╛рдореА LAT рддрд╛рдиреНрджрдЫреМрдВред рдпреЛ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ (рдмрд┐рдЯ-рдмреИрдВрдЧ), рддрд░ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдкрдорд╛ рддрдпрд╛рд░ рдЧрд░рд┐рдПрдХреЛ SPI рдЗрдиреНрдЯрд░рдлреЗрд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рд░рд╛рдореНрд░реЛ рд╣реБрдиреНрдЫ, рдХрд┐рдирдХрд┐ рдпреЛ рд╣рд╛рдореНрд░реЛ STM32 рдорд╛ рджреБрдИ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐рд╣рд░реВрдорд╛ рдкреНрд░рд╕реНрддреБрдд рдЧрд░рд┐рдПрдХреЛ рдЫред

рдирд┐рд▓реЛ рдЧреЛрд▓реА STM32F103

рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ: STM32 рдирд┐рдпрдиреНрддреНрд░рдХрд╣рд░реВ рдбрд░рд▓рд╛рдЧреНрджреЛ рд▓рд╛рдЧреНрди рд╕рдХреНрдиреЗ рднрдиреНрджрд╛ Atmega328 рднрдиреНрджрд╛ рдзреЗрд░реИ рдЬрдЯрд┐рд▓ рдЫрдиреНред рдпрд╕рдмрд╛рд╣реЗрдХ, рдКрд░реНрдЬрд╛ рдмрдЪрддрдХреЛ рдХрд╛рд░рдгрд▓реЗ рдЧрд░реНрджрд╛, рд▓рдЧрднрдЧ рд╕рдмреИ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгрд╣рд░реВ рд╕реБрд░реБрдорд╛ рдмрдиреНрдж рд╣реБрдиреНрдЫрдиреН, рд░ рдШрдбреАрдХреЛ рдЖрд╡реГрддреНрддрд┐ рдЖрдиреНрддрд░рд┐рдХ рд╕реНрд░реЛрддрдмрд╛рдЯ 8 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рд╣реЛред рд╕реМрднрд╛рдЧреНрдпрд╡рд╢, STM рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд╣рд░реВрд▓реЗ рдХреЛрдб рд▓реЗрдЦреЗ рдЬрд╕рд▓реЗ рдЪрд┐рдкрд▓рд╛рдИ "рдЧрдгрдирд╛ рдЧрд░рд┐рдПрдХреЛ" 72 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬрдорд╛ рд▓реНрдпрд╛рдЙрдБрдЫ, рд░ рдорд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ рд╕рдмреИ IDE рд╣рд░реВрдХрд╛ рд▓реЗрдЦрдХрд╣рд░реВрд▓реЗ рдпрд╕рд▓рд╛рдИ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реЗ, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореАрд▓реЗ рдШрдбреА рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрди (рддрд░ рдпрджрд┐ рддрдкрд╛рдИрдВ рд╕рд╛рдБрдЪреНрдЪреИ рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ рддрдкрд╛рдИрдВ рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ)ред рддрд░ рддрдкрд╛рдИрдВрд▓реЗ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгрд╣рд░реВ рдЦреЛрд▓реНрдиреБ рдкрд░реНрдЫред

рдХрд╛рдЧрдЬрд╛рдд: рдирд┐рд▓реЛ рдЧреЛрд▓реА рд▓реЛрдХрдкреНрд░рд┐рдп STM32F103C8T6 рдЪрд┐рдк рд╕рдВрдЧ рд╕реБрд╕рдЬреНрдЬрд┐рдд рдЫ, рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рджреБрдИ рдЙрдкрдпреЛрдЧреА рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рдЫрдиреН:

рдбрд╛рдЯрд╛рд╢реАрдЯрдорд╛ рд╣рд╛рдореАрд▓рд╛рдИ рд░реБрдЪрд┐ рд╣реБрди рд╕рдХреНрдЫ:

  • рдкрд┐рдирдЖрдЙрдЯрд╣рд░реВ - рдЪрд┐рдк рдкрд┐рдирдЖрдЙрдЯрд╣рд░реВ - рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдмреЛрд░реНрдбрд╣рд░реВ рдЖрдлреИрдВ рдмрдирд╛рдЙрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдЫреМрдВ;
  • рдореЗрдореЛрд░реА рдирдХреНрд╕рд╛ - рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪрд┐рдкрдХреЛ рд▓рд╛рдЧрд┐ рдореЗрдореЛрд░реА рдирдХреНрд╕рд╛ред рд╕рдиреНрджрд░реНрдн рдкреБрд╕реНрддрд┐рдХрд╛рдорд╛ рд╕рдореНрдкреВрд░реНрдг рд░реЗрдЦрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдирдХреНрд╕рд╛ рдЫ, рд░ рдпрд╕рд▓реЗ рд╣рд╛рдореНрд░реЛрд╕рдБрдЧ рдирднрдПрдХрд╛ рджрд░реНрддрд╛рд╣рд░реВ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░реНрджрдЫред
  • рдкрд┐рди рдкрд░рд┐рднрд╛рд╖рд╛ рддрд╛рд▓рд┐рдХрд╛ - рдкрд┐рдирдХреЛ рдореБрдЦреНрдп рд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд╛рд░реНрдпрд╣рд░реВ рд╕реВрдЪреАрдмрджреНрдз рдЧрд░реНрджреИ; "рдиреАрд▓реЛ рдЪрдХреНрдХреА" рдХреЛ рд▓рд╛рдЧреА рддрдкрд╛рдИрд▓реЗ рдЗрдиреНрдЯрд░рдиреЗрдЯрдорд╛ рдкрд┐рди рд░ рддрд┐рдиреАрд╣рд░реВрдХрд╛ рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд╕реВрдЪреАрдХреЛ рд╕рд╛рде рдердк рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЪрд┐рддреНрд░рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рддреНрдпрд╕рдХрд╛рд░рдг, рд╣рд╛рдореА рддреБрд░реБрдиреНрддреИ рдмреНрд▓реВ рдкрд┐рд▓ рдкрд┐рдирдЖрдЙрдЯ рдЧреБрдЧрд▓ рдЧрд░реНрдЫреМрдВ рд░ рдпреЛ рддрд╕реНрд╡реАрд░ рд╣рд╛рддрдорд╛ рд░рд╛рдЦреНрдЫреМрдВ:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
NB: рдЗрдиреНрдЯрд░рдиреЗрдЯрдмрд╛рдЯ рддрд╕реНрд╡реАрд░рдорд╛ рддреНрд░реБрдЯрд┐ рдерд┐рдпреЛ, рдЬреБрди рдЯрд┐рдкреНрдкрдгреАрд╣рд░реВрдорд╛ рдиреЛрдЯ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рддреНрдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдзрдиреНрдпрд╡рд╛рджред рддрд╕реНрд╡рд┐рд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░рд┐рдПрдХреЛ рдЫ, рддрд░ рдпреЛ рдПрдЙрдЯрд╛ рдкрд╛рда рд╣реЛ - рдбрд╛рдЯрд╛рд╢реАрдЯрдмрд╛рдЯ рд╣реЛрдЗрди рдЬрд╛рдирдХрд╛рд░реА рдЬрд╛рдБрдЪ рдЧрд░реНрди рд░рд╛рдореНрд░реЛ рдЫред

рд╣рд╛рдореА рдбрд╛рдЯрд╛рд╢реАрдЯ рд╣рдЯрд╛рдЙрдБрдЫреМрдВ, рд╕рдиреНрджрд░реНрдн рдкреБрд╕реНрддрд┐рдХрд╛ рдЦреЛрд▓реНрдЫреМрдВ, рд░ рдЕрдмрджреЗрдЦрд┐ рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдорд╛рддреНрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВред
рдкреНрд░рдХреНрд░рд┐рдпрд╛: рд╣рд╛рдореА рдорд╛рдирдХ рдЗрдирдкреБрдЯ/рдЖрдЙрдЯрдкреБрдЯрд╕рдБрдЧ рд╕рдореНрдЭреМрддрд╛ рдЧрд░реНрдЫреМрдВ, SPI рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдЫреМрдВ, рдЖрд╡рд╢реНрдпрдХ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгрд╣рд░реВ рдЦреЛрд▓реНрдЫреМрдВред

рдЗрдирдкреБрдЯ рдЖрдЙрдЯрдкреБрдЯ

Atmega328 рдорд╛, I/O рдПрдХрджрдо рд╕рд░рд▓ рд░реВрдкрдорд╛ рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫ, рддреНрдпрд╕реИрд▓реЗ STM32 рд╡рд┐рдХрд▓реНрдкрд╣рд░реВрдХреЛ рдкреНрд░рд╢рд╕реНрддрддрд╛ рднреНрд░рдорд┐рдд рд╣реБрди рд╕рдХреНрдЫред рдЕрдм рд╣рд╛рдореАрд▓рд╛рдИ рдХреЗрд╡рд▓ рдирд┐рд╖реНрдХрд░реНрд╖ рдЪрд╛рд╣рд┐рдиреНрдЫ, рддрд░ рдпреА рдЪрд╛рд░ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдЫрдиреН:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
рдЦреБрд▓рд╛ рдирд╛рд▓реА, рдкреБрд╢-рдкреБрд▓, рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреБрд╢-рдкреБрд▓, рд╡реИрдХрд▓реНрдкрд┐рдХ рдЦреБрд▓рд╛ рдирд╛рд▓реА

"рдкреБрд╕-рдкреБрд╢" (рдкреБрд╢-рдкреБрд▓) Arduino рдмрд╛рдЯ рд╕рд╛рдорд╛рдиреНрдп рдЖрдЙрдЯрдкреБрдЯ рд╣реЛ, рдкрд┐рдирд▓реЗ рдЙрдЪреНрдЪ рд╡рд╛ рдХрдо рдорд╛рди рд▓рд┐рди рд╕рдХреНрдЫред рддрд░ "рдЦреБрд▓рд╛ рдирд╛рд▓реА" рд╕рдВрдЧ рддреНрдпрд╣рд╛рдБ рдЫрдиреН рдХрдард┐рдирд╛рдЗрд╣рд░реВ, рдпрджреНрдпрдкрд┐ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдпрд╣рд╛рдБ рд╕рдмреИ рдХреБрд░рд╛ рд╕рд░рд▓ рдЫ:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
рдЖрдЙрдЯрдкреБрдЯ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди / рдЬрдм рдкреЛрд░реНрдЯрд▓рд╛рдИ рдЖрдЙрдЯрдкреБрдЯрдорд╛ рддреЛрдХрд┐рдПрдХреЛ рдЫ: / рдЖрдЙрдЯрдкреБрдЯ рдмрдлрд░ рд╕рдХреНрд╖рдо рдЧрд░рд┐рдПрдХреЛ рдЫ: / - рдУрдкрди рдбреНрд░реЗрди рдореЛрдб: рдЖрдЙрдЯрдкреБрдЯ рд░реЗрдЬрд┐рд╕реНрдЯрд░рдорд╛ "0" рд▓реЗ N-MOS рд╕рдХреНрд╖рдо рдЧрд░реНрджрдЫ, рдЖрдЙрдЯрдкреБрдЯ рджрд░реНрддрд╛рдорд╛ "1" рд▓реЗ рдкреЛрд░реНрдЯрд▓рд╛рдИ Hi-Z рдореЛрдбрдорд╛ рдЫреЛрдбреНрдЫ ( P-MOS рд╕рдХреНрд░рд┐рдп рдЧрд░рд┐рдПрдХреЛ рдЫреИрди) / - рдкреБрд╢-рдкреБрд▓ рдореЛрдб: рдЖрдЙрдЯрдкреБрдЯ рджрд░реНрддрд╛рдорд╛ "0" рд▓реЗ N-MOS рд╕рдХреНрд░рд┐рдп рдЧрд░реНрджрдЫ, рдЖрдЙрдЯрдкреБрдЯ рджрд░реНрддрд╛рдорд╛ "1" рд▓реЗ P-MOS рд╕рдХреНрд░рд┐рдп рдЧрд░реНрджрдЫред

рдЦреБрд▓рд╛ рдирд╛рд▓реА рдмреАрдЪрдХреЛ рд╕рдмреИ рднрд┐рдиреНрдирддрд╛ (рдЦреБрд▓рд╛ рдирд╛рд▓реА) "рдкреБрд╢-рдкреБрд▓" рдмрд╛рдЯ (рдкреБрд╢-рдкреБрд▓) рдкрд╣рд┐рд▓реЛ рдкрд┐рдирдорд╛ рдЙрдЪреНрдЪ рдЕрд╡рд╕реНрдерд╛ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрди рд╕рдХреНрджреИрди: рдЖрдЙрдЯрдкреБрдЯ рджрд░реНрддрд╛рдорд╛ рдПрдЙрдЯрд╛ рд▓реЗрдЦреНрджрд╛, рдпреЛ рдЙрдЪреНрдЪ рдкреНрд░рддрд┐рд░реЛрдз рдореЛрдбрдорд╛ рдЬрд╛рдиреНрдЫ (рдЙрдЪреНрдЪ рдкреНрд░рддрд┐рдмрд╛рдзрд╛, рд╣рд╛рдп- Z)ред рд╢реВрдиреНрдп рд▓реЗрдЦреНрджрд╛, рдкрд┐рдирд▓реЗ рддрд╛рд░реНрдХрд┐рдХ рд░ рд╡рд┐рджреНрдпреБрддреАрдп рджреБрд╡реИ рдореЛрдбрдорд╛ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реНрдЫред

рд╕рд╛рдорд╛рдиреНрдп рдЖрдЙрдЯрдкреБрдЯ рдореЛрдбрдорд╛, рдкрд┐рдирд▓реЗ рдорд╛рддреНрд░ рдЖрдЙрдЯрдкреБрдЯ рджрд░реНрддрд╛рдХреЛ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рдкреНрд░рд╕рд╛рд░рдг рдЧрд░реНрджрдЫред "рд╡реИрдХрд▓реНрдкрд┐рдХ" рдорд╛ рдпреЛ рд╕рдореНрдмрдиреНрдзрд┐рдд рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгрд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдиреНрддреНрд░рд┐рдд рдЫ (рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН 9.1.4):

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
рдпрджрд┐ рдкреЛрд░реНрдЯ рдмрд┐рдЯ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреНрд░рдХрд╛рд░реНрдп рдкрд┐рдирдХреЛ рд░реВрдкрдорд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗ, рдкрд┐рди рджрд░реНрддрд╛ рдЕрд╕рдХреНрд╖рдо рдкрд╛рд░рд┐рдПрдХреЛ рдЫ рд░ рдкрд┐рди рдкрд░рд┐рдзреАрдп рдкрд┐рдирд╕рдБрдЧ рдЬреЛрдбрд┐рдПрдХреЛ рдЫред

рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдирдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫ рдкрд┐рди рдкрд░рд┐рднрд╛рд╖рд╛ рдбрд╛рдЯрд╛рд╢реАрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░рд┐рдПрдХреЛ рдЫрд╡рд┐рдорд╛ рдЫред рдпрджрд┐ рдкрд┐рдирдорд╛ рдзреЗрд░реИ рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд╛рд░реНрдпрд╣рд░реВ рдЫрдиреН рднрдиреЗ рдХреЗ рдЧрд░реНрдиреЗ рднрдиреНрдиреЗ рдкреНрд░рд╢реНрдирдХреЛ рдЬрд╡рд╛рдл, рдбрд╛рдЯрд╛рд╢реАрдЯрдорд╛ рдлреБрдЯрдиреЛрдЯрджреНрд╡рд╛рд░рд╛ рджрд┐рдЗрдПрдХреЛ рдЫ:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
рдпрджрд┐ рдзреЗрд░реИ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгрд╣рд░реВрд▓реЗ рдПрдЙрдЯреИ рдкрд┐рди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ рднрдиреЗ, рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдмреАрдЪрдХреЛ рджреНрд╡рдиреНрджреНрд╡рдмрд╛рдЯ рдмрдЪреНрдирдХреЛ рд▓рд╛рдЧрд┐, рдПрдХ рдкрдЯрдХрдорд╛ рдПрдЙрдЯрд╛ рдорд╛рддреНрд░ рдкрд░рд┐рдзреАрдп рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдЫ, рдкрд░рд┐рдзреАрдп рдШрдбреА рд╕рдХреНрд╖рдо рдмрд┐рдЯ (рдЙрдкрдпреБрдХреНрдд RCC рджрд░реНрддрд╛рдорд╛) рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЯрдЧрд▓ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдЕрдиреНрддрдорд╛, рдЖрдЙрдЯрдкреБрдЯ рдореЛрдбрдорд╛ рдкрд┐рдирд╣рд░реВрдорд╛ рдкрдирд┐ рдШрдбреАрдХреЛ рдЧрддрд┐ рд╣реБрдиреНрдЫред рдпреЛ рдЕрд░реНрдХреЛ рдКрд░реНрдЬрд╛ рдмрдЪрдд рд╕реБрд╡рд┐рдзрд╛ рд╣реЛ; рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЕрдзрд┐рдХрддрдордорд╛ рд╕реЗрдЯ рдЧрд░реНрдЫреМрдВ рд░ рдпрд╕рд▓рд╛рдИ рдмрд┐рд░реНрд╕рдиреНрдЫреМрдВред

рддреНрдпрд╕реЛрднрдП: рд╣рд╛рдореА SPI рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИрдЫреМрдВ, рдЬрд╕рдХреЛ рдорддрд▓рдм рджреБрдИ рдкрд┐рдирд╣рд░реВ (рдбреЗрдЯрд╛ рд░ рдШрдбреАрдХреЛ рд╕рдВрдХреЗрддрдХреЛ рд╕рд╛рде) "рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреБрд╢-рдкреБрд▓ рдкреНрд░рдХрд╛рд░реНрдп" рд╣реБрдиреБрдкрд░реНрдЫ, рд░ рдЕрд░реНрдХреЛ (LAT) "рдирд┐рдпрдорд┐рдд рдкреБрд╢-рдкреБрд▓" рд╣реБрдиреБрдкрд░реНрдЫред рддрд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЕрд╕рд╛рдЗрди рдЧрд░реНрдиреБ рдЕрдШрд┐, SPI рд╕рдБрдЧ рд╕рдореНрдЭреМрддрд╛ рдЧрд░реМрдВред

SPI

рдЕрд░реНрдХреЛ рд╕рд╛рдиреЛ рд╢реИрдХреНрд╖рд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо

SPI рд╡рд╛ рд╕рд┐рд░рд┐рдпрд▓ рдкреЗрд░рд┐рдлреЗрд░рд▓ рдЗрдиреНрдЯрд░рдлреЗрд╕ (рд╕рд┐рд░рд┐рдпрд▓ рдкреЗрд░рд┐рдлреЗрд░рд▓ рдЗрдиреНрдЯрд░рдлреЗрд╕) рдПрдХ MK рд▓рд╛рдИ рдЕрдиреНрдп MK рд░ рдмрд╛рд╣рд┐рд░реА рд╕рдВрд╕рд╛рд░рд╕рдБрдЧ рдЬреЛрдбреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рд╕рд░рд▓ рд░ рдзреЗрд░реИ рдкреНрд░рднрд╛рд╡рдХрд╛рд░реА рдЗрдиреНрдЯрд░рдлреЗрд╕ рд╣реЛред рдпрд╕рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рд╕рд┐рджреНрдзрд╛рдиреНрдд рдкрд╣рд┐рд▓реЗ рдиреИ рдорд╛рдерд┐ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╣рд╛рдБ рдЪрд┐рдирд┐рдпрд╛рдБ рдПрд▓рдИрдбреА рдЪрд╛рд▓рдХрдХреЛ рдмрд╛рд░реЗрдорд╛ (рд╕рдиреНрджрд░реНрдн рдкреБрд╕реНрддрд┐рдХрд╛рдорд╛, рдЦрдгреНрдб 25 рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН)ред SPI рд▓реЗ рдорд╛рд╕реНрдЯрд░ ("рдорд╛рд╕реНрдЯрд░") рд░ рджрд╛рд╕ ("рджрд╛рд╕") рдореЛрдбрдорд╛ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрдЫред SPI рд╕рдБрдЧ рдЪрд╛рд░ рдЖрдзрд╛рд░рднреВрдд рдЪреНрдпрд╛рдирд▓рд╣рд░реВ рдЫрдиреН, рдЬрд╕рдордзреНрдпреЗ рд╕рдмреИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрди:

  • MOSI, рдорд╛рд╕реНрдЯрд░ рдЖрдЙрдЯрдкреБрдЯ / рд╕реНрд▓реЗрдн рдЗрдирдкреБрдЯ: рдпреЛ рдкрд┐рдирд▓реЗ рдорд╛рд╕реНрдЯрд░ рдореЛрдбрдорд╛ рдбрд╛рдЯрд╛ рдкреНрд░рд╕рд╛рд░рдг рдЧрд░реНрджрдЫ, рд░ рджрд╛рд╕ рдореЛрдбрдорд╛ рдбрд╛рдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫ;
  • MISO, рдорд╛рд╕реНрдЯрд░ рдЗрдирдкреБрдЯ / рджрд╛рд╕ рдЖрдЙрдЯрдкреБрдЯ: рдпрд╕рдХреЛ рд╡рд┐рдкрд░рд┐рдд, рдпреЛ рдорд╛рд╕реНрдЯрд░рдорд╛ рдкреНрд░рд╛рдкреНрдд рд╣реБрдиреНрдЫ, рд░ рджрд╛рд╕рдорд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реБрдиреНрдЫ;
  • SCK, рд╕рд┐рд░рд┐рдпрд▓ рдШрдбреА: рдорд╛рд╕реНрдЯрд░рдорд╛ рдбрд╛рдЯрд╛ рдкреНрд░рд╕рд╛рд░рдгрдХреЛ рдлреНрд░рд┐рдХреНрд╡реЗрдиреНрд╕реА рд╕реЗрдЯ рдЧрд░реНрджрдЫ рд╡рд╛ рджрд╛рд╕рдорд╛ рдШрдбреА рд╕рдВрдХреЗрдд рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫред рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдкрдорд╛ рдмрд┐рдЯреНрд╕ рдорд╛рд░реНрджреИ;
  • рдПрд╕рдПрд╕, рджрд╛рд╕ рдЪрдпрди: рдпрд╕ рдЪреНрдпрд╛рдирд▓рдХреЛ рд╕рд╣рдпреЛрдЧрдорд╛, рджрд╛рд╕рд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ рдХрд┐ рдЙрд╣рд╛рдБрдмрд╛рдЯ рдХреЗрд╣рд┐ рдЪрд╛рд╣рд┐рдпреЛред STM32 рдорд╛ рдпрд╕рд▓рд╛рдИ NSS рднрдирд┐рдиреНрдЫ, рдЬрд╣рд╛рдБ N = рдирдХрд╛рд░рд╛рддреНрдордХ, рдЕрд░реНрдерд╛рддреНред рдпрджрд┐ рдпрд╕ рдЪреНрдпрд╛рдирд▓рдорд╛ рдЬрдореАрди рдЫ рднрдиреЗ рдирд┐рдпрдиреНрддреНрд░рдХ рджрд╛рд╕ рдмрдиреНрдЫред рдпрд╕рд▓реЗ рдУрдкрди рдбреНрд░реЗрди рдЖрдЙрдЯрдкреБрдЯ рдореЛрдбрд╕рдБрдЧ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рд╕рдВрдпреЛрдЬрди рдЧрд░реНрджрдЫ, рддрд░ рддреНрдпреЛ рдЕрд░реНрдХреЛ рдХрдерд╛ рд╣реЛред

рдЕрд░реВ рд╕рдмреИ рдХреБрд░рд╛рд╣рд░реВ рдЬрд╕реНрддреИ, STM32 рдорд╛ SPI рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдорд╛ рдзрдиреА рдЫ, рдЬрд╕рд▓реЗ рдпрд╕рд▓рд╛рдИ рдмреБрдЭреНрди рдХреЗрд╣реА рдЧрд╛рд╣реНрд░реЛ рдмрдирд╛рдЙрдБрдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдпреЛ рди рдХреЗрд╡рд▓ SPI рд╕рдВрдЧ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрдЫ, рддрд░ I2S рдЗрдиреНрдЯрд░рдлреЗрд╕ рд╕рдВрдЧ, рд░ рдХрд╛рдЧрдЬрд╛рдд рдорд╛ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╡рд┐рд╡рд░рдг рдорд┐рд╢реНрд░рд┐рдд рдЫрдиреН, рдпреЛ рдПрдХ рд╕рдордп рдорд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдЯреМрддреА рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рд╣рд╛рдореНрд░реЛ рдХрд╛рд░реНрдп рдПрдХрджрдо рд╕рд░рд▓ рдЫ: рд╣рд╛рдореАрд▓реЗ рдХреЗрд╡рд▓ MOSI рд░ SCK рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдбрд╛рдЯрд╛ рдкрдард╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫред рд╣рд╛рдореА рд╕реЗрдХреНрд╢рди 25.3.4 (рдЖрдзрд╛ рдбреБрдкреНрд▓реЗрдХреНрд╕ рдХрдореНрдпреБрдирд┐рдХреЗрд╢рди, рд╣рд╛рдл рдбреБрдкреНрд▓реЗрдХреНрд╕ рдХрдореНрдпреБрдирд┐рдХреЗрд╕рди) рдорд╛ рдЬрд╛рдиреНрдЫреМрдВ, рдЬрд╣рд╛рдБ рд╣рд╛рдореАрд▓реЗ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдЫреМрдВ 1 рдШрдбреА рд░ 1 рджрд┐рд╢рд╛рд╣реАрди рдбрд╛рдЯрд╛ рддрд╛рд░ (1 рдШрдбреА рд╕рдВрдХреЗрдд рд░ 1 рджрд┐рд╢рд╛рд╣реАрди рдбрд╛рдЯрд╛ рд╕реНрдЯреНрд░рд┐рдо):

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
рдпрд╕ рдореЛрдбрдорд╛, рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд▓реЗ рдЯреНрд░рд╛рдиреНрд╕рдорд┐рдЯ-рдорд╛рддреНрд░ рд╡рд╛ рдкреНрд░рд╛рдкреНрдд-рдорд╛рддреНрд░ рдореЛрдбрдорд╛ SPI рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред / рдЯреНрд░рд╛рдиреНрд╕рдорд┐рдЯ-рдорд╛рддреНрд░ рдореЛрдб рдбреБрдкреНрд▓реЗрдХреНрд╕ рдореЛрдбрд╕рдБрдЧ рдорд┐рд▓реНрджреЛрдЬреБрд▓реНрджреЛ рдЫ: рдбрд╛рдЯрд╛ рдЯреНрд░рд╛рдиреНрд╕рдорд┐рдЯ рдкрд┐рдирдорд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реБрдиреНрдЫ (рдорд╛рд╕реНрдЯрд░ рдореЛрдбрдорд╛ MOSI рд╡рд╛ рджрд╛рд╕ рдореЛрдбрдорд╛ MISO), рд░ рдкреНрд░рд╛рдкреНрдд рдкрд┐рди (рдХреНрд░рдорд╢рдГ MISO рд╡рд╛ MOSI) рдирд┐рдпрдорд┐рдд I/O рдкрд┐рдирдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред ред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдХреЗрд╡рд▓ Rx рдмрдлрд░рд▓рд╛рдИ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ (рдпрджрд┐ рдпреЛ рдкрдврд┐рдпреЛ рднрдиреЗ, рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдбрд╛рдЯрд╛ рд╣реБрдиреЗрдЫреИрди)ред

рдЙрддреНрдХреГрд╖реНрдЯ, MISO рдкрд┐рди рдирд┐:рд╢реБрд▓реНрдХ рдЫ, LAT рд╕рд┐рдЧреНрдирд▓рд▓рд╛рдИ рдпрд╕рдорд╛ рдЬрдбрд╛рди рдЧрд░реМрдВред рджрд╛рд╕ рдЪрдпрдирд▓рд╛рдИ рд╣реЗрд░реМрдВ, рдЬреБрди STM32 рдорд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдкрдорд╛ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдЬреБрди рдЕрддреНрдпрдиреНрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫред рд╣рд╛рдореАрд▓реЗ рдЦрдгреНрдб 25.3.1 SPI рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╡рд░рдгрдорд╛ рдЙрд╣реА рдирд╛рдордХреЛ рдЕрдиреБрдЪреНрдЫреЗрдж рдкрдвреНрдЫреМрдВ:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
рд╕рдлреНрдЯрд╡реЗрдпрд░ рдирд┐рдпрдиреНрддреНрд░рдг NSS (SSM = 1) / рджрд╛рд╕ рдЪрдпрди рдЬрд╛рдирдХрд╛рд░реА SPI_CR1 рджрд░реНрддрд╛рдХреЛ SSI рдмрд┐рдЯрдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЫред рдмрд╛рд╣реНрдп NSS рдкрд┐рди рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рдГрд╢реБрд▓реНрдХ рд░рд╣рдиреНрдЫред

рдпреЛ рджрд░реНрддрд╛рдорд╛ рд▓реЗрдЦреНрдиреЗ рд╕рдордп рд╣реЛред рдореИрд▓реЗ SPI2 рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВ, рдбрд╛рдЯрд╛рд╢реАрдЯрдорд╛ рдпрд╕рдХреЛ рдЖрдзрд╛рд░ рдареЗрдЧрд╛рдирд╛ рдЦреЛрдЬреНрдиреБрд╣реЛрд╕реН - рдЦрдгреНрдб 3.3 рдореЗрдореЛрд░реА рдирдХреНрд╕рд╛рдорд╛:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ

рдЦреИрд░, рд╕реБрд░реБ рдЧрд░реМрдВ:

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

"рдорд╛рд╕реНрдЯрд░ рдореЛрдбрдорд╛ SPI рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрджреИ" рдЖрддреНрдо-рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рд╢реАрд░реНрд╖рдХрдХреЛ рд╕рд╛рде рдЦрдгреНрдб 25.3.3 рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реН:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ

1. SPI_CR2 рджрд░реНрддрд╛рдорд╛ рдмрд┐рдЯреНрд╕ BR[0:1] рд╕рдБрдЧ рдХреНрд░рдорд┐рдХ рдШрдбреА рдЖрд╡реГрддреНрддрд┐ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рджрд░реНрддрд╛рд╣рд░реВ рдПрдЙрдЯреИ рдирд╛рдордХреЛ рд╕рдиреНрджрд░реНрдн рдкреБрд╕реНрддрд┐рдХрд╛ рдЦрдгреНрдбрдорд╛ рд╕рдЩреНрдХрд▓рди рдЧрд░рд┐рдиреНрдЫред рдареЗрдЧрд╛рдирд╛ рдкрд░рд┐рд╡рд░реНрддрди (рдареЗрдЧрд╛рдирд╛ рдЕрдлрд╕реЗрдЯCR1 - 0x00 рдХреЛ рд▓рд╛рдЧрд┐, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рд╕рдмреИ рдмрд┐рдЯрд╣рд░реВ рдЦрд╛рд▓реА рд╣реБрдиреНрдЫрдиреН (рдореВрд▓реНрдп рд░рд┐рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН режxрежрежрежреж):

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ

BR рдмрд┐рдЯреНрд╕рд▓реЗ рдирд┐рдпрдиреНрддреНрд░рдХ рдШрдбреА рдбрд┐рднрд╛рдЗрдбрд░ рд╕реЗрдЯ рдЧрд░реНрджрдЫ, рдпрд╕рд░реА SPI рд▓реЗ рдХрд╛рдо рдЧрд░реНрдиреЗ рдЖрд╡реГрддреНрддрд┐ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрджрдЫред рд╣рд╛рдореНрд░реЛ STM32 рдлреНрд░рд┐рдХреНрд╡реЗрдиреНрд╕реА 72 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рд╣реБрдиреЗрдЫ, LED рдбреНрд░рд╛рдЗрднрд░, рдпрд╕рдХреЛ рдбрд╛рдЯрд╛рд╢реАрдЯ рдЕрдиреБрд╕рд╛рд░, 25 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рд╕рдореНрдордХреЛ рдлреНрд░рд┐рдХреНрд╡реЗрдиреНрд╕реАрд╕рдБрдЧ рд╕рдЮреНрдЪрд╛рд▓рди рд╣реБрдиреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореАрд▓реЗ рдЪрд╛рд░ (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 рдорд╛ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН)

рд╣рд╛рдореА рдпрд╣рд╛рдБ рдбрд╛рдЯрд╛рд╢реАрдЯ рдкрдврд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВ рд░ рдпреЛрдЬрдирд╛рд╣рд░реВ рд╣реЗрд░рд┐рд░рд╣реЗрдХрд╛ рдЫреИрдиреМрдВ, рдкреГрд╖реНрда 704 (SPI рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╡рд░рдг) рдорд╛ CPOL рд░ CPHA рдмрд┐рдЯрд╣рд░реВрдХреЛ рдкрд╛рда рд╡рд┐рд╡рд░рдгрд▓рд╛рдИ рдирдЬрд┐рдХрдмрд╛рдЯ рд╣реЗрд░реМрдВ:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
рдШрдбреА рдЪрд░рдг рд░ рдзреНрд░реБрд╡рддрд╛
SPI_CR1 рд░реЗрдЬрд┐рд╕реНрдЯрд░рдХреЛ CPOL рд░ CPHA рдмрд┐рдЯрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдкрдорд╛ рдЪрд╛рд░ рд╕рдордп рд╕рдореНрдмрдиреНрдзрд╣рд░реВ рдЪрдпрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред CPOL (рдШрдбреА рдзреНрд░реБрд╡рддрд╛) рдмрд┐рдЯрд▓реЗ рдХреБрдиреИ рдбрд╛рдЯрд╛ рдЯреНрд░рд╛рдиреНрд╕рдорд┐рдЯ рдирднрдПрдХреЛ рдмреЗрд▓рд╛ рдШрдбреА рд╕рдВрдХреЗрддрдХреЛ рд╕реНрдерд┐рддрд┐ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрджрдЫред рдпреЛ рдмрд┐рдЯрд▓реЗ рдорд╛рд╕реНрдЯрд░ рд░ рджрд╛рд╕ рдореЛрдбрд╣рд░реВ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрджрдЫред рдпрджрд┐ CPOL рд░рд┐рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗ, SCK рдкрд┐рди рдЖрд░рд╛рдо рдореЛрдбрдорд╛ рдХрдо рдЫред рдпрджрд┐ CPOL рдмрд┐рдЯ рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗ, рдЖрд░рд╛рдо рдореЛрдбрдХреЛ рд╕рдордпрдорд╛ SCK рдкрд┐рди рдЙрдЪреНрдЪ рд╣реБрдиреНрдЫред
рдЬрдм CPHA (рдШрдбреА рдЪрд░рдг) рдмрд┐рдЯ рд╕реЗрдЯ рд╣реБрдиреНрдЫ, рдЙрдЪреНрдЪ рдмрд┐рдЯ рдЯреНрд░реНрдпрд╛рдк рд╕реНрдЯреНрд░реЛрдм SCK рд╕рдВрдХреЗрддрдХреЛ рджреЛрд╕реНрд░реЛ рдХрд┐рдирд╛рд░рд╛ рд╣реЛ (CPOL рд╕реНрдкрд╖реНрдЯ рдЫ рднрдиреЗ рдЭрд░реНрдиреЗ, CPOL рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЦрдгреНрдбрдорд╛ рдмрдвреНрджреИ)ред рдбреЗрдЯрд╛ рдШрдбреА рд╕рдВрдХреЗрдд рдорд╛ рджреЛрд╕реНрд░реЛ рдкрд░рд┐рд╡рд░реНрддрди рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдЧрд░рд┐рдПрдХреЛ рдЫред рдпрджрд┐ CPHA рдмрд┐рдЯ рд╕реНрдкрд╖реНрдЯ рдЫ рднрдиреЗ, рдЙрдЪреНрдЪ рдмрд┐рдЯ рдЯреНрд░реНрдпрд╛рдк рд╕реНрдЯреНрд░реЛрдм SCK рд╕рдВрдХреЗрддрдХреЛ рдмрдвреНрджреЛ рдХрд┐рдирд╛рд░рд╛ рд╣реЛ (CPOL рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗ рдЭрд░реНрдиреЗ рдХрд┐рдирд╛рд░рд╛, CPOL рдЦрд╛рд▓реА рднрдПрдорд╛ рдмрдвреНрджреЛ рдХрд┐рдирд╛рд░рд╛)ред рдбреЗрдЯрд╛ рдШрдбреА рд╕рдВрдХреЗрдд рдорд╛ рдкрд╣рд┐рд▓реЛ рдкрд░рд┐рд╡рд░реНрддрди рдорд╛ рдХрдмреНрдЬрд╛ рдЧрд░рд┐рдПрдХреЛ рдЫред

рдпреЛ рдЬреНрдЮрд╛рди рдЕрд╡рд╢реЛрд╖рд┐рдд рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐, рд╣рд╛рдореА рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛ рдкреБрдЧреНрдЫреМрдВ рдХрд┐ рджреБрдмреИ рдмрд┐рдЯрд╣рд░реВ рд╢реВрдиреНрдп рд░рд╣рдиреБрдкрд░реНрдЫ, рдХрд┐рдирднрдиреЗ рд╣рд╛рдореА рдкреНрд░рдпреЛрдЧрдорд╛ рдирднрдПрдХреЛ рдмреЗрд▓рд╛ SCK рд╕рдВрдХреЗрдд рдХрдо рд░рд╣рди рдЪрд╛рд╣рдиреНрдЫреМрдВ, рд░ рдбрд╛рдЯрд╛ рдкрд▓реНрд╕рдХреЛ рдмрдвреНрджреЛ рдХрд┐рдирд╛рд░рд╛рдорд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрд╕реН (рдЪрд┐рддреНрд░ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред рдмрдвреНрджреЛ рдХрд┐рдирд╛рд░рд╛ DM634 рдбрд╛рдЯрд╛рд╢реАрдЯрдорд╛)ред

рд╡реИрд╕реЗ, рдпрд╣рд╛рдБ рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ ST рдбрд╛рдЯрд╛рд╢реАрдЯрдорд╛ рд╢рдмреНрджрд╛рд╡рд▓реАрдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛ рднреЗрдЯреНрдпреМрдВ: рддрд┐рдиреАрд╣рд░реВрдорд╛ "рдмрд┐рдЯрд▓рд╛рдИ рд╢реВрдиреНрдпрдорд╛ рд░рд┐рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН" рднрдиреНрдиреЗ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫред рдЕрд▓рд┐рдХрддрд┐ рд░рд┐рд╕реЗрдЯ рдЧрд░реНрдирд░ рд╣реЛрдЗрди рдЕрд▓рд┐рдХрддрд┐ рдЦрд╛рд▓реА рдЧрд░реНрди, рдЬрд╕реНрддреИ, рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, Atmegaред

3. рдбрд╛рдЯрд╛ рдмреНрд▓рдХ 8-рдмрд┐рдЯ рд╡рд╛ 16-рдмрд┐рдЯ рдврд╛рдБрдЪрд╛ рд╣реЛ рдХрд┐ рднрдиреЗрд░ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди DFF рдмрд┐рдЯ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдореИрд▓реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдкрдорд╛ 16-рдмрд┐рдЯ DM634 рд▓рд┐рдПрдБ рддрд╛рдХрд┐ DM12 рдЬрд╕реНрддреИ 633-рдмрд┐рдЯ PWM рдбрд╛рдЯрд╛ рдЯреНрд░рд╛рдиреНрд╕рдорд┐рдЯ рдЧрд░реНрди рдирдкрд░реЛрд╕реНред DFF рд▓рд╛рдИ рдПрдЙрдЯрд╛рдорд╛ рд╕реЗрдЯ рдЧрд░реНрдиреБрдХреЛ рдЕрд░реНрде рд╣реБрдиреНрдЫ:

#define DFF         0x0800

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

4. рдмреНрд▓рдХ рдврд╛рдБрдЪрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди SPI_CR1 рджрд░реНрддрд╛рдорд╛ LSBFIRST рдмрд┐рдЯ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН

LSBFIRST, рдпрд╕рдХреЛ рдирд╛рдорд▓реЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдиреНрдЫ, рдХрдореНрддрд┐рдорд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯрдХреЛ рд╕рд╛рде рдкреНрд░рд╕рд╛рд░рдг рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрджрдЫред рддрд░ DM634 рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯрдмрд╛рдЯ рд╕реБрд░реБ рд╣реБрдиреЗ рдбрд╛рдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫред рддреНрдпрд╕реИрд▓реЗ, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рд░рд┐рд╕реЗрдЯ рдЫреЛрдбреНрдЫреМрдВред

5. рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЛрдбрдорд╛, рдпрджрд┐ NSS рдкрд┐рдирдмрд╛рдЯ рдЗрдирдкреБрдЯ рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗ, рд╕рдореНрдкреВрд░реНрдг рдмрд╛рдЗрдЯ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЕрдиреБрдХреНрд░рдордХреЛ рд╕рдордпрдорд╛ NSS рдкрд┐рдирдорд╛ рдЙрдЪреНрдЪ рд╕рдВрдХреЗрдд рд▓рд╛рдЧреВ рдЧрд░реНрдиреБрд╣реЛрд╕реНред NSS рд╕рдлреНрдЯрд╡реЗрдпрд░ рдореЛрдбрдорд╛, SPI_CR1 рджрд░реНрддрд╛рдорд╛ SSM рд░ SSI рдмрд┐рдЯрд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпрджрд┐ NSS рдкрд┐рдирд▓рд╛рдИ рдЖрдЙрдЯрдкреБрдЯрдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд╣реЛ рднрдиреЗ, SSOE рдмрд┐рдЯ рдорд╛рддреНрд░ рд╕реЗрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

NSS рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЛрдб рдмрд┐рд░реНрд╕рди SSM рд░ SSI рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

#define SSI         0x0100
#define SSM         0x0200

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

6. MSTR рд░ SPE рдмрд┐рдЯрд╣рд░реВ рд╕реЗрдЯ рд╣реБрдиреБрдкрд░реНрдЫ (рдПрдирдПрд╕рдПрд╕ рд╕рд┐рдЧреНрдирд▓ рдЙрдЪреНрдЪ рднрдПрдорд╛ рдорд╛рддреНрд░ рддрд┐рдиреАрд╣рд░реВ рд╕реЗрдЯ рд░рд╣рдиреНрдЫрдиреН)

рд╡рд╛рд╕реНрддрд╡рдорд╛, рдпреА рдмрд┐рдЯреНрд╕рдХреЛ рд╕рд╛рде рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ SPI рд▓рд╛рдИ рдорд╛рд╕реНрдЯрд░рдХреЛ рд░реВрдкрдорд╛ рддреЛрдХреНрдЫреМрдВ рд░ рдпрд╕рд▓рд╛рдИ рдЦреЛрд▓реНрдЫреМрдВ:

#define MSTR        0x0004
#define SPE         0x0040

_SPI2_ (_SPI_CR1) |= MSTR; //SPI master
//╨║╨╛╨│╨┤╨░ ╨▓╤Б╨╡ ╨│╨╛╤В╨╛╨▓╨╛, ╨▓╨║╨╗╤О╤З╨░╨╡╨╝ SPI
_SPI2_ (_SPI_CR1) |= SPE;

SPI рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫ, рддреБрд░реБрдиреНрддреИ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рд▓реЗрдЦреМрдВ рдЬрд╕рд▓реЗ рдбреНрд░рд╛рдЗрднрд░рд▓рд╛рдИ рдмрд╛рдЗрдЯрд╣рд░реВ рдкрдард╛рдЙрдБрдЫред 25.3.3 рдкрдвреНрди рдЬрд╛рд░реА рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реН "рдорд╛рд╕реНрдЯрд░ рдореЛрдбрдорд╛ SPI рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрджреИ":

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
рдбрд╛рдЯрд╛ рдЯреНрд░рд╛рдиреНрд╕рдлрд░ рдЕрд░реНрдбрд░
Tx рдмрдлрд░рдорд╛ рдмрд╛рдЗрдЯ рд▓реЗрдЦрд┐рдПрдкрдЫрд┐ рдкреНрд░рд╕рд╛рд░рдг рд╕реБрд░реБ рд╣реБрдиреНрдЫред
рдбрд╛рдЯрд╛ рдмрд╛рдЗрдЯ рд╢рд┐рдлреНрдЯ рджрд░реНрддрд╛ рдорд╛ рд▓реЛрдб рдЧрд░рд┐рдПрдХреЛ рдЫ рд╕рдорд╛рдирд╛рдиреНрддрд░ рдореЛрдб (рдЖрдиреНрддрд░рд┐рдХ рдмрд╕рдмрд╛рдЯ) рдкрд╣рд┐рд▓реЛ рдмрд┐рдЯ рдХреЛ рдкреНрд░рд╕рд╛рд░рдг рдХреЛ рд╕рдордпрдорд╛, рдЬрд╕ рдкрдЫрд┐ рдпреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реБрдиреНрдЫ рдХреНрд░рдорд┐рдХ MOSI рдкрд┐рди рдореЛрдб, CPI_CR1 рджрд░реНрддрд╛рдорд╛ LSBFIRST рдмрд┐рдЯрдХреЛ рд╕реЗрдЯрд┐рдЩрдХреЛ рдЖрдзрд╛рд░рдорд╛ рдкрд╣рд┐рд▓реЛ рд╡рд╛ рдЕрдиреНрддрд┐рдо рдмрд┐рдЯ рдЕрдЧрд╛рдбрд┐ред TXE рдЭрдгреНрдбрд╛ рдбрд╛рдЯрд╛ рдкреНрд░рд╕рд╛рд░рдг рдкрдЫрд┐ рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ Tx рдмрдлрд░ рджреЗрдЦрд┐ рд╢рд┐рдлреНрдЯ рджрд░реНрддрд╛ рдЧрд░реНрди, рд░ рдпрджрд┐ CPI_CR1 рджрд░реНрддрд╛рдорд╛ TXEIE рдмрд┐рдЯ рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗ рдЕрд╡рд░реЛрдз рдЙрддреНрдкрдиреНрди рдЧрд░реНрджрдЫред

STM рдирд┐рдпрдиреНрддреНрд░рдХрд╣рд░реВрдорд╛ SPI рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рдПрдЙрдЯрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдорд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдЧрд░реНрди рдореИрд▓реЗ рдЕрдиреБрд╡рд╛рджрдорд╛ рдХреЗрд╣реА рд╢рдмреНрджрд╣рд░реВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдЧрд░реЗрдВред Atmega рдорд╛ TXE рдЭрдгреНрдбрд╛ (Tx рдЦрд╛рд▓реА, Tx рдЦрд╛рд▓реА рдЫ рд░ рдбрд╛рдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рддрдпрд╛рд░ рдЫ) рд╕рдореНрдкреВрд░реНрдг рдмрд╛рдЗрдЯ рдкрдард╛рдП рдкрдЫрд┐ рдорд╛рддреНрд░ рд╕реЗрдЯ рдЧрд░рд┐рдиреНрдЫ рдмрд╛рд╣рд┐рд░ред рд░ рдпрд╣рд╛рдБ рдпреЛ рдЭрдгреНрдбрд╛ рдЖрдиреНрддрд░рд┐рдХ рд╕рд┐рдлреНрдЯ рджрд░реНрддрд╛рдорд╛ рдмрд╛рдЗрдЯ рд╕рдореНрдорд┐рд▓рд┐рдд рднрдПрдкрдЫрд┐ рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫред рдпреЛ рддреНрдпрд╣рд╛рдБ рдПрдХреИ рд╕рдордпрдорд╛ рд╕рдмреИ рдмрд┐рдЯрд╣рд░реВ (рд╕рдорд╛рдирд╛рдиреНрддрд░рдорд╛) рд╕рдБрдЧ рдзрдХреЗрд▓рд┐рдПрдХреЛ рд╣реБрдирд╛рд▓реЗ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдбреЗрдЯрд╛ рдХреНрд░рдорд┐рдХ рд░реВрдкрдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░рд┐рдиреНрдЫ, TXE рдмрд╛рдЗрдЯ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдкрдард╛рдЙрдиреБ рдЕрдШрд┐ рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫред рдпреЛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ рдХрд┐рдирднрдиреЗ рд╣рд╛рдореНрд░реЛ LED рдбреНрд░рд╛рдЗрднрд░рдХреЛ рдорд╛рдорд▓рд╛рдорд╛, рд╣рд╛рдореАрд▓реЗ рдкрдард╛рдП рдкрдЫрд┐ LAT рдкрд┐рди рддрд╛рдиреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ ╨▓╤Б╨╡╤Е рдбрд╛рдЯрд╛, рдЕрд░реНрдерд╛рддреН TXE рдЭрдгреНрдбрд╛ рдорд╛рддреНрд░ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдпрд╛рдкреНрдд рд╣реБрдиреЗрдЫреИрдиред

рдпрд╕рдХреЛ рдорддрд▓рдм рд╣рд╛рдореАрд▓рд╛рдИ рдЕрд░реНрдХреЛ рдЭрдгреНрдбрд╛ рдЪрд╛рд╣рд┐рдиреНрдЫред 25.3.7 рдорд╛ рд╣реЗрд░реМрдВ - "рд╕реНрдерд┐рддрд┐ рдЭрдгреНрдбрд╛":

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
<тАж>
рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
рд╡реНрдпрд╕реНрдд рдЭрдгреНрдбрд╛
BSY рдЭрдгреНрдбрд╛ рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рдЦрд╛рд▓реА рдЧрд░рд┐рдПрдХреЛ рдЫ (рдпрд╕рдорд╛ рд▓реЗрдЦреНрджрд╛ рдХреБрдиреИ рдкреНрд░рднрд╛рд╡ рдЫреИрди)ред BSY рдЭрдгреНрдбрд╛рд▓реЗ SPI рд╕рдВрдЪрд╛рд░ рддрд╣рдХреЛ рдЕрд╡рд╕реНрдерд╛рд▓рд╛рдИ рд╕рдВрдХреЗрдд рдЧрд░реНрдЫред
рдпреЛ рд░рд┐рд╕реЗрдЯ рд╣реБрдиреНрдЫ:
рдЬрдм рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдкреВрд░рд╛ рд╣реБрдиреНрдЫ (рдпрджрд┐ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдирд┐рд░рдиреНрддрд░ рдЫ рднрдиреЗ рдорд╛рд╕реНрдЯрд░ рдореЛрдбрдорд╛ рдмрд╛рд╣реЗрдХ)
рдЬрдм SPI рдЕрд╕рдХреНрд╖рдо рд╣реБрдиреНрдЫ
рдЬрдм рдорд╛рд╕реНрдЯрд░ рдореЛрдб рддреНрд░реБрдЯрд┐ рд╣реБрдиреНрдЫ (MODF=1)
рдпрджрд┐ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдирд┐рд░рдиреНрддрд░ рдЫреИрди рднрдиреЗ, BSY рдЭрдгреНрдбрд╛ рдкреНрд░рддреНрдпреЗрдХ рдбрд╛рдЯрд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдмреАрдЪ рдЦрд╛рд▓реА рдЧрд░рд┐рдиреНрдЫ

рдареАрдХ рдЫ, рдпреЛ рдХрд╛рдордорд╛ рдЖрдЙрдиреЗрдЫред Tx рдмрдлрд░ рдХрд╣рд╛рдБ рдЕрд╡рд╕реНрдерд┐рдд рдЫ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреБрд╣реЛрд╕реНред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, "SPI рдбрд╛рдЯрд╛ рджрд░реНрддрд╛" рдкрдвреНрдиреБрд╣реЛрд╕реН:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
рдмрд┐рдЯреНрд╕ резрел:реж DR [резрел:реж] рдбрд╛рдЯрд╛ рджрд░реНрддрд╛
рдкреНрд░рд╛рдкреНрдд рдбрд╛рдЯрд╛ рд╡рд╛ рдбрд╛рдЯрд╛ рдкреНрд░рд╕рд╛рд░рдг рдЧрд░реНрдиред
рдбрд╛рдЯрд╛ рджрд░реНрддрд╛рд▓рд╛рдИ рджреБрдИ рдмрдлрд░рд╣рд░реВрдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░рд┐рдПрдХреЛ рдЫ - рдПрдЙрдЯрд╛ рд▓реЗрдЦреНрдирдХрд╛ рд▓рд╛рдЧрд┐ (рдмрдлрд░ рдЯреНрд░рд╛рдиреНрд╕рдорд┐рдЯ) рд░ рдЕрд░реНрдХреЛ рдкрдвреНрдирдХреЛ рд▓рд╛рдЧрд┐ (рдмрдлрд░ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реЛрд╕реН)ред рдбрд╛рдЯрд╛ рд░реЗрдЬрд┐рд╕реНрдЯрд░рдорд╛ рд▓реЗрдЦреНрджрд╛ Tx рдмрдлрд░рдорд╛ рд▓реЗрдЦрд┐рдиреНрдЫ, рд░ рдбрд╛рдЯрд╛ рд░реЗрдЬрд┐рд╕реНрдЯрд░рдмрд╛рдЯ рдкрдвреНрджрд╛ Rx рдмрдлрд░рдорд╛ рд░рд╣реЗрдХреЛ рдорд╛рди рдлрд┐рд░реНрддрд╛ рд╣реБрдиреЗрдЫред

рдареАрдХ рдЫ, рд░ рд╕реНрдерд┐рддрд┐ рджрд░реНрддрд╛, рдЬрд╣рд╛рдБ TXE рд░ BSY рдЭрдгреНрдбрд╛рд╣рд░реВ рдкрд╛рдЗрдиреНрдЫ:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ

рд╣рд╛рдореА рд▓реЗрдЦреНрдЫреМ:

#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 рдкрдЯрдХ рджреБрдИ рдмрд╛рдЗрдЯрд╣рд░реВ рдкреНрд░рд╕рд╛рд░рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдПрд▓рдИрдбреА рдбреНрд░рд╛рдЗрднрд░ рдЖрдЙрдЯрдкреБрдЯрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдЕрдиреБрд╕рд╛рд░, рдпреЛ рдЬрд╕реНрддреИ:

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 рдкрд┐рди рдХрд╕рд░реА рддрд╛рдиреНрдиреЗ рднрдиреНрдиреЗ рдерд╛рд╣рд╛ рдЫреИрди, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореА I/O рдорд╛ рдлрд░реНрдХрдиреЗрдЫреМрдВред

рдкрд┐рди рдЕрд╕рд╛рдЗрди рдЧрд░реНрджреИ

STM32F1 рдорд╛, рдкрд┐рдирдХреЛ рдЕрд╡рд╕реНрдерд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рджрд░реНрддрд╛рд╣рд░реВ рдПрдХрджрдо рдЕрд╕рд╛рдорд╛рдиреНрдп рдЫрдиреНред рдпреЛ рд╕реНрдкрд╖реНрдЯ рдЫ рдХрд┐ рддреНрдпрд╣рд╛рдБ Atmega рднрдиреНрджрд╛ рдзреЗрд░реИ рдЫрдиреН, рддрд░ рддрд┐рдиреАрд╣рд░реВ рдкрдирд┐ рдЕрдиреНрдп STM рдЪрд┐рдкреНрд╕ рднрдиреНрджрд╛ рдлрд░рдХ рдЫрдиреНред рдЦрдгреНрдб 9.1 GPIO рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╡рд░рдг:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
рдкреНрд░рддреНрдпреЗрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрджреНрджреЗрд╢реНрдп I/O рдкреЛрд░реНрдЯрд╣рд░реВ (GPIO) рджреБрдИ 32-рдмрд┐рдЯ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рджрд░реНрддрд╛рд╣рд░реВ рдЫрдиреН (GPIOx_CRL рд░ GPIOx_CRH), рджреБрдИ 32-рдмрд┐рдЯ рдбреЗрдЯрд╛ рджрд░реНрддрд╛рд╣рд░реВ (GPIOx_IDR рд░ GPIOx_ODR), рдПрдЙрдЯрд╛ 32-рдмрд┐рдЯ рд╕реЗрдЯ/рд░рд┐рд╕реЗрдЯ рджрд░реНрддрд╛ (GPIOx_BSRR), рдПрдЙрдЯрд╛ 16-рдмрд┐рдЯ рд░рд┐рд╕реЗрдЯ рджрд░реНрддрд╛ (GPIOx_BSRR) рд░ GPIOx_32BR рдмрд┐рдЯ рдмреНрд▓рдХрд┐рдЩ рд░рдЬрд┐рд╕реНрдЯрд░ (GPIOx_LCKR)ред

рдкрд╣рд┐рд▓реЛ рджреБрдИ рд░реЗрдЬрд┐рд╕реНрдЯрд░рд╣рд░реВ рдЕрд╕рд╛рдорд╛рдиреНрдп рдЫрдиреН, рд░ рдзреЗрд░реИ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкрдирд┐ рдЫрдиреН, рдХрд┐рдирднрдиреЗ 16 рдкреЛрд░реНрдЯ рдкрд┐рдирд╣рд░реВ рддрд┐рдиреАрд╣рд░реВрдорд╛ "рдЪрд╛рд░ рдмрд┐рдЯ рдкреНрд░рддрд┐ рднрд╛рдЗ" рдврд╛рдБрдЪрд╛рдорд╛ рдЫрд░рд┐рдПрдХрд╛ рдЫрдиреНред рддреАред рдкрд┐рди рд╢реВрдиреНрдп рджреЗрдЦрд┐ рд╕рд╛рдд CRL рдорд╛ рдЫрдиреН, рд░ рдмрд╛рдБрдХреА CRH рдорд╛ рдЫрдиреНред рдПрдХреИ рд╕рдордпрдорд╛, рдмрд╛рдБрдХреА рджрд░реНрддрд╛рд╣рд░реВрд▓реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреЛрд░реНрдЯрдХрд╛ рд╕рдмреИ рдкрд┐рдирдХреЛ рдмрд┐рдЯрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ - рдкреНрд░рд╛рдп: рдЖрдзрд╛ "рдЖрд░рдХреНрд╖рд┐рдд" рдмрд╛рдБрдХреА рдЫред

рд╕рд░рд▓рддрд╛рдХреЛ рд▓рд╛рдЧрд┐, рд╕реВрдЪреАрдХреЛ рдЕрдиреНрддреНрдпрдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реМрдВред

рд╣рд╛рдореАрд▓рд╛рдИ рдЕрд╡рд░реБрджреНрдз рджрд░реНрддрд╛рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░реНрджреИрдиред

рд╕реЗрдЯ рд░ рд░рд┐рд╕реЗрдЯ рджрд░реНрддрд╛рд╣рд░реВ рдПрдХрджрдо рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рдЫрдиреН рдХрд┐ рддрд┐рдиреАрд╣рд░реВ рдЖрдВрд╢рд┐рдХ рд░реВрдкрдорд╛ рдПрдХрдЕрд░реНрдХрд╛рдХреЛ рдирдХреНрдХрд▓ рдЧрд░реНрдЫрдиреН: рддрдкрд╛рдИрдВрд▓реЗ BSRR рдорд╛ рдорд╛рддреНрд░ рд╕рдмреИ рдХреБрд░рд╛ рд▓реЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЬрд╣рд╛рдБ рдЙрдЪреНрдЪ 16 рдмрд┐рдЯрд╣рд░реВрд▓реЗ рдкрд┐рдирд▓рд╛рдИ рд╢реВрдиреНрдпрдорд╛ рд░рд┐рд╕реЗрдЯ рдЧрд░реНрдиреЗрдЫ, рд░ рддрд▓реНрд▓реЛрд╣рд░реВрд▓рд╛рдИ 1 рдорд╛ рд╕реЗрдЯ рдЧрд░рд┐рдиреЗрдЫ, рд╡рд╛ рддрдкрд╛рдИрдВ рдкрдирд┐ рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред BRR рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рддрд▓реНрд▓реЛ резрем рдмрд┐рдЯреНрд╕ рдЬрд╕рдХреЛ рдкрд┐рди рд░рд┐рд╕реЗрдЯ рдорд╛рддреНрд░ рд╣реБрдиреНрдЫред рдорд▓рд╛рдИ рджреЛрд╕реНрд░реЛ рд╡рд┐рдХрд▓реНрдк рдорди рдкрд░реНрдЫред рдпреА рджрд░реНрддрд╛рд╣рд░реВ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫрдиреН рдХрд┐рдирднрдиреЗ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдкрд┐рдирд╣рд░реВрдорд╛ рдкрд░рдорд╛рдгреБ рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдЧрд░реНрдЫрдиреН:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
рдкрд░рдорд╛рдгреБ рд╕реЗрдЯ рд╡рд╛ рд░рд┐рд╕реЗрдЯ
рдмрд┐рдЯ рд╕реНрддрд░рдорд╛ GPIOx_ODR рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рдЧрд░реНрджрд╛ рдЕрд╡рд░реЛрдзрд╣рд░реВ рдЕрд╕рдХреНрд╖рдо рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрди: рдПрдХ рд╡рд╛ рдзреЗрд░реИ рдмрд┐рдЯрд╣рд░реВ рдПрдХрд▓ рдкрд░рдорд╛рдгреБ рд▓реЗрдЦрди рдЕрдкрд░реЗрд╢рди APB2 рдорд╛рд░реНрдлрдд рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдпреЛ рд╕реЗрдЯ/рд░рд┐рд╕реЗрдЯ рджрд░реНрддрд╛ (GPIOx_BSRR рд╡рд╛, рд░рд┐рд╕реЗрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░, GPIOx_BRR) рдорд╛ "1" рд▓реЗрдЦреЗрд░ рдкреНрд░рд╛рдкреНрдд рд╣реБрдиреНрдЫ рдЬреБрди рдмрд┐рдЯ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдЕрдиреНрдп рдмрд┐рдЯрд╣рд░реВ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рдиреЗрдЫрдиреНред

рдбрд╛рдЯрд╛ рд░реЗрдЬрд┐рд╖реНрдЯрд░рд╣рд░реВрдорд╛ рдзреЗрд░реИ рдЖрддреНрдо-рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рдирд╛рдорд╣рд░реВ рдЫрдиреН - IDR = рдЖрдЧрдд рджрд┐рд╢рд╛ рджрд░реНрддрд╛, рдЗрдирдкреБрдЯ рджрд░реНрддрд╛; ODR = рдЙрддреНрдкрд╛рджрди рджрд┐рд╢рд╛ рджрд░реНрддрд╛, рдЖрдЙрдЯрдкреБрдЯ рджрд░реНрддрд╛ред рд╣рд╛рдореАрд▓рд╛рдИ рд╣рд╛рд▓рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрддрд┐рдиреАрд╣рд░реВрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░реНрджреИрдиред

рд░ рдЕрдиреНрддрдорд╛, рдирд┐рдпрдиреНрддреНрд░рдг рджрд░реНрддрд╛рд╣рд░реВред рд╣рд╛рдореА PB13, PB14 рд░ PB15 рдЬрд╕реНрддрд╛ рджреЛрд╕реНрд░реЛ SPI рдкрд┐рдирд╣рд░реВрдорд╛ рд░реБрдЪрд┐ рд░рд╛рдЦреЗрдХрд╛рд▓реЗ, рд╣рд╛рдореА рддреБрд░реБрдиреНрддреИ CRH рд╣реЗрд░реНрдЫреМрдВ:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ

рд░ рд╣рд╛рдореА рджреЗрдЦреНрдЫреМрдВ рдХрд┐ рд╣рд╛рдореАрд▓реЗ 20 рджреЗрдЦрд┐ 31 рд╕рдореНрдо рдмрд┐рдЯреНрд╕рдорд╛ рдХреЗрд╣рд┐ рд▓реЗрдЦреНрдиреБ рдкрд░реНрдЫред

рд╣рд╛рдореАрд▓реЗ рдкрд┐рдирдмрд╛рдЯ рдХреЗ рдЪрд╛рд╣рдиреНрдЫреМрдВ рднрдиреЗрд░ рдорд╛рдерд┐ рдкрд╣рд┐рд▓реЗ рдиреИ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЗрд╕рдХреЗрдХрд╛ рдЫреМрдВ, рддреНрдпрд╕реИрд▓реЗ рдпрд╣рд╛рдБ рдо рд╕реНрдХреНрд░рд┐рдирд╕рдЯ рдмрд┐рдирд╛ рдЧрд░реНрдиреЗрдЫреБ, рдо рдорд╛рддреНрд░ рднрдиреНрдЫреБ рдХрд┐ рдореЛрдбрд▓реЗ рджрд┐рд╢рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджрдЫ (рдпрджрд┐ рджреБрд╡реИ рдмрд┐рдЯ реж рдорд╛ рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗ рдЗрдирдкреБрдЯ) рд░ рдкрд┐рди рдЧрддрд┐ (рд╣рд╛рдореАрд▓рд╛рдИ 0MHz рдЪрд╛рд╣рд┐рдиреНрдЫ, рдЕрд░реНрдерд╛рддреНред рджреБрдмреИ рдкрд┐рди "50" рдорд╛), рд░ CNF рд▓реЗ рдореЛрдб рд╕реЗрдЯ рдЧрд░реНрджрдЫ: рдирд┐рдпрдорд┐рдд "рдкреБрд╢-рдкреБрд▓" - 1, "рд╡реИрдХрд▓реНрдкрд┐рдХ" - 00ред рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, рд╣рд╛рдореАрд▓реЗ рдорд╛рдерд┐ рджреЗрдЦреЗрдЭреИрдВ, рд╕рдмреИ рдкрд┐рдирд╣рд░реВрдорд╛ рддрд▓рдмрд╛рдЯ рддреЗрд╕реНрд░реЛ рдмрд┐рдЯ рд╣реБрдиреНрдЫ (CNF10), рдпрд╕рд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдореЛрдбрдорд╛ рд╕реЗрдЯ рдЧрд░реНрджрдЫ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдЗрдирдкреБрдЯ.

рдореИрд▓реЗ рдпреЛ рдЪрд┐рдкрд╕рдБрдЧ рдЕрд░реВ рдХреЗрд╣реА рдЧрд░реНрдиреЗ рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдХреЛрд▓реЗ, рд╕рд░рд▓рддрд╛рдХрд╛ рд▓рд╛рдЧрд┐ рдореИрд▓реЗ рддрд▓реНрд▓реЛ рд░ рдорд╛рдерд┐рд▓реНрд▓реЛ рдирд┐рдпрдиреНрддреНрд░рдг рджрд░реНрддрд╛рдХрд╛ рд▓рд╛рдЧрд┐ рд╕рдмреИ рд╕рдореНрднрд╛рд╡рд┐рдд рдореЛрдб рд░ 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

рд╣рд╛рдореНрд░реЛ рдкрд┐рди рдкреЛрд░реНрдЯ B рдорд╛ рд╕реНрдерд┐рдд рдЫ (рдЖрдзрд╛рд░ рдареЗрдЧрд╛рдирд╛ - 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 рд╣реЛ, рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдмрд┐рдЬреБрд▓реА рдмрдЪрдд рдЧрд░реНрдЫрдиреН, рдЬрд╕рдХреЛ рдорддрд▓рдм рддрдкрд╛рдИрдВрд▓реЗ рдЖрд╡рд╢реНрдпрдХ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рдШрдбреА рд╕рдХреНрд╖рдо рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

рдШрдбреА рдЕрди рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдШрдбреА, рдШрдбреА рдкрдирд┐ рднрдирд┐рдиреНрдЫ, рдШрдбреАрдХреЛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫред рд░ рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рдЖрд░рд╕реАрд╕реА рджреЗрдЦреНрди рд╕рдХреНрдЫреМрдВред рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдХрд╛рдЧрдЬрд╛рддрдорд╛ рдЦреЛрдЬреНрдЫреМрдВ: рдпреЛ рд░рд┐рд╕реЗрдЯ рд░ рдШрдбреА рдирд┐рдпрдиреНрддреНрд░рдг рд╣реЛред

рдорд╛рдерд┐ рднрдирд┐рдПрдЭреИрдВ, рд╕реМрднрд╛рдЧреНрдпрд╡рд╢, рдШрдбреАрдХреЛ рд╡рд┐рд╖рдпрдХреЛ рд╕рдмреИрднрдиреНрджрд╛ рдХрдард┐рди рднрд╛рдЧ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рдПрд╕рдЯреАрдПрдордХрд╛ рдорд╛рдирд┐рд╕рд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА рдЙрдиреАрд╣рд░реВрд▓рд╛рдИ рдзреЗрд░реИ рдзреЗрд░реИ рдзрдиреНрдпрд╡рд╛рдж рджрд┐рдиреНрдЫреМрдВ (рдлреЗрд░рд┐ рдо рдПрдЙрдЯрд╛ рд▓рд┐рдЩреНрдХ рджрд┐рдиреЗрдЫреБред Di Halt рдХреЛ рд╡реЗрдмрд╕рд╛рдЗрдЯ, рдпреЛ рдХрддреНрддрд┐ рднреНрд░рд╛рдордХ рдЫ рднрдиреЗрд░ рд╕реНрдкрд╖реНрдЯ рдкрд╛рд░реНрдирдХреЛ рд▓рд╛рдЧрд┐)ред рд╣рд╛рдореАрд▓рд╛рдИ рдкрд░рд┐рдзреАрдп рдШрдбреА рд╕рдХреНрд╖рдо рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рджрд░реНрддрд╛рд╣рд░реВ рдорд╛рддреНрд░ рдЪрд╛рд╣рд┐рдиреНрдЫ (рдкреЗрд░рд┐рдлреЗрд░рд▓ рдШрдбреА рд╕рдХреНрд╖рдо рджрд░реНрддрд╛рд╣рд░реВ)ред рдкрд╣рд┐рд▓реЗ, RCC рдХреЛ рдЖрдзрд╛рд░ рдареЗрдЧрд╛рдирд╛ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреБрд╣реЛрд╕реН, рдпреЛ "рдореЗрдореЛрд░реА рдирдХреНрд╕рд╛" рдХреЛ рд╕реБрд░реБрдорд╛ рдЫ:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ

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

рд░ рддреНрдпрд╕рдкрдЫрд┐ рдХрд┐ рдд рд▓рд┐рдЩреНрдХрдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЬрд╣рд╛рдБ рддрдкрд╛рдЗрдБ рдкреНрд▓реЗрдЯрдорд╛ рдХреЗрд╣рд┐ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ, рд╡рд╛, рдЕрдЭ рд░рд╛рдореНрд░реЛ, рдЦрдгреНрдбрд╣рд░реВрдмрд╛рдЯ рд╕рдХреНрд╖рдо рджрд░реНрддрд╛рд╣рд░реВрдХреЛ рд╡рд┐рд╡рд░рдгрд╣рд░реВ рдорд╛рд░реНрдлрдд рдЬрд╛рдиреБрд╣реЛрд╕реНред рджрд░реНрддрд╛рд╣рд░реВ рд╕рдХреНрд╖рдо рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдЬрд╣рд╛рдБ рд╣рд╛рдореАрд▓реЗ RCC_APB1ENR рд░ RCC_APB2ENR рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреЗрдЫреМрдВ:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ

рд░ рддрд┐рдиреАрд╣рд░реВ, рддрджрдиреБрд╕рд╛рд░, SPI2, IOPB (I/O рдкреЛрд░реНрдЯ 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: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ

STM8 PWM

STM8 рдорд╛ PWM

рдЬрдм рдореИрд▓реЗ рднрд░реНрдЦрд░ рдпреЛ рд▓реЗрдЦрдХреЛ рдпреЛрдЬрдирд╛ рдмрдирд╛рдЗрд░рд╣реЗрдХреЛ рдерд┐рдПрдБ, рдореИрд▓реЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдгрдХреЛ рд░реВрдкрдорд╛, рдХреЗрд╡рд▓ рдПрдХ рдбрд╛рдЯрд╛рд╢реАрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЕрдкрд░рд┐рдЪрд┐рдд рдЪрд┐рдкрдХреЛ рдХреЗрд╣реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдорд╛рд╕реНрдЯрд░ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреЗ, рддрд╛рдХрд┐ рдо рдмреБрдЯ рдмрд┐рдирд╛ рдЬреБрддреНрддрд╛рдХреЛ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдиреЗ рдЫреИрдиред STM8 рдпрд╕ рднреВрдорд┐рдХрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЖрджрд░реНрд╢ рдерд┐рдпреЛ: рдкрд╣рд┐рд▓реЛ, рдорд╕рдБрдЧ STM8S103 рд╕рдБрдЧ рдХреЗрд╣реА рдЪрд┐рдирд┐рдпрд╛рдБ рдмреЛрд░реНрдбрд╣рд░реВ рдерд┐рдП, рд░ рджреЛрд╕реНрд░реЛ, рдпреЛ рдзреЗрд░реИ рд▓реЛрдХрдкреНрд░рд┐рдп рдЫреИрди, рд░ рддреНрдпрд╕реИрд▓реЗ рдЗрдиреНрдЯрд░рдиреЗрдЯрдорд╛ рдкрдвреНрдиреЗ рд░ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬреНрдиреЗ рдкреНрд░рд▓реЛрднрди рдпреА рдзреЗрд░реИ рд╕рдорд╛рдзрд╛рдирд╣рд░реВрдХреЛ рдЕрднрд╛рд╡рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЫред

рдЪрд┐рдк рдкрдирд┐ рдЫ рдбрд╛рдЯрд╛ рдкрд╛рдирд╛ ╨╕ рд╕рдиреНрджрд░реНрдн рдкреБрд╕реНрддрд┐рдХрд╛ RM0016, рдкрд╣рд┐рд▓реЛрдорд╛ рддреНрдпрд╣рд╛рдБ рдкрд┐рдирдЖрдЙрдЯ рд░ рджрд░реНрддрд╛ рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдЫрдиреН, рджреЛрд╕реНрд░реЛрдорд╛ - рдЕрд░реВ рд╕рдмреИред STM8 рдПрдХ рднрдпрд╛рдирдХ IDE рдорд╛ C рдорд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЧрд░рд┐рдПрдХреЛ рдЫ рдПрд╕рдЯреА рднрд┐рдЬреБрдЕрд▓ рд╡рд┐рдХрд╛рд╕.

рдШрдбреА рд░ I/O

рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, STM8 2 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬрдХреЛ рдлреНрд░рд┐рдХреНрд╡реЗрдиреНрд╕реАрдорд╛ рд╕рдЮреНрдЪрд╛рд▓рди рд╣реБрдиреНрдЫ, рдпрд╕рд▓рд╛рдИ рддреБрд░реБрдиреНрддреИ рд╕рдЪреНрдпрд╛рдЙрдиреБ рдкрд░реНрдЫред

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
HSI (рдЙрдЪреНрдЪ рдЧрддрд┐ рдЖрдиреНрддрд░рд┐рдХ) рдШрдбреА
HSI рдШрдбреА рд╕рдВрдХреЗрдд рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдмрд▓ рдбрд┐рднрд╛рдЗрдбрд░ (16 рджреЗрдЦрд┐ 1) рдХреЛ рд╕рд╛рде рдЖрдиреНрддрд░рд┐рдХ 8 MHz RC рдУрд╕рд┐рд▓реЗрдЯрд░рдмрд╛рдЯ рд╡реНрдпреБрддреНрдкрдиреНрди рдЧрд░рд┐рдПрдХреЛ рдЫред рдпреЛ рдШрдбреА рд╡рд┐рднрд╛рдЬрдХ рджрд░реНрддрд╛ (CLK_CKDIVR) рдорд╛ рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫред
рдиреЛрдЯ: рд╕реБрд░реБрдорд╛, 8 рдХреЛ рд╡рд┐рднрд╛рдЬрдХ рднрдПрдХреЛ HSI RC рдУрд╕рд┐рд▓реЗрдЯрд░ рдШрдбреА рд╕рдВрдХреЗрддрдХреЛ рдкреНрд░рдореБрдЦ рд╕реНрд░реЛрддрдХреЛ рд░реВрдкрдорд╛ рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рдЫред

рд╣рд╛рдореА рдбрд╛рдЯрд╛рд╢реАрдЯрдорд╛ рджрд░реНрддрд╛ рдареЗрдЧрд╛рдирд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдЫреМрдВ, рд░реЗрдлрдореНрдпрд╛рдирдорд╛ рд╡рд┐рд╡рд░рдг рд░ рджрд░реНрддрд╛ рдЦрд╛рд▓реА рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗрд░ рджреЗрдЦреНрдЫреМрдВ:

#define CLK_CKDIVR *(volatile uint8_t *)0x0050C6

CLK_CKDIVR &= ~(0x18);

рд╣рд╛рдореА PWM рдЪрд▓рд╛рдЙрди рд░ LEDs рдЬрдбрд╛рди рдЧрд░реНрди рдЬрд╛рдБрджреИрдЫреМрдВ, рдкрд┐рдирдЖрдЙрдЯ рд╣реЗрд░реМрдВ:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ

рдЪрд┐рдк рд╕рд╛рдиреЛ рдЫ, рдзреЗрд░реИ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдПрдЙрдЯреИ рдкрд┐рдирд╣рд░реВрдорд╛ рдирд┐рд▓рдореНрдмрд┐рдд рдЫрдиреНред рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХрдорд╛ рдХреЗ рдЫ "рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛" рд╣реЛ, рдпреЛ "рд╡рд┐рдХрд▓реНрдк рдмрд╛рдЗрдЯреНрд╕" рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рд┐рдЪ рдЧрд░рд┐рдПрдХреЛ рдЫ (рд╡рд┐рдХрд▓реНрдк рдмрд╛рдЗрдЯреНрд╕) - Atmega рдлреНрдпреВрдЬ рдЬрд╕реНрддреИ рдХреЗрд╣рд┐ред рддрдкрд╛рдИрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдкрдорд╛ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдорд╛рдирд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рддрд░ рдпреЛ рдЖрд╡рд╢реНрдпрдХ рдЫреИрди, рдХрд┐рдирднрдиреЗ рдирдпрд╛рдБ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд░рд┐рдмреБрдЯ рдкрдЫрд┐ рдорд╛рддреНрд░ рд╕рдХреНрд░рд┐рдп рд╣реБрдиреНрдЫред ST рднрд┐рдЬреБрдЕрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдЫ (рднрд┐рдЬреБрдЕрд▓ рд╡рд┐рдХрд╛рд╕рд╕рдБрдЧ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░рд┐рдПрдХреЛ), рдЬрд╕рд▓реЗ рдпреА рдмрд╛рдЗрдЯрд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдЫред рдкрд┐рдирдЖрдЙрдЯрд▓реЗ рджреЗрдЦрд╛рдЙрдБрдЫ рдХрд┐ рдкрд╣рд┐рд▓реЛ рдЯрд╛рдЗрдорд░рдХреЛ CH1 рд░ CH2 рдкрд┐рдирд╣рд░реВ рд╡рд░реНрдЧрд╛рдХрд╛рд░ рдХреЛрд╖реНрдардХрд╣рд░реВрдорд╛ рд▓реБрдХреЗрдХрд╛ рдЫрдиреН; STVP рдорд╛ AFR1 рд░ AFR0 рдмрд┐рдЯрд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рд░ рджреЛрд╕реНрд░реЛрд▓реЗ рдкрдирд┐ PD1 рдмрд╛рдЯ PC4 рдорд╛ рджреЛрд╕реНрд░реЛ рдЯрд╛рдЗрдорд░рдХреЛ CH5 рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрдиреЗрдЫред

рдпрд╕рд░реА, 6 рдкрд┐рдирд╣рд░реВрд▓реЗ рдПрд▓рдИрдбреАрд╣рд░реВ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрдиреЗрдЫрдиреН: PC6, PC7 рд░ PC3 рдкрд╣рд┐рд▓реЛ рдЯрд╛рдЗрдорд░рдХреЛ рд▓рд╛рдЧрд┐, PC5, PD3 рд░ PA3 рджреЛрд╕реНрд░реЛрдХреЛ рд▓рд╛рдЧрд┐ред

STM8 рдорд╛ I/O рдкрд┐рдирд╣рд░реВ рдЖрдлреИрдВ рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреБ STM32 рднрдиреНрджрд╛ рд╕рд░рд▓ рд░ рдЕрдзрд┐рдХ рддрд╛рд░реНрдХрд┐рдХ рдЫ:

  • Atmega DDR рдбрд╛рдЯрд╛ рджрд┐рд╢рд╛ рд░рдЬрд╕реНрдЯрд░рдмрд╛рдЯ рдкрд░рд┐рдЪрд┐рдд (рдбрд╛рдЯрд╛ рдирд┐рд░реНрджреЗрд╢рди рджрд░реНрддрд╛): 1 = рдЖрдЙрдЯрдкреБрдЯ;
  • рдкрд╣рд┐рд▓реЛ рдирд┐рдпрдиреНрддреНрд░рдг рджрд░реНрддрд╛ CR1, рдЬрдм рдЖрдЙрдЯрдкреБрдЯ рд╣реБрдиреНрдЫ, рдкреБрд╢-рдкреБрд▓ рдореЛрдб (1) рд╡рд╛ рдЦреБрд▓рд╛ рдирд╛рд▓реА (0) рд╕реЗрдЯ рдЧрд░реНрджрдЫ; рдореИрд▓реЗ LED рд▓рд╛рдИ рдЪрд┐рдкрдорд╛ рдХреНрдпрд╛рдереЛрдбрд╣рд░реВ рдЬрдбрд╛рди рдЧрд░реЗрдХреЛрд▓реЗ, рдо рдпрд╣рд╛рдБ рд╢реВрдиреНрдп рдЫреЛрдбреНрдЫреБ;
  • рджреЛрд╕реНрд░реЛ рдирд┐рдпрдиреНрддреНрд░рдг рджрд░реНрддрд╛ CR2, рдЬрдм рдЖрдЙрдЯрдкреБрдЯ, рдШрдбреА рдЧрддрд┐ рд╕реЗрдЯ рдЧрд░реНрджрдЫ: 1 = 10 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ

#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 рдбреНрдпреВрдЯреА рд╕рд╛рдЗрдХрд▓ - PWM рдбреНрдпреБрдЯреА рд╕рд╛рдЗрдХрд▓, рдЬрд╕рд▓рд╛рдИ рдкреНрд░рд╛рдпрдГ "рдбреНрдпреВрдЯреА рдХрд╛рд░рдХ" рднрдирд┐рдиреНрдЫ;
  • рдХреНрдпрд╛рдкреНрдЪрд░/рдорд╛рди рддреБрд▓рдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН - рдХреНрдпрд╛рдкреНрдЪрд░/рддреБрд▓рдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рди, рдЬрд╕рдорд╛ рдЯрд╛рдЗрдорд░рд▓реЗ рдЧрдгрдирд╛ рдЧрд░реЗрдХреЛ рдЫ рдХреЗрд╣рд┐ рдЧрд░реНрдиреЗрдЫ (PWM рдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдпрд╕рд▓реЗ рдЖрдЙрдЯрдкреБрдЯ рд╕рдВрдХреЗрддрд▓рд╛рдИ рдЙрд▓реНрдЯреЛ рдЧрд░реНрджрдЫ);
  • рдкреНрд░рд┐рд▓реЛрдб рдорд╛рди - рдкреНрд░рд┐рд▓реЛрдбреЗрдб рдорд╛рдиред рдореВрд▓реНрдп рддреБрд▓рдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЯрд╛рдЗрдорд░ рдЯрд┐рдХрд┐рд░рд╣реЗрдХреЛ рдмреЗрд▓рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрди, рдЕрдиреНрдпрдерд╛ PWM рдЪрдХреНрд░ рдмрд┐рдЧреНрд░рдиреНрдЫред рддрд╕рд░реНрде, рдирдпрд╛рдБ рдкреНрд░рд╕рд╛рд░рд┐рдд рдорд╛рдирд╣рд░реВ рдмрдлрд░рдорд╛ рд░рд╛рдЦрд┐рдиреНрдЫрдиреН рд░ рдмрд╛рд╣рд┐рд░ рдирд┐рдХрд╛рд▓рд┐рдиреНрдЫ рдЬрдм рдЯрд╛рдЗрдорд░ рдпрд╕рдХреЛ рдХрд╛рдЙрдиреНрдЯрдбрд╛рдЙрдирдХреЛ рдЕрдиреНрддреНрдпрдорд╛ рдкреБрдЧреНрдЫ рд░ рд░рд┐рд╕реЗрдЯ рд╣реБрдиреНрдЫ;
  • рдХрд┐рдирд╛рд░рд╛-рдкрдЩреНрдХреНрддрд┐рдмрджреНрдз ╨╕ рдХреЗрдиреНрджреНрд░рдорд╛ рдкрдЩреНрдХреНрддрд┐рдмрджреНрдз рдореЛрдбрд╣рд░реВ - рд╕рд┐рдорд╛рдирд╛рдорд╛ рд░ рдХреЗрдиреНрджреНрд░рдорд╛ рдкрдЩреНрдХреНрддрд┐рдмрджреНрдзрддрд╛, рдПрдЯрдореЗрд▓рдХреЛ рдЬрд╕реНрддреИ рджреНрд░реБрдд PWM ╨╕ рдЪрд░рдг-рд╕рд╣реА PWM.
  • OCiREF, рдЖрдЙрдЯрдкреБрдЯ рддреБрд▓рдирд╛ рд╕рдиреНрджрд░реНрдн рд╕рдВрдХреЗрдд - рд╕рдиреНрджрд░реНрдн рдЖрдЙрдЯрдкреБрдЯ рд╕рдВрдХреЗрдд, рд╡рд╛рд╕реНрддрд╡рдорд╛, PWM рдореЛрдбрдорд╛ рд╕рдореНрдмрдиреНрдзрд┐рдд рдкрд┐рдирдорд╛ рдХреЗ рджреЗрдЦрд┐рдиреНрдЫред

рдкрд┐рдирдЖрдЙрдЯрдмрд╛рдЯ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛, рджреБрдИ рдЯрд╛рдЗрдорд░рд╣рд░реВрд╕рдБрдЧ PWM рдХреНрд╖рдорддрд╛рд╣рд░реВ рдЫрдиреН - рдкрд╣рд┐рд▓реЛ рд░ рджреЛрд╕реНрд░реЛред рджреБрдмреИ 16-рдмрд┐рдЯ рд╣реБрдиреН, рдкрд╣рд┐рд▓реЛрдорд╛ рдзреЗрд░реИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдЫрдиреН (рд╡рд┐рд╢реЗрд╖ рдЧрд░реА, рдпрд╕рд▓реЗ рдорд╛рдерд┐ рд░ рддрд▓ рджреБрд╡реИ рдЧрдгрдирд╛ рдЧрд░реНрди рд╕рдХреНрдЫ)ред рд╣рд╛рдореА рджреБрд╡реИрд▓рд╛рдИ рд╕рдорд╛рди рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рддреНрдпрд╕реИрд▓реЗ рдореИрд▓реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдЧрд░рд┐рдм рджреЛрд╕реНрд░реЛрдХреЛ рд╕рд╛рде рд╕реБрд░реБ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВ, рддрд╛рдХрд┐ рддреНрдпрд╣рд╛рдБ рдирднрдПрдХреЛ рдХреБрд░рд╛ рдЧрд▓рдд рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдирдЧрд░реНрдиреБрд╣реЛрд╕реНред рдХреЗрд╣реА рд╕рдорд╕реНрдпрд╛ рдпреЛ рд╣реЛ рдХрд┐ рд╕рдиреНрджрд░реНрдн рдкреБрд╕реНрддрд┐рдХрд╛рдорд╛ рд╕рдмреИ рдЯрд╛рдЗрдорд░рд╣рд░реВрдХреЛ PWM рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдХреЛ рд╡рд░реНрдгрди рдкрд╣рд┐рд▓реЛ рдЯрд╛рдЗрдорд░ (17.5.7 PWM рдореЛрдб) рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЕрдзреНрдпрд╛рдпрдорд╛ рдЫ, рддреНрдпрд╕реИрд▓реЗ рддрдкрд╛рдИрдВрд▓реЗ рдХрд╛рдЧрдЬрд╛рддрдорд╛ рд╕рдмреИ рд╕рдордп рдЕрдЧрд╛рдбрд┐ рдкрдЫрд╛рдбрд┐ рд╣рд╛рдо рдлрд╛рд▓реНрдиреБрдкрд░реНрдЫред

STM8 рдорд╛ PWM рдХреЛ Atmega рдорд╛ PWM рднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдлрд╛рдЗрджрд╛ рдЫ:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
рд╕реАрдорд╛ рдкрдЩреНрдХреНрддрд┐рдмрджреНрдз PWM
рдЦрд╛рддрд╛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рддрд▓ рджреЗрдЦрд┐ рдорд╛рдерд┐ рд╕рдореНрдо
TIM_CR1 рджрд░реНрддрд╛рдорд╛ рд░рд╣реЗрдХреЛ DIR рдмрд┐рдЯ рдЦрд╛рд▓реА рднрдПрдорд╛ рддрд▓рдХреЛ рдЧрд┐рдирддреА рд╕рдХреНрд░рд┐рдп рд╣реБрдиреНрдЫ
рдЙрджрд╛рд╣рд░рдг:
рдЙрджрд╛рд╣рд░рдгрд▓реЗ рдкрд╣рд┐рд▓реЛ PWM рдореЛрдб рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред PWM рд╕рдиреНрджрд░реНрдн рд╕рдВрдХреЗрдд OCiREF TIM1_CNT < TIM1_CCRi рд╕рдореНрдо рдЙрдЪреНрдЪ рд░рд╛рдЦрд┐рдПрдХреЛ рдЫред рдЕрдиреНрдпрдерд╛, рдпрд╕рд▓реЗ рдирд┐рдореНрди рд╕реНрддрд░ рд▓рд┐рдиреНрдЫред рдпрджрд┐ TIM1_CCRi рджрд░реНрддрд╛рдХреЛ рддреБрд▓рдирд╛ рдорд╛рди рдЕрдЯреЛрд▓реЛрдб рдорд╛рди (TIM1_ARR рджрд░реНрддрд╛) рднрдиреНрджрд╛ рдареВрд▓реЛ рдЫ рднрдиреЗ, OCiREF рд╕рдВрдХреЗрдд 1 рдорд╛ рд░рд╛рдЦрд┐рдПрдХреЛ рдЫред рдпрджрд┐ рддреБрд▓рдирд╛ рдорд╛рди реж рд╣реЛ рднрдиреЗ, OCiREF рд▓рд╛рдИ рд╢реВрдиреНрдпрдорд╛ рд░рд╛рдЦрд┐рдиреНрдЫред...

STM8 рдЯрд╛рдЗрдорд░ рд╕рдордпрдорд╛ рдШрдЯрдирд╛ рдЕрдкрдбреЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдкрд╣рд┐рд▓реЗ рдЬрд╛рдБрдЪ рдЧрд░реНрджрдЫ рдореВрд▓реНрдп рддреБрд▓рдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдорд╛рддреНрд░ рдПрдХ рд╕рдиреНрджрд░реНрдн рд╕рдВрдХреЗрдд рдЙрддреНрдкрд╛рджрди рдЧрд░реНрджрдЫред Atmega рдХреЛ рдЯрд╛рдЗрдорд░ рдкрд╣рд┐рд▓реЗ рд╕реНрдХреНрд░реВ рд╣реБрдиреНрдЫ рд░ рддреНрдпрд╕рдкрдЫрд┐ рддреБрд▓рдирд╛ рдЧрд░реНрдЫ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк compare value == 0 рдЖрдЙрдЯрдкреБрдЯ рдПрдЙрдЯрд╛ рд╕реБрдИ рд╣реЛ, рдЬрд╕рд▓рд╛рдИ рдХреБрдиреИ рди рдХреБрдиреИ рд░реВрдкрдорд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реНрдиреБрдкрд░реНрдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдкрдорд╛ рддрд░реНрдХрд▓рд╛рдИ рдЙрд▓реНрдЯреЛ рдЧрд░реЗрд░)ред

рддреНрдпрд╕реЛрднрдП рд╣рд╛рдореА рдХреЗ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ: 8-рдмрд┐рдЯ PWM (AR == 255), рддрд▓ рджреЗрдЦрд┐ рдорд╛рдерд┐ рд╕рдореНрдо рдЧрдгрдирд╛ рдЧрд░реНрджреИ, рд╕рд┐рдорд╛рдирд╛ рд╕рдВрдЧ рдкрдЩреНрдХреНрддрд┐рдмрджреНрдзред рд▓рд╛рдЗрдЯ рдмрд▓реНрдмрд╣рд░реВ рдХреНрдпрд╛рдереЛрдбрд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдЪрд┐рдкрдорд╛ рдЬрдбрд╛рди рднрдПрдХрд╛рд▓реЗ, PWM рд▓реЗ реж (LED рдЕрди) рд╕рдореНрдо рдЖрдЙрдЯрдкреБрдЯ рдЧрд░реНрдиреБрдкрд░реНрдЫред рдореВрд▓реНрдп рддреБрд▓рдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ 1 рдкрдЫрд┐ред

рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдХреЗрд╣рд┐ рдмрд╛рд░реЗ рдкрдвреЗрдХрд╛ рдЫреМрдВ PWM рдореЛрдб, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореАрд▓реЗ рдпреЛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ (18.6.8 - TIMx_CCMR1) рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдиреНрджрд░реНрдн рдкреБрд╕реНрддрд┐рдХрд╛рдорд╛ рдЦреЛрдЬреА рдЧрд░реЗрд░ рджреЛрд╕реНрд░реЛ рдЯрд╛рдЗрдорд░рдХреЛ рдЖрд╡рд╢реНрдпрдХ рджрд░реНрддрд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдЫреМрдВ:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
110: рдкрд╣рд┐рд▓реЛ PWM рдореЛрдб - рддрд▓ рджреЗрдЦрд┐ рдорд╛рдерд┐ рд╕рдореНрдо рдЧрдгрдирд╛ рдЧрд░реНрджрд╛, рдкрд╣рд┐рд▓реЛ рдЪреНрдпрд╛рдирд▓ рд╕рдХреНрд░рд┐рдп рдЫ рдЬрдмрдХрд┐ TIMx_CNT < TIMx_CCR1ред рдЕрдиреНрдпрдерд╛, рдкрд╣рд┐рд▓реЛ рдЪреНрдпрд╛рдирд▓ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдЫред [рдЕрдЭреИ рдХрд╛рдЧрдЬрд╛рддрдорд╛ рдЯрд╛рдЗрдорд░ 1 рдмрд╛рдЯ рдЧрд▓рдд рдкреНрд░рддрд┐рд▓рд┐рдкрд┐-рдкреЗрд╕реНрдЯ рдЫ] 111: рджреЛрд╕реНрд░реЛ PWM рдореЛрдб - рддрд▓рдмрд╛рдЯ рдорд╛рдерд┐рд╕рдореНрдо рдЧрдгрдирд╛ рдЧрд░реНрджрд╛, рдкрд╣рд┐рд▓реЛ рдЪреНрдпрд╛рдирд▓ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдЫ рдЬрдмрдХрд┐ TIMx_CNT < TIMx_CCR1ред рдЕрдиреНрдпрдерд╛, рдкрд╣рд┐рд▓реЛ рдЪреНрдпрд╛рдирд▓ рд╕рдХреНрд░рд┐рдп рдЫред

LEDs MK рдорд╛ рдХреНрдпрд╛рдереЛрдбрд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдЬрдбрд╛рди рднрдПрдХреЛ рд╣реБрдирд╛рд▓реЗ, рджреЛрд╕реНрд░реЛ рдореЛрдбрд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рд╕реБрд╣рд╛рдЙрдБрдЫ (рдкрд╣рд┐рд▓реЛ рдкрдирд┐, рддрд░ рд╣рд╛рдореАрд▓рд╛рдИ рддреНрдпреЛ рдЕрдЭреИ рдерд╛рд╣рд╛ рдЫреИрди)ред

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
рдмрд┐рдЯ 3 OC1PE: рдкрд┐рди 1 рдкреНрд░рд┐рд▓реЛрдб рд╕рдХреНрд╖рдо рдЧрд░реНрдиреБрд╣реЛрд╕реН
реж: TIMx_CCR0 рдорд╛ рдкреНрд░рд┐рд▓реЛрдб рджрд░реНрддрд╛ рдЕрд╕рдХреНрд╖рдо рдЧрд░рд┐рдПрдХреЛ рдЫред рддрдкрд╛рдИрдВ рдХреБрдиреИ рдкрдирд┐ рд╕рдордп 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;

рджреЛрд╕реНрд░реЛ рдЯрд╛рдЗрдорд░рд▓реЗ рддрд▓рджреЗрдЦрд┐ рдорд╛рдерд┐рд╕рдореНрдо рдорд╛рддреНрд░ рдЧрдгрдирд╛ рдЧрд░реНрди рд╕рдХреНрдЫ, рд╕реАрдорд╛рдорд╛ рдкрдЩреНрдХреНрддрд┐рдмрджреНрдзрддрд╛, рдХреЗрд╣рд┐ рдкрдирд┐ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред рдлреНрд░рд┐рдХреНрд╡реЗрдиреНрд╕реА рдбрд┐рднрд╛рдЗрдбрд░ рд╕реЗрдЯ рдЧрд░реМрдВ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, реирелрем рдорд╛ред рджреЛрд╕реНрд░реЛ рдЯрд╛рдЗрдорд░рдХреЛ рд▓рд╛рдЧрд┐, рдбрд┐рднрд╛рдЗрдбрд░ TIM256_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: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ

#define TIM2_CR1   *(volatile uint8_t *)0x005300

TIM2_CR1 |= 1;

AnalogWrite() рдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдПрдирд╛рд▓рдЧ рд▓реЗрдЦреМрдВ, рдЬрд╕рд▓реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдирд╣рд░реВрд▓рд╛рдИ рддреБрд▓рдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЯрд╛рдЗрдорд░рдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрдиреЗрдЫред рджрд░реНрддрд╛рд╣рд░реВ рдЕрдиреБрдорд╛рдирд┐рдд рд░реВрдкрдорд╛ рдирд╛рдо рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреН рдХреНрдпрд╛рдкреНрдЪрд░ / рддреБрд▓рдирд╛ рджрд░реНрддрд╛рд╣рд░реВ, рддреНрдпрд╣рд╛рдБ рдкреНрд░рддреНрдпреЗрдХ рдЪреНрдпрд╛рдирд▓рдХреЛ рд▓рд╛рдЧрд┐ рддреА рдордзреНрдпреЗ рджреБрдИ рдЫрдиреН: TIM8_CCRxL рдорд╛ рдХрдо-рдЕрд░реНрдбрд░ 2 рдмрд┐рдЯрд╣рд░реВ рд░ 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 рдХреЛ рдЕрдзрд┐рдХрддрдо рдорд╛рдирдорд╛, рд╕рдВрдХреЗрдд рдПрдХ рдЯрд╛рдЗрдорд░ рдЪрдХреНрд░рдХреЛ рд▓рд╛рдЧрд┐ рдЙрд▓реНрдЯреЛ рд╣реБрдиреНрдЫ)ред LEDs рдХреЛ рд▓рд╛рдЧреА рдпреЛ рдлрд░рдХ рдкрд░реНрджреИрди, рд░ рдзреНрдпрд╛рди рджрд┐рдиреЗ рдкрд╛рдардХрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдпрд╕рд▓рд╛рдИ рдХрд╕рд░реА рдареАрдХ рдЧрд░реНрдиреЗ рдЕрдиреБрдорд╛рди рдЧрд░реНрди рд╕рдХреНрдЫред

рджреЛрд╕реНрд░реЛ рдЯрд╛рдЗрдорд░рдорд╛ PWM рдХрд╛рдо рдЧрд░реНрджрдЫ, рдкрд╣рд┐рд▓реЛрдорд╛ рдЬрд╛рдФрдВред

рдкрд╣рд┐рд▓реЛ рдЯрд╛рдЗрдорд░рдХреЛ рдПрдЙрдЯреИ рд░реЗрдЬрд┐рд╕реНрдЯрд░рд╣рд░реВрдорд╛ рдареНрдпрд╛рдХреНрдХреИ рдЙрд╕реНрддреИ рдмрд┐рдЯреНрд╕рд╣рд░реВ рдЫрдиреН (рдпреЛ рдорд╛рддреНрд░ рд╣реЛ рдХрд┐ рддреА рдмрд┐рдЯрд╣рд░реВ рдЬреБрди рджреЛрд╕реНрд░реЛ рдЯрд╛рдЗрдорд░рдорд╛ "рдЖрд░рдХреНрд╖рд┐рдд" рд░рд╣рдиреНрдЫрдиреН рд╕рдмреИ рдкреНрд░рдХрд╛рд░рдХрд╛ рдЙрдиреНрдирдд рдЪреАрдЬрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкрд╣рд┐рд▓реЛрдорд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ)ред рддреНрдпрд╕рдХрд╛рд░рдг, рдбрд╛рдЯрд╛рд╢реАрдЯрдорд╛ рдПрдЙрдЯреИ рджрд░реНрддрд╛рд╣рд░реВрдХреЛ рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд░ рдХреЛрдб рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрди рдкрд░реНрдпрд╛рдкреНрдд рдЫред рдареАрдХ рдЫ, рдлреНрд░рд┐рдХреНрд╡реЗрдиреНрд╕реА рдбрд┐рднрд╛рдЗрдбрд░рдХреЛ рдорд╛рди рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдХрд┐рдирднрдиреЗ ... рдкрд╣рд┐рд▓реЛ рдЯрд╛рдЗрдорд░ рджреБрдИрдХреЛ рдкрд╛рд╡рд░ рд╣реЛрдЗрди, рддрд░ рджреБрдИрд╡рдЯрд╛ рд░реЗрдЬрд┐рд╕реНрдЯрд░рд╣рд░реВрдорд╛ рдареНрдпрд╛рдХреНрдХреИ резрем-рдмрд┐рдЯ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫ Prescaler рдЙрдЪреНрдЪ ╨╕ рдХрдоред рд╣рд╛рдореА рд╕рдмреИ рдЧрд░реНрдЫреМрдВ рд░... рдкрд╣рд┐рд▓реЛ рдЯрд╛рдЗрдорд░рд▓реЗ рдХрд╛рдо рдЧрд░реНрджреИрдиред рдХреЗ рднрдпреЛ?

рдЯрд╛рдЗрдорд░ 1 рдХреЛ рдирд┐рдпрдиреНрддреНрд░рдг рджрд░реНрддрд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рд╕рдореНрдкреВрд░реНрдг рдЦрдгреНрдб рд╣реЗрд░реЗрд░ рдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдЬрд╣рд╛рдБ рд╣рд╛рдореА рджреЛрд╕реНрд░реЛ рдЯрд╛рдЗрдорд░рдорд╛ рдирднрдПрдХреЛ рдЦреЛрдЬреНрдЫреМрдВред рддреНрдпрд╣рд╛рдБ рд╣реБрдиреЗрдЫ 17.7.30 рдмреНрд░реЗрдХ рджрд░реНрддрд╛ (TIM1_BKR), рдЬрд╣рд╛рдБ рдпреЛ рдмрд┐рдЯ рдЫ:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
рдореБрдЦреНрдп рдЖрдЙрдЯрдкреБрдЯ рд╕рдХреНрд╖рдо рдЧрд░реНрдиреБрд╣реЛрд╕реН

#define TIM1_BKR   *(volatile uint8_t *)0x00526D

TIM1_BKR = (1<<7);

рддреНрдпреЛ рд╕рдмреИ рдЕрдм рдкрдХреНрдХрд╛ рдЫ, рдХреЛрдб рддреНрдпрд╣рд╛рдБ.

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ

STM8 рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдХреНрд╕

STM8 рдорд╛ рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдХреНрд╕рд┐рдЩ

рддреЗрд╕реНрд░реЛ рдорд┐рдиреА-рдкреНрд░реЛрдЬреЗрдХреНрдЯ PWM рдореЛрдбрдорд╛ рджреЛрд╕реНрд░реЛ рдЯрд╛рдЗрдорд░рдорд╛ рдЖрда RGB LEDs рдЬреЛрдбреНрдиреЗ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╡рд┐рднрд┐рдиреНрди рд░рдЩрд╣рд░реВ рджреЗрдЦрд╛рдЙрдиреЗ рдмрдирд╛рдЙрдиреБ рд╣реЛред рдпреЛ LED рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдХреНрд╕рд┐рдЩрдХреЛ рдЕрд╡рдзрд╛рд░рдгрд╛рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЫ, рдЬреБрди рдпреЛ рд╣реЛ рдХрд┐ рдпрджрд┐ рддрдкрд╛рдЗрдБ LEDs рд▓рд╛рдИ рдзреЗрд░реИ рдЪрд╛рдБрдбреИ рдЕрди рд░ рдЕрдл рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ, рдпреЛ рд╣рд╛рдореАрд▓рд╛рдИ рд▓рд╛рдЧреНрджрдЫ рдХрд┐ рддрд┐рдиреАрд╣рд░реВ рдирд┐рд░рдиреНрддрд░ рд╕рдХреНрд░рд┐рдп рдЫрдиреН (рджреГрд╖реНрдЯрд┐ рдХреЛ рджреГрдврддрд╛, рджреГрд╢реНрдп рдзрд╛рд░рдгрд╛ рдХреЛ рдЬрдбрддреНрд╡)ред рдореИрд▓реЗ рдПрдХ рдкрдЯрдХ рдЧрд░реЗрдВ Arduino рдорд╛ рдпреЛ рдЬрд╕реНрддреИ рдХреЗрд╣рд┐.

рдХрд╛рдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

  • рдкрд╣рд┐рд▓реЛ RGB LED рдХреЛ рдПрдиреЛрдб рдЬрдбрд╛рди рдЧрд░рд┐рдпреЛ;
  • рдпрд╕рд▓рд╛рдИ рдЬрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН, рдХреНрдпрд╛рдереЛрдбрд╣рд░реВрдорд╛ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдХреЗрддрд╣рд░реВ рдкрдард╛рдЙрдБрджреИ;
  • PWM рдЪрдХреНрд░рдХреЛ рдЕрдиреНрддреНрдп рд╕рдореНрдо рдкрд░реНрдЦрд┐рдпреЛ;
  • рджреЛрд╕реНрд░реЛ RGB LED рдХреЛ рдПрдиреЛрдб рдЬрдбрд╛рди рдЧрд░рд┐рдпреЛ;
  • рдЬрд▓рд╛рдП...

рдЦреИрд░, рдЖрджрд┐ред рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рд╕реБрдиреНрджрд░ рдЕрдкрд░реЗрд╢рдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдиреЛрдб рдЬрдбрд╛рди рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ LED рдПрдХреИ рд╕рдордпрдорд╛ "рдкреНрд░рдЬреНрд╡рд▓рд┐рдд" рд╣реБрдиреБ рдЖрд╡рд╢реНрдпрдХ рдЫред рдареАрдХ рдЫ, рд╡рд╛ рд▓рдЧрднрдЧред рдЬреЗ рднрдП рдкрдирд┐, рд╣рд╛рдореАрд▓реЗ рдХреЛрдб рд▓реЗрдЦреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдЬреБрди рджреЛрд╕реНрд░реЛ рдЯрд╛рдЗрдорд░рдХреЛ рддреАрди рдЪреНрдпрд╛рдирд▓рд╣рд░реВрдорд╛ рдорд╛рдирд╣рд░реВ рдЖрдЙрдЯрдкреБрдЯ рдЧрд░реНрджрдЫ, UEV рдкреБрдЧреНрджрд╛ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд░ рдПрдХреИ рд╕рдордпрдорд╛ рд╣рд╛рд▓ рд╕рдХреНрд░рд┐рдп RGB LED рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред

LED рд╕реНрд╡рд┐рдЪрд┐рдЩ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рднрдПрдХреЛрд▓реЗ, рд╣рд╛рдореАрд▓реЗ "рднрд┐рдбрд┐рдпреЛ рдореЗрдореЛрд░реА" рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдЬрд╕рдмрд╛рдЯ рдЕрд╡рд░реЛрдз рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд▓реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫред рдпреЛ рдПрдХ рд╕рд░рд▓ рдПрд░реЗ рд╣реЛ:

uint8_t colors[8][3];

рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ LED рдХреЛ рд░рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА, рдпреЛ рдПрд░реЗ рдорд╛ рдЖрд╡рд╢реНрдпрдХ рдорд╛рдирд╣рд░реБ рд▓реЗрдЦреНрди рдкрд░реНрдпрд╛рдкреНрдд рд╣реБрдиреЗрдЫред рд░ рдЪрд░ рд╕рдХреНрд░рд┐рдп рдПрд▓рдИрдбреА рдХреЛ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд▓рд╛рдЧреА рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рд╣реБрдиреЗрдЫ

uint8_t cnt;

рдбреЗрдордХреНрд╕

рдЙрдЪрд┐рдд рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдХреНрд╕рд┐рдЩрдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓рд╛рдИ рдЕрдЪрдореНрдордХреЛ рд░реВрдкрдорд╛, рдПрдХ CD74HC238 demultiplexer рдЪрд╛рд╣рд┐рдиреНрдЫред Demultiplexer - рдПрдХ рдЪрд┐рдк рдЬрд╕рд▓реЗ рдЕрдкрд░реЗрдЯрд░рд▓рд╛рдИ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░рдорд╛ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫ <<ред рддреАрдирд╡рдЯрд╛ рдЗрдирдкреБрдЯ рдкрд┐рдирд╣рд░реВ (рдмрд┐рдЯреНрд╕ реж, рез рд░ реи) рдорд╛рд░реНрдлрдд рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рддреАрди-рдмрд┐рдЯ рдирдореНрдмрд░ X рдлрд┐рдб рдЧрд░реНрдЫреМрдВ, рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдорд╛ рдпрд╕рд▓реЗ рдЖрдЙрдЯрдкреБрдЯ рдирдореНрдмрд░ рд╕рдХреНрд░рд┐рдп рдЧрд░реНрджрдЫ (1<<X)ред рдЪрд┐рдкрдХреЛ рдмрд╛рдБрдХреА рдЗрдирдкреБрдЯрд╣рд░реВ рд╕рдореНрдкреВрд░реНрдг рдбрд┐рдЬрд╛рдЗрди рдорд╛рдкрди рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рд╣рд╛рдореАрд▓рд╛рдИ рдпреЛ рдЪрд┐рдк рдорд╛рдЗрдХреНрд░реЛрдХрдиреНрдЯреНрд░реЛрд▓рд░рдХреЛ рдУрдЧрдЯреЗрдб рдкрд┐рдирдХреЛ рд╕рдВрдЦреНрдпрд╛ рдШрдЯрд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ рд╣реЛрдЗрди, рд╕реБрд░рдХреНрд╖рд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкрдирд┐ рдЪрд╛рд╣рд┐рдиреНрдЫ - рддрд╛рдХрд┐ рд╕рдВрдпреЛрдЧрд╡рд╢ рд╕рдореНрднрд╡рднрдиреНрджрд╛ рдмрдвреА LEDs рдЕрди рдЧрд░реНрди рдирдкрд░реЛрд╕реН рд░ MK рдЬрд▓рд╛рдЙрди рдирдкрд░реЛрд╕реНред рдЪрд┐рдк рдПрдХ рдкреИрд╕рд╛ рдЦрд░реНрдЪ рд╣реБрдиреНрдЫ рд░ рд╕рдзреИрдВ рдЖрдлреНрдиреЛ рдШрд░ рдФрд╖рдзрд┐ рдХреНрдпрд╛рдмрд┐рдиреЗрдЯ рдорд╛ рд░рд╛рдЦреНрдиреБ рдкрд░реНрдЫред

рд╣рд╛рдореНрд░реЛ CD74HC238 рд╡рд╛рдВрдЫрд┐рдд LED рдХреЛ рдПрдиреЛрдбрдорд╛ рднреЛрд▓реНрдЯреЗрдЬ рдЖрдкреВрд░реНрддрд┐ рдЧрд░реНрди рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рд╣реБрдиреЗрдЫред рдкреВрд░реНрдг рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдХреНрд╕рдорд╛, рдпрд╕рд▓реЗ P-MOSFET рдорд╛рд░реНрдлрдд рд╕реНрддрдореНрднрдорд╛ рднреЛрд▓реНрдЯреЗрдЬ рдЖрдкреВрд░реНрддрд┐ рдЧрд░реНрдиреЗрдЫ, рддрд░ рдпрд╕ рдбреЗрдореЛрдорд╛ рдпреЛ рдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдкрдорд╛ рд╕рдореНрднрд╡ рдЫ, рдХрд┐рдирднрдиреЗ рдпреЛ рдЕрдиреБрд╕рд╛рд░, 20 mA рдЖрдХрд░реНрд╖рд┐рдд рдЧрд░реНрджрдЫ рдирд┐рд░рдкреЗрдХреНрд╖ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдбрд╛рдЯрд╛рд╢реАрдЯрдорд╛ред рдмрд╛рдЯ рдбрд╛рдЯрд╛рд╢реАрдЯ CD74HC238 рд╣рд╛рдореАрд▓рд╛рдИ pinouts рд░ рдпреЛ рдзреЛрдЦрд╛ рдкрд╛рдирд╛ рдЪрд╛рд╣рд┐рдиреНрдЫ:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
H = рдЙрдЪреНрдЪ рднреЛрд▓реНрдЯреЗрдЬ рд╕реНрддрд░, L = рдХрдо рднреЛрд▓реНрдЯреЗрдЬ рд╕реНрддрд░, X - рд╡рд╛рд╕реНрддрд╛ рдирдЧрд░реНрдиреБрд╣реЛрд╕реН

рд╣рд╛рдореА E2 рд░ E1 рд▓рд╛рдИ рдЧреНрд░рд╛рдЙрдиреНрдбрдорд╛, E3, A0, A1 рд░ A3 рд▓рд╛рдИ STM5 рдХреЛ PD3, PC4, PC5 рд░ PC8 рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрдЫреМрдВред рдорд╛рдерд┐рдХреЛ рддрд╛рд▓рд┐рдХрд╛рд▓реЗ рдирд┐рдореНрди рд░ рдЙрдЪреНрдЪ рд╕реНрддрд░рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реЗрдХреЛ рд╣реБрдирд╛рд▓реЗ, рд╣рд╛рдореА рдпреА рдкрд┐рдирд╣рд░реВрд▓рд╛рдИ рдкреБрд╢-рдкреБрд▓ рдкрд┐рдирдХреЛ рд░реВрдкрдорд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдЫреМрдВред

рд╢рд┐рдо

рджреЛрд╕реНрд░реЛ рдЯрд╛рдЗрдорд░рдорд╛ PWM рдЕрдШрд┐рд▓реНрд▓реЛ рдХрдерд╛рдорд╛ рдЬрд╕реНрддреИ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫ, рджреБрдИ рднрд┐рдиреНрдирддрд╛рд╣рд░реВрд╕рдБрдЧ:

рдкрд╣рд┐рд▓реЗ, рд╣рд╛рдореАрд▓реЗ рдЕрд╡рд░реЛрдз рд╕рдХреНрд░рд┐рдп рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдШрдЯрдирд╛ рдЕрдкрдбреЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН (UEV) рдЬрд╕рд▓реЗ рд╕рдХреНрд░рд┐рдп LED рд▓рд╛рдИ рдЯрдЧрд▓ рдЧрд░реНрдиреЗ рдкреНрд░рдХрд╛рд░реНрдпрд▓рд╛рдИ рдХрд▓ рдЧрд░реНрдиреЗрдЫред рдпреЛ рдмрд┐рдЯ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реЗрд░ рдЧрд░рд┐рдиреНрдЫ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЕрд╡рд░реЛрдз рд╕рдХреНрд╖рдо рдЧрд░реНрдиреБрд╣реЛрд╕реН рдПрдЙрдЯрд╛ рдирд╛рдордХреЛ рд╕рд╛рде рджрд░реНрддрд╛рдорд╛

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
рдЕрд╡рд░реЛрдз рд╕рдХреНрд╖рдо рджрд░реНрддрд╛

#define TIM2_IER   *(volatile uint8_t *)0x005303

//enable interrupt
TIM2_IER = 1;

рджреЛрд╕реНрд░реЛ рднрд┐рдиреНрдирддрд╛ рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдХреНрд╕рд┐рдЩрдХреЛ рдШрдЯрдирд╛рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫ, рдЬрд╕реНрддреИ ghosting - рдбрд╛рдпреЛрдбрдХреЛ рдкрд░рдЬреАрд╡реА рдЪрдордХред рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдпреЛ рддрдереНрдпрдХреЛ рдХрд╛рд░рдгрд▓реЗ рджреЗрдЦрд╛ рдкрд░реНрди рд╕рдХреНрдЫ рдХрд┐ рдЯрд╛рдЗрдорд░рд▓реЗ UEV рдорд╛ рдЕрд╡рд░реЛрдзрдХреЛ рдХрд╛рд░рдгрд▓реЗ рдЧрд░реНрджрд╛, рдЯрд┐рдХ рдЧрд░реНрди рдЬрд╛рд░реА рд░рд╛рдЦреНрдЫ, рд░ рдЯрд╛рдЗрдорд░рд▓реЗ рдкрд┐рдирдорд╛ рдХреЗрд╣рд┐ рд▓реЗрдЦреНрди рд╕реБрд░реБ рдЧрд░реНрдиреБ рдЕрдШрд┐ рдЕрд╡рд░реЛрдз рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╕рдБрдЧ LED рд╕реНрд╡рд┐рдЪ рдЧрд░реНрди рд╕рдордп рд╣реБрдБрджреИрдиред рдпрд╕рд╕рдБрдЧ рд▓рдбреНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рддрд░реНрдХрд▓рд╛рдИ рдЙрд▓реНрдЯрд╛рдЙрдиреБ рдкрд░реНрдЫ (0 = рдЕрдзрд┐рдХрддрдо рдЪрдордХ, 255 = рдХреЗрд╣рд┐ рдкрдирд┐ рдЬрд▓рд╛рдЗрдПрдХреЛ рдЫреИрди) рд░ рдЪрд░рдо рдХрд░реНрддрд╡реНрдп рдЪрдХреНрд░ рдорд╛рдирд╣рд░реВ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрдиреБрдкрд░реНрдЫред рддреАред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ UEV рдкрдЫрд┐ LEDs рдПрдХ PWM рдЪрдХреНрд░рдХреЛ рд▓рд╛рдЧрд┐ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреНрдЫред

рдзреНрд░реБрд╡рддрд╛ рдкрд░рд┐рд╡рд░реНрддрди:

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

r, g рд░ b рд▓рд╛рдИ 255 рдорд╛ рд╕реЗрдЯ рдирдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ рдЙрд▓реНрдЯреЛ рдЧрд░реНрди рдирдмрд┐рд░реНрд╕рдиреБрд╣реЛрд╕реНред

рдЕрд╡рд░реЛрдз рдЧрд░реНрдЫ

рдЕрд╡рд░реЛрдзрдХреЛ рд╕рд╛рд░ рдпреЛ рд╣реЛ рдХрд┐ рдХреЗрд╣рд┐ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рд╣рд░реВрдорд╛ рдЪрд┐рдкрд▓реЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рд░реЛрдХреНрдЫ рд░ рдХреЗрд╣рд┐ рдмрд╛рд╣реНрдп рдкреНрд░рдХрд╛рд░реНрдп рдХрд▓ рдЧрд░реНрджрдЫред рдЯрд╛рдЗрдорд░ рд╕рд╣рд┐рдд рдмрд╛рд╣реНрдп рд╡рд╛ рдЖрдиреНрддрд░рд┐рдХ рдкреНрд░рднрд╛рд╡рд╣рд░реВрдХреЛ рдХрд╛рд░рдгрд▓реЗ рдЕрд╡рд░реЛрдзрд╣рд░реВ рд╣реБрдиреНрдЫрдиреНред

рдЬрдм рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ рдПрд╕рдЯреА рднрд┐рдЬреБрдЕрд▓ рдбреЗрднрд▓рдкрдорд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдпреМрдВ, рдпрд╕рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд main.c рд╣рд╛рдореАрд▓реЗ рд░рд╣рд╕реНрдпрдордп рдлрд╛рдЗрд▓рдХреЛ рд╕рд╛рде рдПрдЙрдЯрд╛ рд╡рд┐рдиреНрдбреЛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдпреМрдВ stm8_interrupt_vector.c, рд╕реНрд╡рддрдГ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдорд╛ рд╕рдорд╛рд╡реЗрд╢ред рдпрд╕ рдлрд╛рдЗрд▓рдорд╛, рдкреНрд░рддреНрдпреЗрдХ рдЕрд╡рд░реЛрдзрд▓рд╛рдИ рдПрдХ рдкреНрд░рдХрд╛рд░реНрдп рддреЛрдХрд┐рдПрдХреЛ рдЫ NonHandledInterruptред рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рдХрд╛рд░реНрдпрд▓рд╛рдИ рдЗрдЪреНрдЫрд┐рдд рдЕрд╡рд░реЛрдзрдорд╛ рдмрд╛рдБрдзреНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

рдбрд╛рдЯрд╛рд╢реАрдЯрдорд╛ рдЕрд╡рд░реЛрдз рднреЗрдХреНрдЯрд░рд╣рд░реВрдХреЛ рддрд╛рд▓рд┐рдХрд╛ рдЫ, рдЬрд╣рд╛рдБ рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗрд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдЫреМрдВ:

рдбреЗрдЯрд╛рд╕рд┐рдЯрд╣рд░реВ рдкрдвреНрджреИ 2: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ
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: STM32 рдорд╛ SPI; STM8 рдорд╛ PWM, рдЯрд╛рдЗрдорд░ рд░ рдЕрд╡рд░реЛрдзрд╣рд░реВ

рдпрджрд┐ рдХрдо рд╕реЗ рдХрдо рдХрд╕реИрд▓рд╛рдИ рдпреЛ рд▓реЗрдЦ рдЙрдкрдпреЛрдЧреА рд▓рд╛рдЧреНрдпреЛ рднрдиреЗ, рддрдм рдореИрд▓реЗ рдпреЛ рд╡реНрдпрд░реНрдердорд╛ рд▓реЗрдЦреЗрдХреЛ рдЫреИрдиред рдо рдЯрд┐рдкреНрдкрдгреА рд░ рдЯрд┐рдкреНрдкрдгреАрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЦреБрд╕реА рд╣реБрдиреЗрдЫреБ, рдо рд╕рдмреИ рдЬрд╡рд╛рдл рджрд┐рдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреЗрдЫреБред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди