рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ

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

рдЖрдЬ рдореИрдВ рдЖрдкрдХреЛ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ STM32 (рдмреНрд▓реВ рдкрд┐рд▓) рдФрд░ STM8 рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдкрд░ рдХрд╛рдлреА рд╕рд░рд▓, рд▓реЗрдХрд┐рди рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рд╢реАрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред рд╕рднреА рдбреЗрдореЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрд░реА рдкрд╕рдВрджреАрджрд╛ рдПрд▓рдИрдбреА рдХреЛ рд╕рдорд░реНрдкрд┐рдд рд╣реИрдВ, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЬрд▓рд╛рдПрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдкрд╛рда рдлрд┐рд░ рд╕реЗ рдмрдбрд╝рд╛ рд╣реЛ рдЧрдпрд╛, рдЗрд╕рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдореИрдВ рд╕рд╛рдордЧреНрд░реА рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ:

STM32 рдмреНрд▓реВ рдкрд┐рд▓: DM16 рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд╕рд╛рде 634 рдПрд▓рдИрдбреА
рдПрд╕рдЯреАрдПрдо8: рдЫрд╣ рдкреАрдбрдмреНрд▓реВрдПрдо рдкрд┐рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛
рдПрд╕рдЯреАрдПрдо8: рддреАрди рдкрд┐рдиреЛрдВ рдкрд░ 8 рдЖрд░рдЬреАрдмреА рдПрд▓рдИрдбреА, рд╡реНрдпрд╡рдзрд╛рди

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

рдЗрд╕ рдЖрд▓реЗрдЦ рдХрд╛ рдлреЛрдХрд╕ рдбреЗрдЯрд╛рд╢реАрдЯ рдкрд░ рд╣реИ, рди рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░, рдЗрд╕рд▓рд┐рдП рдХреЛрдб рдмрд╣реБрдд рд╕рд╛рдл-рд╕реБрдерд░рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрдХреНрд╕рд░ рддрдВрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╕реНрд╡рдпрдВ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдирдИ рдЪрд┐рдк рд╕реЗ рдкрд╣рд▓реА рдмрд╛рд░ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореЗрд░рд╛ рд▓реЗрдЦ рд╢реМрдХ рдореЗрдВ рдбреВрдмрдиреЗ рдХреЗ рд╕рдорд╛рди рдЪрд░рдг рдореЗрдВ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред

рдПрд╕рдЯреАрдПрдорежрезрем

DM16 рдФрд░ SPI рдХреЗ рд╕рд╛рде 634 рдПрд▓рдИрдбреА

рдмреНрд▓реВ рдкрд┐рд▓ (STM32F103C8T6) рдФрд░ DM634 LED рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЫреЛрдЯрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯред рдбреЗрдЯрд╛рд╢реАрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдбреНрд░рд╛рдЗрд╡рд░, рдПрд╕рдЯреАрдПрдо рдЖрдИрдУ рдкреЛрд░реНрдЯ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ рдФрд░ рдПрд╕рдкреАрдЖрдИ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВрдЧреЗред

DM634

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

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

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ
рдбреАрд╕реА рд╕рд┐рдВрдХ рд╕реНрд░реЛрдд (рдЦреБрд▓реА рдирд╛рд▓реА)

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

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ
рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдВрдЯ рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП REXT рдФрд░ GND рдХреЗ рдмреАрдЪ рдмрд╛рд╣рд░реА рдкреНрд░рддрд┐рд░реЛрдзрдХ

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

рдЪрд┐рдк рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдбрд┐рд╡рд╛рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╡рд┐рд╡рд░рдг рджреЗрдЦреЗрдВ:

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ

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

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ
... рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рддреАрди рдкрд┐рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред SCLK рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рдмрдврд╝рддрд╛ рдХрд┐рдирд╛рд░рд╛ рдбреЗрдЯрд╛ рдХреЛ SIN рдкрд┐рди рд╕реЗ рдЖрдВрддрд░рд┐рдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджреЗрддрд╛ рд╣реИред рд╕рднреА рдбреЗрдЯрд╛ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рдЫреЛрдЯрд╛ рдЙрдЪреНрдЪ XLAT рд╕рд┐рдЧреНрдирд▓ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдЖрдВрддрд░рд┐рдХ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред рдЖрдВрддрд░рд┐рдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдПрдХреНрд╕рдПрд▓рдПрдЯреА рд╕рд┐рдЧреНрдирд▓ рд╕реНрддрд░ рджреНрд╡рд╛рд░рд╛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдЧреЗрдЯ рд╣реИрдВред рд╕рднреА рдбреЗрдЯрд╛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреБрдВрдбреА тАУ рдХреБрдВрдбреА/рдХреБрдВрдбреА/рддрд╛рд▓рд╛ред
рдмрдврд╝рддрд╛ рдХрд┐рдирд╛рд░рд╛ - рдирд╛рдбрд╝реА рдХрд╛ рдЕрдЧреНрд░рдгреА рдХрд┐рдирд╛рд░рд╛
рдПрдордПрд╕рдмреА рдкрд╣рд▓реЗ - рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг (рд╕рдмрд╕реЗ рдмрд╛рдпрд╛рдВ) рдмрд┐рдЯ рдЖрдЧреЗред
рдбреЗрдЯрд╛ рдХреНрд▓реЙрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдбреЗрдЯрд╛ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░реЗрдВ (рдмрд┐рдЯ рджрд░ рдмрд┐рдЯ)ред

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

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

рддреЛ, DM634 рдореЗрдВ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: DAI рдЗрдирдкреБрдЯ рдХреЛ рджреВрд░ рдПрд▓рдИрдбреА рдХреЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯ рдХреЗ рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ, DCK рдХреЛ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рдЦреАрдВрдЪреЗрдВ; DAI рдЗрдирдкреБрдЯ рдХреЛ рдЕрдЧрд▓реЗ рдмрд┐рдЯ рдХреЗ рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ, DCK рдЦреАрдВрдЪреЗрдВ; рдФрд░ рдЗрд╕реА рддрд░рд╣ рдЬрдм рддрдХ рд╕рднреА рдмрд┐рдЯреНрд╕ рдкреНрд░рд╕рд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреЗ (рдШрдбрд╝реА рдореЗрдВ), рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдо LAT рдЦреАрдВрдЪрддреЗ рд╣реИрдВред рдпрд╣ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдмрд┐рдЯ рдзрдорд╛рдХреЗ), рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП SPI рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ STM32 рдкрд░ рджреЛ рдкреНрд░рддрд┐рдпреЛрдВ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

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

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

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг: рдмреНрд▓реВ рдкрд┐рд▓ рд▓реЛрдХрдкреНрд░рд┐рдп STM32F103C8T6 рдЪрд┐рдк рд╕реЗ рд╕реБрд╕рдЬреНрдЬрд┐рдд рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рджреЛ рдЙрдкрдпреЛрдЧреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣реИрдВ:

рдбреЗрдЯрд╛рд╢реАрдЯ рдореЗрдВ рд╣рдорд╛рд░реА рд░реБрдЪрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ:

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

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ
рдзреНрдпрд╛рди рджреЗрдВ: рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдЪрд┐рддреНрд░ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдереА, рдЬрд┐рд╕реЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдиреЛрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рддрд╕реНрд╡реАрд░ рдмрджрд▓ рджреА рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╕рдмрдХ рд╣реИ - рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдбреЗрдЯрд╛рд╢реАрдЯ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдВрдЪрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

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

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

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

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ
рдЦреБрд▓реА рдирд╛рд▓реА, рдкреБрд╢-рдкреБрд▓, рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреБрд╢-рдкреБрд▓, рд╡реИрдХрд▓реНрдкрд┐рдХ рдЦреБрд▓реА рдирд╛рд▓реА

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

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ
рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ
рдЖрдЙрдЯрдкреБрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди / рдЬрдм рдкреЛрд░реНрдЯ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛рддрд╛ рд╣реИ: / рдЖрдЙрдЯрдкреБрдЯ рдмрдлрд░ рд╕рдХреНрд╖рдо: / - рдУрдкрди рдбреНрд░реЗрди рдореЛрдб: рдЖрдЙрдЯрдкреБрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ "0" рдПрди-рдПрдордУрдПрд╕ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ, рдЖрдЙрдЯрдкреБрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ "1" рдкреЛрд░реНрдЯ рдХреЛ рд╣рд╛рдИ-рдЬреЗрдб рдореЛрдб рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ ( рдкреА-рдПрдордУрдПрд╕ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ)/- рдкреБрд╢-рдкреБрд▓ рдореЛрдб: рдЖрдЙрдЯрдкреБрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ "0" рдПрди-рдПрдордУрдПрд╕ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИ, рдЖрдЙрдЯрдкреБрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ "1" рдкреА-рдПрдордУрдПрд╕ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИред

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

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

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

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

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ
рдпрджрд┐ рдПрдХрд╛рдзрд┐рдХ рдкрд░рд┐рдзреАрдп рдПрдХ рд╣реА рдкрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдШрд░реНрд╖ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкрд░рд┐рдзреАрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдкрд░рд┐рдзреАрдп рдШрдбрд╝реА рд╕рдХреНрд╖рдо рдмрд┐рдЯ (рдЙрдкрдпреБрдХреНрдд рдЖрд░рд╕реАрд╕реА рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреЙрдЧрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рддреЛ: рд╣рдо рдПрд╕рдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рджреЛ рдкрд┐рди (рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдФрд░ рдПрдХ рдШрдбрд╝реА рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд╕рд╛рде) "рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреБрд╢-рдкреБрд▓ рдлрд╝рдВрдХреНрд╢рди" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рджреВрд╕рд░рд╛ (рдПрд▓рдПрдЯреА) "рдирд┐рдпрдорд┐рдд рдкреБрд╢-рдкреБрд▓" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдПрд╕рдкреАрдЖрдИ рд╕реЗ рдирд┐рдкрдЯреЗрдВред

SPI

рдПрдХ рдФрд░ рдЫреЛрдЯрд╛ рд╢реИрдХреНрд╖рдгрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо

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

  • MOSI, рдорд╛рд╕реНрдЯрд░ рдЖрдЙрдЯрдкреБрдЯ / рд╕реНрд▓реЗрд╡ рдЗрдирдкреБрдЯ: рдпрд╣ рдкрд┐рди рдорд╛рд╕реНрдЯрд░ рдореЛрдб рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕реНрд▓реЗрд╡ рдореЛрдб рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ;
  • рдПрдордЖрдИрдПрд╕рдУ, рдорд╛рд╕реНрдЯрд░ рдЗрдирдкреБрдЯ/рд╕реНрд▓реЗрд╡ рдЖрдЙрдЯрдкреБрдЯ: рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╕реНрд▓реЗрд╡ рдореЗрдВ рд╕рдВрдЪрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ;
  • рдПрд╕рд╕реАрдХреЗ, рд╕реАрд░рд┐рдпрд▓ рдХреНрд▓реЙрдХ: рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреА рдЖрд╡реГрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╕реНрд▓реЗрд╡ рдореЗрдВ рдХреНрд▓реЙрдХ рд╕рд┐рдЧреНрдирд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдзрдбрд╝рдХрдиреЗрдВ рдорд╛рд░рдирд╛;
  • рдПрд╕рдПрд╕, рд╕реНрд▓реЗрд╡ рд╕рд┐рд▓реЗрдХреНрдЯ: рдЗрд╕ рдЪреИрдирд▓ рдХреА рдорджрдж рд╕реЗ рдЧреБрд▓рд╛рдо рдХреЛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕рд╕реЗ рдХреБрдЫ рдЪрд╛рд╣рд╛ рдЧрдпрд╛ рд╣реИред рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдЗрд╕реЗ рдПрдирдПрд╕рдПрд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдПрди = рдирдХрд╛рд░рд╛рддреНрдордХ, рдпрд╛рдиреАред рдпрджрд┐ рдЗрд╕ рдЪреИрдирд▓ рдореЗрдВ рдЬрдореАрди рд╣реИ рддреЛ рдирд┐рдпрдВрддреНрд░рдХ рдЧреБрд▓рд╛рдо рдмрди рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдУрдкрди рдбреНрд░реЗрди рдЖрдЙрдЯрдкреБрдЯ рдореЛрдб рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдХрд╣рд╛рдиреА рд╣реИред

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

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ
рдЗрд╕ рдореЛрдб рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди SPI рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╛ рддреЛ рдЯреНрд░рд╛рдВрд╕рдорд┐рдЯ-рдУрдирд▓реА рдпрд╛ рд░рд┐рд╕реАрд╡-рдУрдирд▓реА рдореЛрдб рдореЗрдВ рдХрд░рддрд╛ рд╣реИред / рдЯреНрд░рд╛рдВрд╕рдорд┐рдЯ-рдУрдирд▓реА рдореЛрдб рдбреБрдкреНрд▓реЗрдХреНрд╕ рдореЛрдб рдХреЗ рд╕рдорд╛рди рд╣реИ: рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдорд┐рдЯ рдкрд┐рди (рдорд╛рд╕реНрдЯрд░ рдореЛрдб рдореЗрдВ MOSI рдпрд╛ рд╕реНрд▓реЗрд╡ рдореЛрдб рдореЗрдВ MISO) рдкрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рд╛рдкреНрдд рдкрд┐рди (рдХреНрд░рдорд╢рдГ MISO рдпрд╛ MOSI) рдХреЛ рдирд┐рдпрдорд┐рдд I/O рдкрд┐рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ . рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреЗрд╡рд▓ рдЖрд░рдПрдХреНрд╕ рдмрдлрд░ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдпрджрд┐ рдЗрд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд╣рд╛рдВ рдХреЛрдИ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛)ред

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

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ
рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдирд┐рдпрдВрддреНрд░рдг рдПрдирдПрд╕рдПрд╕ (рдПрд╕рдПрд╕рдПрдо = 1) / рд╕реНрд▓реЗрд╡ рдЪрдпрди рдЬрд╛рдирдХрд╛рд░реА SPI_CR1 рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рдПрд╕рдПрд╕рдЖрдИ рдмрд┐рдЯ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдмрд╛рд╣рд░реА рдПрдирдПрд╕рдПрд╕ рдкрд┐рди рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдГрд╢реБрд▓реНрдХ рд░рд╣рддрд╛ рд╣реИред

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

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ

рдЦреИрд░, рдЖрдЗрдпреЗ рд╢реБрд░реВ рдХрд░реЗрдВ:

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

рд╕реНрд╡-рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рд╢реАрд░реНрд╖рдХ "рдорд╛рд╕реНрдЯрд░ рдореЛрдб рдореЗрдВ рдПрд╕рдкреАрдЖрдИ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛" рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╛рдЧ 25.3.3 рдЦреЛрд▓реЗрдВ:

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ

1. SPI_CR2 рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдмрд┐рдЯреНрд╕ BR[0:1] рдХреЗ рд╕рд╛рде рд╕реАрд░рд┐рдпрд▓ рдХреНрд▓реЙрдХ рдлрд╝реНрд░реАрдХреНрд╡реЗрдВрд╕реА рд╕реЗрдЯ рдХрд░реЗрдВред

рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рдЙрд╕реА рдирд╛рдо рдХреЗ рд╕рдВрджрд░реНрдн рдореИрдиреБрдЕрд▓ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрддрд╛ рдкрд░рд┐рд╡рд░реНрддрди (рдкрддрд╛ рдСрдлрд╕реЗрдЯ) CR1 - 0x00 рдХреЗ рд▓рд┐рдП, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рднреА рдмрд┐рдЯреНрд╕ рд╕рд╛рдлрд╝ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ (рдорд╛рди рд░реАрд╕реЗрдЯ рдХрд░реЗрдВ 0x0000):

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ

рдмреАрдЖрд░ рдмрд┐рдЯреНрд╕ рдирд┐рдпрдВрддреНрд░рдХ рдШрдбрд╝реА рд╡рд┐рднрд╛рдЬрдХ рдХреЛ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЙрд╕ рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕ рдкрд░ рдПрд╕рдкреАрдЖрдИ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд╣рдорд╛рд░реА рдПрд╕рдЯреАрдПрдо32 рдЖрд╡реГрддреНрддрд┐ 72 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рд╣реЛрдЧреА, рдПрд▓рдИрдбреА рдбреНрд░рд╛рдЗрд╡рд░, рдЗрд╕рдХреА рдбреЗрдЯрд╛рд╢реАрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░, 25 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рддрдХ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЪрд╛рд░ (рдмреАрдЖрд░[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. рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдФрд░ рд╕реАрд░рд┐рдпрд▓ рдХреНрд▓реЙрдХ рдЯрд╛рдЗрдорд┐рдВрдЧ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдкреАрдУрдПрд▓ рдФрд░ рд╕реАрдкреАрдПрдЪрдП рдмрд┐рдЯреНрд╕ рд╕реЗрдЯ рдХрд░реЗрдВ (рдкреЗрдЬ 240 рдкрд░ рдЖрд░реЗрдЦ рджреЗрдЦреЗрдВ)

рдЪреВрдБрдХрд┐ рд╣рдо рдпрд╣рд╛рдБ рдПрдХ рдбреЗрдЯрд╛рд╢реАрдЯ рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдпреЛрдЬрдирд╛рдмрджреНрдзрддрд╛ рдХреЛ рдирд╣реАрдВ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рдЖрдЗрдП рдкреГрд╖реНрда 704 (рдПрд╕рдкреАрдЖрдИ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╡рд░рдг) рдкрд░ рд╕реАрдкреАрдУрдПрд▓ рдФрд░ рд╕реАрдкреАрдПрдЪрдП рдмрд┐рдЯреНрд╕ рдХреЗ рдкрд╛рда рд╡рд┐рд╡рд░рдг рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ
рдШрдбрд╝реА рдЪрд░рдг рдФрд░ рдзреНрд░реБрд╡рддрд╛
SPI_CR1 рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ CPOL рдФрд░ CPHA рдмрд┐рдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдЪрд╛рд░ рд╕рдордп рд╕рдВрдмрдВрдзреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рдХреЛрдИ рдбреЗрдЯрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реЛ рддреЛ CPOL (рдХреНрд▓реЙрдХ рдкреЛрд▓рд╛рд░рд┐рдЯреА) рдмрд┐рдЯ рдХреНрд▓реЙрдХ рд╕рд┐рдЧреНрдирд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдмрд┐рдЯ рдорд╛рд╕реНрдЯрд░ рдФрд░ рд╕реНрд▓реЗрд╡ рдореЛрдб рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ CPOL рд░реАрд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ SCK рдкрд┐рди рд░реЗрд╕реНрдЯ рдореЛрдб рдореЗрдВ рдХрдо рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ CPOL рдмрд┐рдЯ рд╕реЗрдЯ рд╣реИ, рддреЛ рд░реЗрд╕реНрдЯ рдореЛрдб рдХреЗ рджреМрд░рд╛рди SCK рдкрд┐рди рдКрдВрдЪрд╛ рд╣реЛрддрд╛ рд╣реИред
рдЬрдм рд╕реАрдкреАрдПрдЪрдП (рдХреНрд▓реЙрдХ рдЪрд░рдг) рдмрд┐рдЯ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЙрдЪреНрдЪ рдмрд┐рдЯ рдЯреНрд░реИрдк рд╕реНрдЯреНрд░реЛрдм рдПрд╕рд╕реАрдХреЗ рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рджреВрд╕рд░рд╛ рдХрд┐рдирд╛рд░рд╛ рд╣реЛрддрд╛ рд╣реИ (рдпрджрд┐ рд╕реАрдкреАрдУрдПрд▓ рд╕реНрдкрд╖реНрдЯ рд╣реИ рддреЛ рдЧрд┐рд░рддрд╛ рд╣реИ, рдпрджрд┐ рд╕реАрдкреАрдУрдПрд▓ рд╕реЗрдЯ рд╣реИ рддреЛ рдмрдврд╝рддрд╛ рд╣реИ)ред рдХреНрд▓реЙрдХ рд╕рд┐рдЧреНрдирд▓ рдореЗрдВ рджреВрд╕рд░реЗ рдмрджрд▓рд╛рд╡ рд╕реЗ рдбреЗрдЯрд╛ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╕реАрдкреАрдПрдЪрдП рдмрд┐рдЯ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рддреЛ рдЙрдЪреНрдЪ рдмрд┐рдЯ рдЯреНрд░реИрдк рд╕реНрдЯреНрд░реЛрдм рдПрд╕рд╕реАрдХреЗ рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рдЙрднрд░рддрд╛ рд╣реБрдЖ рдХрд┐рдирд╛рд░рд╛ рд╣реИ (рдпрджрд┐ рд╕реАрдкреАрдУрдПрд▓ рд╕реЗрдЯ рд╣реИ рддреЛ рдЧрд┐рд░рддрд╛ рд╣реБрдЖ рдХрд┐рдирд╛рд░рд╛, рд╕реАрдкреАрдУрдПрд▓ рд╕рд╛рдл рд╣реЛрдиреЗ рдкрд░ рдмрдврд╝рддрд╛ рд╣реБрдЖ рдХрд┐рдирд╛рд░рд╛)ред рдХреНрд▓реЙрдХ рд╕рд┐рдЧреНрдирд▓ рдореЗрдВ рдкрд╣рд▓реЗ рдмрджрд▓рд╛рд╡ рдкрд░ рдбреЗрдЯрд╛ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕ рдЬреНрдЮрд╛рди рдХреЛ рдЖрддреНрдорд╕рд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪреЗ рдХрд┐ рджреЛрдиреЛрдВ рдмрд┐рдЯ рд╢реВрдиреНрдп рд╣реА рд░рд╣рдиреЗ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрдпреЛрдЧ рдореЗрдВ рди рд╣реЛрдиреЗ рдкрд░ рдПрд╕рд╕реАрдХреЗ рд╕рд┐рдЧреНрдирд▓ рдХрдо рд░рд╣реЗ рдФрд░ рдбреЗрдЯрд╛ рдкрд▓реНрд╕ рдХреЗ рдмрдврд╝рддреЗ рдХрд┐рдирд╛рд░реЗ рдкрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛ (рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ)ред рдмрдврд╝рддрд╛ рдХрд┐рдирд╛рд░рд╛ DM634 рдбреЗрдЯрд╛рд╢реАрдЯ рдореЗрдВ)ред

рд╡реИрд╕реЗ, рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдкрд╣рд▓реА рдмрд╛рд░ рдПрд╕рдЯреА рдбреЗрдЯрд╛рд╢реАрдЯ рдореЗрдВ рд╢рдмреНрджрд╛рд╡рд▓реА рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛: рдЙрдирдореЗрдВ рд╡рд╛рдХреНрдпрд╛рдВрд╢ "рдмрд┐рдЯ рдХреЛ рд╢реВрдиреНрдп рдкрд░ рд░реАрд╕реЗрдЯ рдХрд░реЗрдВ" рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдереЛрдбрд╝рд╛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПрдФрд░ рдирд╣реАрдВ рдереЛрдбрд╝рд╛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдЯрдореЗрдЧрд╛ред

3. рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ 8-рдмрд┐рдЯ рдпрд╛ 16-рдмрд┐рдЯ рдкреНрд░рд╛рд░реВрдк рд╣реИ рдпрд╛ рдирд╣реАрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреАрдПрдлрдПрдл рдмрд┐рдЯ рд╕реЗрдЯ рдХрд░реЗрдВ

рдореИрдВрдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ 16-рдмрд┐рдЯ DM634 рд▓рд┐рдпрд╛ рддрд╛рдХрд┐ DM12 рдХреА рддрд░рд╣ 633-рдмрд┐рдЯ PWM рдбреЗрдЯрд╛ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рди рд╣реЛред рдбреАрдПрдлрдПрдл рдХреЛ рдПрдХ рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ:

#define DFF         0x0800

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

4. рдмреНрд▓реЙрдХ рдкреНрд░рд╛рд░реВрдк рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SPI_CR1 рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ LSBFIRST рдмрд┐рдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ

рдПрд▓рдПрд╕рдмреАрдлрд░реНрд╕реНрдЯ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕рдХреЗ рдирд╛рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдкрд╣рд▓реЗ рд╕рдмрд╕реЗ рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯ рдХреЗ рд╕рд╛рде рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди DM634 рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ рд░реАрд╕реЗрдЯ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред

5. рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЛрдб рдореЗрдВ, рдпрджрд┐ рдПрдирдПрд╕рдПрд╕ рдкрд┐рди рд╕реЗ рдЗрдирдкреБрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдкреВрд░реЗ рдмрд╛рдЗрдЯ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдЕрдиреБрдХреНрд░рдо рдХреЗ рджреМрд░рд╛рди рдПрдирдПрд╕рдПрд╕ рдкрд┐рди рдкрд░ рдПрдХ рдЙрдЪреНрдЪ рд╕рд┐рдЧреНрдирд▓ рд▓рд╛рдЧреВ рдХрд░реЗрдВред рдПрдирдПрд╕рдПрд╕ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдореЛрдб рдореЗрдВ, рдПрд╕рдПрд╕рдПрдо рдФрд░ рдПрд╕рдПрд╕рдЖрдИ рдмрд┐рдЯреНрд╕ рдХреЛ SPI_CR1 рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВред рдпрджрд┐ рдПрдирдПрд╕рдПрд╕ рдкрд┐рди рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ, рддреЛ рдХреЗрд╡рд▓ рдПрд╕рдПрд╕рдУрдИ рдмрд┐рдЯ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдПрдирдПрд╕рдПрд╕ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЛрдб рдХреЛ рднреВрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд╕рдПрд╕рдПрдо рдФрд░ рдПрд╕рдПрд╕рдЖрдИ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:

#define SSI         0x0100
#define SSM         0x0200

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

6. рдПрдордПрд╕рдЯреАрдЖрд░ рдФрд░ рдПрд╕рдкреАрдИ рдмрд┐рдЯреНрд╕ рд╕реЗрдЯ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП (рд╡реЗ рдХреЗрд╡рд▓ рддрднреА рд╕реЗрдЯ рд░рд╣рддреЗ рд╣реИрдВ рдЬрдм рдПрдирдПрд╕рдПрд╕ рд╕рд┐рдЧреНрдирд▓ рдЕрдзрд┐рдХ рд╣реЛ)

рджрд░рдЕрд╕рд▓, рдЗрди рдмрд┐рдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╣рдо рдЕрдкрдиреЗ рдПрд╕рдкреАрдЖрдИ рдХреЛ рдорд╛рд╕реНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╛рдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ:

#define MSTR        0x0004
#define SPE         0x0040

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

рдПрд╕рдкреАрдЖрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдЗрдП рддреБрд░рдВрдд рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВ рдЬреЛ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдмрд╛рдЗрдЯреНрд╕ рднреЗрдЬрддреЗ рд╣реИрдВред 25.3.3 рдкрдврд╝рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВ "рдПрд╕рдкреАрдЖрдИ рдХреЛ рдорд╛рд╕реНрдЯрд░ рдореЛрдб рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛":

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

рдореИрдВрдиреЗ рдПрд╕рдЯреАрдПрдо рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ рдПрд╕рдкреАрдЖрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╡рд╛рдж рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджреЛрдВ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛ред рдПрдЯрдореЗрдЧрд╛ рдкрд░ TXE рдзреНрд╡рдЬ (рдЯреАрдПрдХреНрд╕ рдЦрд╛рд▓реА, Tx рдЦрд╛рд▓реА рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ) рд╕рдВрдкреВрд░реНрдг рдмрд╛рдЗрдЯ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдмрд╛рд╣рд░. рдФрд░ рдпрд╣рд╛рдВ рдпрд╣ рдзреНрд╡рдЬ рдЖрдВрддрд░рд┐рдХ рд╢рд┐рдлреНрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдмрд╛рдЗрдЯ рдбрд╛рд▓рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЪреВрдБрдХрд┐ рдЗрд╕реЗ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ (рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ) рд╕рднреА рдмрд┐рдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╡рд╣рд╛рдВ рдзрдХреЗрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдбреЗрдЯрд╛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд╛рдЗрдЯ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ TXE рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдПрд▓рдИрдбреА рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж LAT рдкрд┐рди рдХреЛ рдЦреАрдВрдЪрдирд╛ рд╣реЛрдЧрд╛ рд╕рдм рдбреЗрдЯрд╛, рдпрд╛рдиреА рдЕрдХреЗрд▓реЗ TXE рдзреНрд╡рдЬ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдФрд░ рдЭрдВрдбреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ. рдЖрдЗрдП 25.3.7 рджреЗрдЦреЗрдВ - "рд╕реНрдерд┐рддрд┐ рдзреНрд╡рдЬ":

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

рдареАрдХ рд╣реИ, рдпреЗ рдХрд╛рдо рдЖрдПрдЧрд╛. рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ Tx рдмрдлрд╝рд░ рдХрд╣рд╛рдБ рд╕реНрдерд┐рдд рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, "рдПрд╕рдкреАрдЖрдИ рдбреЗрдЯрд╛ рд░рдЬрд┐рд╕реНрдЯрд░" рдкрдврд╝реЗрдВ:

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ
рдмрд┐рдЯреНрд╕ 15:0 рдбреАрдЖрд░[15:0] рдбреЗрдЯрд╛ рд░рдЬрд┐рд╕реНрдЯрд░
рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдпрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдбреЗрдЯрд╛ред
рдбреЗрдЯрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЛ рджреЛ рдмрдлрд╝рд░реНрд╕ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдПрдХ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП (рдЯреНрд░рд╛рдВрд╕рдорд┐рдЯ рдмрдлрд╝рд░) рдФрд░ рдПрдХ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП (рдмрдлрд╝рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ)ред рдбреЗрдЯрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЛ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдЯреАрдПрдХреНрд╕ рдмрдлрд╝рд░ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реЗ рдкрдврд╝рдиреЗ рдкрд░ рдЖрд░рдПрдХреНрд╕ рдмрдлрд╝рд░ рдореЗрдВ рдирд┐рд╣рд┐рдд рдорд╛рди рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред

рдЦреИрд░, рдФрд░ рд╕реНрдерд┐рддрд┐ рд░рдЬрд┐рд╕реНрдЯрд░, рдЬрд╣рд╛рдВ TXE рдФрд░ BSY рдЭрдВрдбреЗ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ:

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; 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 рдореЗрдВ, рдкрд┐рди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛рдлреА рдЕрд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдПрдЯрдореЗрдЧрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрдзрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпреЗ рдЕрдиреНрдп рдПрд╕рдЯреАрдПрдо рдЪрд┐рдкреНрд╕ рд╕реЗ рднрд┐рдиреНрди рднреА рд╣реИрдВред рдзрд╛рд░рд╛ 9.1 рдЬреАрдкреАрдЖрдИрдУ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╡рд░рдг:

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ
рдкреНрд░рддреНрдпреЗрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдпреЛрдЬрди I/O рдкреЛрд░реНрдЯ (рдЬреАрдкреАрдЖрдИрдУ) рдЗрд╕рдореЗрдВ рджреЛ 32-рдмрд┐рдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд░рдЬрд┐рд╕реНрдЯрд░ (GPIOx_CRL рдФрд░ GPIOx_CRH), рджреЛ 32-рдмрд┐рдЯ рдбреЗрдЯрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ (GPIOx_IDR рдФрд░ GPIOx_ODR), рдПрдХ 32-рдмрд┐рдЯ рд╕реЗрдЯ/рд░реАрд╕реЗрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ (GPIOx_BSRR), рдПрдХ 16-рдмрд┐рдЯ рд░реАрд╕реЗрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ (GPIOx_BRR) рдФрд░ рдПрдХ 32- рд╣реИред рдмрд┐рдЯ рдмреНрд▓реЙрдХрд┐рдВрдЧ рд░рдЬрд┐рд╕реНрдЯрд░ (GPIOx_LCKR)ред

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

рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╕реВрдЪреА рдХреЗ рдЕрдВрдд рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред

рд╣рдореЗрдВ рдмреНрд▓реЙрдХрд┐рдВрдЧ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ.

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

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

рдбреЗрдЯрд╛ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ рдХрд╛рдлреА рд╕реНрд╡-рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рдирд╛рдо рд╣реИрдВ - IDR = рдирд┐рд╡реЗрд╢ рджрд┐рд╢рд╛ рд░рдЬрд┐рд╕реНрдЯрд░, рдЗрдирдкреБрдЯ рд░рдЬрд┐рд╕реНрдЯрд░; рдУрдбреАрдЖрд░ = рдЙрддреНрдкрд╛рджрди рджрд┐рд╢рд╛ рд░рдЬрд┐рд╕реНрдЯрд░, рдЖрдЙрдЯрдкреБрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ред рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╣рдореЗрдВ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

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

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ

рдФрд░ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ 20 рд╕реЗ 31 рддрдХ рдмрд┐рдЯреНрд╕ рдореЗрдВ рдХреБрдЫ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдКрдкрд░ рдкрддрд╛ рд▓рдЧрд╛ рд▓рд┐рдпрд╛ рд╣реИ рдХрд┐ рд╣рдо рдкрд┐рди рд╕реЗ рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рдореИрдВ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЗ рдмрд┐рдирд╛ рдХрд░реВрдВрдЧрд╛, рдореИрдВ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ MODE рджрд┐рд╢рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ рджреЛрдиреЛрдВ рдмрд┐рдЯреНрд╕ 0 рдкрд░ рд╕реЗрдЯ рд╣реИрдВ рддреЛ рдЗрдирдкреБрдЯ) рдФрд░ рдкрд┐рди рдЧрддрд┐ (рд╣рдореЗрдВ 50 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛рдиреА) рджреЛрдиреЛрдВ рдкрд┐рди "1") рдкрд░ рд╣реИрдВ, рдФрд░ рд╕реАрдПрдирдПрдл рдореЛрдб рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ: рдирд┐рдпрдорд┐рдд "рдкреБрд╢-рдкреБрд▓" - 00, "рд╡реИрдХрд▓реНрдкрд┐рдХ" - 10ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдКрдкрд░ рджреЗрдЦрддреЗ рд╣реИрдВ, рд╕рднреА рдкрд┐рди рдореЗрдВ рдиреАрдЪреЗ рд╕реЗ рддреАрд╕рд░рд╛ рдмрд┐рдЯ рд╣реЛрддрд╛ рд╣реИ (рд╕реАрдПрдирдПрдл0), рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдореЛрдб рдкрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдЗрдирдкреБрдЯ.

рдЪреВрдБрдХрд┐ рдореИрдВ рдЗрд╕ рдЪрд┐рдк рдХреЗ рд╕рд╛рде рдХреБрдЫ рдФрд░ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдБ, рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдирд┐рдЪрд▓реЗ рдФрд░ рдКрдкрд░реА рджреЛрдиреЛрдВ рдирд┐рдпрдВрддреНрд░рдг рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд MODE рдФрд░ CNF рдорд╛рдиреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИред

рдЦреИрд░, рдРрд╕рд╛ рд╣реА рдХреБрдЫ

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

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

рд╣рдорд╛рд░реЗ рдкрд┐рди рдкреЛрд░реНрдЯ рдмреА (рдЖрдзрд╛рд░ рдкрддрд╛ - 0x40010C00), рдХреЛрдб рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВ:

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

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

//╨╕╤Б╨┐╨╛╨╗╤М╨╖╤Г╨╡╨╝ ╤Б╤В╨░╨╜╨┤╨░╤А╤В╨╜╤Л╨╣ SPI2: MOSI ╨╜╨░ B15, CLK ╨╜╨░ B13
//LAT ╨┐╤Г╤Б╤В╤М ╨▒╤Г╨┤╨╡╤В ╨╜╨░ ╨╜╨╡╨╕╤Б╨┐╨╛╨╗╤М╨╖╤Г╨╡╨╝╨╛╨╝ MISO тАУ B14

//╨╛╤З╨╕╤Й╨░╨╡╨╝ ╨┤╨╡╤Д╨╛╨╗╤В╨╜╤Л╨╣ ╨▒╨╕╤В, ╨╛╨╜ ╨╜╨░╨╝ ╤В╨╛╤З╨╜╨╛ ╨╜╨╡ ╨╜╤Г╨╢╨╡╨╜
_PORTB_ (_CRH) &= ~(CNF15_0 | CNF14_0 | CNF13_0 | CNF12_0);

//╨░╨╗╤М╤В╨╡╤А╨╜╨░╤В╨╕╨▓╨╜╤Л╨╡ ╤Д╤Г╨╜╨║╤Ж╨╕╨╕ ╨┤╨╗╤П MOSI ╨╕ SCK
_PORTB_ (_CRH) |= CNF15_1 | CNF13_1;

//50 ╨Ь╨У╤Ж, MODE = 11
_PORTB_ (_CRH) |= MODE15_1 | MODE15_0 | MODE14_1 | MODE14_0 | MODE13_1 | MODE13_0;

рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдЖрдк LAT рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ BRR рдФрд░ BSRR рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдЯреНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

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

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

(рдХреЗрд╡рд▓ рдЬрдбрд╝рддрд╛ рд╕реЗ LAT_low, рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕реЗ рдРрд╕рд╛ рд╣реА рд░рд╣рд╛ рд╣реИ, рдЗрд╕реЗ рд░рд╣рдиреЗ рджреЗрдВ)

рдЕрдм рд╕рдм рдХреБрдЫ рдмрдврд╝рд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ STM32 рд╣реИ, рд╡реЗ рдмрд┐рдЬрд▓реА рдмрдЪрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдХреНрд▓реЙрдХрд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдХреНрд▓реЙрдХрд┐рдВрдЧ рдЪрд╛рд▓реВ рдХрд░реЗрдВ

рдШрдбрд╝реА, рдЬрд┐рд╕реЗ рдХреНрд▓реЙрдХ рдХреЗ рдирд╛рдо рд╕реЗ рднреА рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдШрдбрд╝реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдФрд░ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рдЖрд░рд╕реАрд╕реА рджреЗрдЦ рд╕рдХрддреЗ рдереЗред рд╣рдо рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдвреВрдВрдврддреЗ рд╣реИрдВ: рдпрд╣ рд░реАрд╕реЗрдЯ рдФрд░ рдХреНрд▓реЙрдХ рдХрдВрдЯреНрд░реЛрд▓ рд╣реИред

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

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ

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

рдФрд░ рдлрд┐рд░ рдпрд╛ рддреЛ рдЙрд╕ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЖрдк рдкреНрд▓реЗрдЯ рдореЗрдВ рдХреБрдЫ рдвреВрдВрдврдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛, рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдиреБрднрд╛рдЧреЛрдВ рд╕реЗ рд╕рдХреНрд╖рдо рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рджреЗрдЦреЗрдВред рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ. рд╣рдореЗрдВ RCC_APB1ENR рдФрд░ RCC_APB2ENR рдХрд╣рд╛рдВ рдорд┐рд▓реЗрдВрдЧреЗ:

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ
рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; 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 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ

рдПрд╕рдЯреАрдПрдо8 рдкреАрдбрдмреНрд▓реВрдПрдо

STM8 рдкрд░ PWM

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

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

рдХреНрд▓реЙрдХрд┐рдВрдЧ рдФрд░ рдЖрдИ/рдУ

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, STM8 2 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреА рдЖрд╡реГрддреНрддрд┐ рдкрд░ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕реЗ рддреБрд░рдВрдд рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ
рдПрдЪрдПрд╕рдЖрдИ (рд╣рд╛рдИ рд╕реНрдкреАрдб рдЗрдВрдЯрд░рдирд▓) рдШрдбрд╝реА
рдПрдЪрдПрд╕рдЖрдИ рдХреНрд▓реЙрдХ рд╕рд┐рдЧреНрдирд▓ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдмрд▓ рдбрд┐рд╡рд╛рдЗрдбрд░ (16 рд╕реЗ 1) рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдВрддрд░рд┐рдХ 8 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдЖрд░рд╕реА рдСрд╕рд┐рд▓реЗрдЯрд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕реЗ рдХреНрд▓реЙрдХ рдбрд┐рд╡рд╛рдЗрдбрд░ рд░рдЬрд┐рд╕реНрдЯрд░ (CLK_CKDIVR) рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдзреНрдпрд╛рди рджреЗрдВ: рд╢реБрд░реБрдЖрдд рдореЗрдВ, 8 рдХреЗ рдбрд┐рд╡рд╛рдЗрдбрд░ рд╡рд╛рд▓реЗ рдПрдХ рдПрдЪрдПрд╕рдЖрдИ рдЖрд░рд╕реА рдСрд╕рд┐рд▓реЗрдЯрд░ рдХреЛ рдХреНрд▓реЙрдХ рд╕рд┐рдЧреНрдирд▓ рдХреЗ рдкреНрд░рдореБрдЦ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рдо рдбреЗрдЯрд╛рд╢реАрдЯ рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдкрддрд╛, рд░реЗрдлрдореИрди рдореЗрдВ рд╡рд┐рд╡рд░рдг рдкрд╛рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

#define CLK_CKDIVR *(volatile uint8_t *)0x0050C6

CLK_CKDIVR &= ~(0x18);

рдЪреВрдБрдХрд┐ рд╣рдо PWM рдЪрд▓рд╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ LED рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЖрдЗрдП рдкрд┐рдирдЖрдЙрдЯ рджреЗрдЦреЗрдВ:

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ

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

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

STM8 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ STM32 рдкрд░ I/O рдкрд┐рди рд╕реНрд╡рдпрдВ рд╕реЗрдЯ рдХрд░рдирд╛ рд╕рд░рд▓ рдФрд░ рдЕрдзрд┐рдХ рддрд╛рд░реНрдХрд┐рдХ рд╣реИ:

  • рдПрдЯрдореЗрдЧрд╛ рдбреАрдбреАрдЖрд░ рдбреЗрдЯрд╛ рдбрд╛рдпрд░реЗрдХреНрд╢рди рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд (рдбреЗрдЯрд╛ рджрд┐рд╢рд╛ рд░рдЬрд┐рд╕реНрдЯрд░): 1 = рдЖрдЙрдЯрдкреБрдЯ;
  • рдкрд╣рд▓рд╛ рдирд┐рдпрдВрддреНрд░рдг рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реАрдЖрд░1, рдЬрдм рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкреБрд╢-рдкреБрд▓ рдореЛрдб (1) рдпрд╛ рдУрдкрди рдбреНрд░реЗрди (0) рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ; рдЪреВрдВрдХрд┐ рдореИрдВ рдПрд▓рдИрдбреА рдХреЛ рдХреИрдереЛрдб рдХреЗ рд╕рд╛рде рдЪрд┐рдк рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпрд╣рд╛рдВ рд╢реВрдиреНрдп рдЫреЛрдбрд╝рддрд╛ рд╣реВрдВ;
  • рджреВрд╕рд░рд╛ рдирд┐рдпрдВрддреНрд░рдг рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реАрдЖрд░2, рдЬрдм рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдШрдбрд╝реА рдХреА рдЧрддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ: 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 рдлреНрд░реАрдХреНрд╡реЗрдВрд╕реА - рдЖрд╡реГрддреНрддрд┐ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдорд░ рдЯрд┐рдХ рдХрд░рддрд╛ рд╣реИ;
  • рдСрдЯреЛ-рд░реАрд▓реЛрдб, рдПрдЖрд░ - рд╕реНрд╡рдд: рд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдорд╛рди рдЬрд┐рд╕ рддрдХ рдЯрд╛рдЗрдорд░ рдЧрд┐рдирддреА рдХрд░реЗрдЧрд╛ (рдкрд▓реНрд╕ рдЕрд╡рдзрд┐);
  • рдЕрдкрдбреЗрдЯ рдЗрд╡реЗрдВрдЯ, рдпреВрдИрд╡реА - рдПрдХ рдШрдЯрдирд╛ рдЬреЛ рддрдм рдШрдЯрд┐рдд рд╣реЛрддреА рд╣реИ рдЬрдм рдЯрд╛рдЗрдорд░ рдХреА рдЧрд┐рдирддреА AR рдкрд░ рд╣реЛ рдЬрд╛рддреА рд╣реИ;
  • рдкреАрдбрдмреНрд▓реВрдПрдо рдбреНрдпреВрдЯреА рд╕рд╛рдЗрдХрд┐рд▓ - рдкреАрдбрдмреНрд▓реВрдПрдо рдХрд░реНрддрд╡реНрдп рдЪрдХреНрд░, рдЬрд┐рд╕реЗ рдЕрдХреНрд╕рд░ "рдХрд░реНрддрд╡реНрдп рдХрд╛рд░рдХ" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ;
  • рдореВрд▓реНрдп рдХреИрдкреНрдЪрд░/рддреБрд▓рдирд╛ рдХрд░реЗрдВ - рдХреИрдкреНрдЪрд░/рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП рдорд╛рди, рдЬрд┐рд╕реЗ рдЯрд╛рдЗрдорд░ рдиреЗ рдЧрд┐рдирд╛ рд╣реИ рдХреБрдЫ рдХрд░реЗрдВрдЧреЗ (рдкреАрдбрдмреНрд▓реВрдПрдо рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдЙрд▓рдЯ рджреЗрддрд╛ рд╣реИ);
  • рдкреНрд░реАрд▓реЛрдб рдорд╛рди - рдкреНрд░реАрд▓реЛрдбреЗрдб рдорд╛рди. рдореВрд▓реНрдп рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ рдЯрд╛рдЗрдорд░ рдЯрд┐рдХ-рдЯрд┐рдХ рдХрд░рддреЗ рд╕рдордп рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддрд╛, рдЕрдиреНрдпрдерд╛ PWM рдЪрдХреНрд░ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдирдП рд╕рдВрдЪрд░рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреЛ рдПрдХ рдмрдлрд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЬрдм рдЯрд╛рдЗрдорд░ рдЕрдкрдиреА рдЙрд▓рдЯреА рдЧрд┐рдирддреА рдХреЗ рдЕрдВрдд рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ рдФрд░ рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЙрд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ;
  • рдмрдврд╝рдд рдЧрдардмрдВрдзрди ╨╕ рдХреЗрдВрджреНрд░-рд╕рдВрд░реЗрдЦрд┐рдд рдореЛрдб - рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде рдФрд░ рдХреЗрдВрджреНрд░ рдореЗрдВ рд╕рдВрд░реЗрдЦрдг, рдПрдЯрдореЗрд▓ рдХреЗ рд╕рдорд╛рди рдлрд╛рд╕реНрдЯ PWM ╨╕ рдЪрд░рдг-рд╕рд╣реА PWM.
  • рдУрд╕реАрдЖрдИрдЖрд░рдИрдПрдл, рдЖрдЙрдЯрдкреБрдЯ рддреБрд▓рдирд╛ рд╕рдВрджрд░реНрдн рд╕рд┐рдЧреНрдирд▓ - рд╕рдВрджрд░реНрдн рдЖрдЙрдЯрдкреБрдЯ рд╕рд┐рдЧреНрдирд▓, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреАрдбрдмреНрд▓реВрдПрдо рдореЛрдб рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдкрд┐рди рдкрд░ рдХреНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред

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

STM8 рдкрд░ PWM рдХрд╛ Atmega рдкрд░ PWM рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рдн рд╣реИ:

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ
рд╕реАрдорд╛ рд╕рдВрд░реЗрдЦрд┐рдд PWM
рдиреАрдЪреЗ рд╕реЗ рдКрдкрд░ рддрдХ рдЦрд╛рддрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
рдпрджрд┐ TIM_CR1 рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ DIR рдмрд┐рдЯ рд╕рд╛рдлрд╝ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдмреЙрдЯрдо-рдЕрдк рдХрд╛рдЙрдВрдЯрд┐рдВрдЧ рд╕рдХреНрд░рд┐рдп рд╣реЛрддреА рд╣реИ
рдЙрджрд╛рд╣рд░рдг
рдЙрджрд╛рд╣рд░рдг рдкрд╣рд▓реЗ PWM рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред PWM рд╕рдВрджрд░реНрдн рд╕рд┐рдЧреНрдирд▓ OCiREF рдХреЛ TIM1_CNT < TIM1_CCRi рддрдХ рдЙрдЪреНрдЪ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛ рдпрд╣ рдирд┐рдореНрди рд╕реНрддрд░ рд▓реЗрддрд╛ рд╣реИ. рдпрджрд┐ TIM1_CCRi рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рддреБрд▓рдирд╛ рдорд╛рди рдСрдЯреЛрд▓реЛрдб рдорд╛рди (TIM1_ARR рд░рдЬрд┐рд╕реНрдЯрд░) рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ OCiREF рд╕рд┐рдЧреНрдирд▓ 1 рдкрд░ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рддреБрд▓рдирд╛ рдорд╛рди 0 рд╣реИ, рддреЛ OCIREF рдХреЛ рд╢реВрдиреНрдп рдкрд░ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред...

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

рддреЛ рд╣рдо рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ: 8-рдмрд┐рдЯ PWM (AR == 255), рдиреАрдЪреЗ рд╕реЗ рдКрдкрд░ рддрдХ рдЧрд┐рдирддреА, рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрдгред рдЪреВрдБрдХрд┐ рдкреНрд░рдХрд╛рд╢ рдмрд▓реНрдм рдХреИрдереЛрдб рджреНрд╡рд╛рд░рд╛ рдЪрд┐рдк рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ, PWM рдХреЛ рддрдм рддрдХ 0 (рдПрд▓рдИрдбреА рдЪрд╛рд▓реВ) рдЖрдЙрдЯрдкреБрдЯ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдореВрд▓реНрдп рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ рдФрд░ 1 рдХреЗ рдмрд╛рдж.

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

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ
110: рдкрд╣рд▓рд╛ рдкреАрдбрдмреНрд▓реВрдПрдо рдореЛрдб - рдиреАрдЪреЗ рд╕реЗ рдКрдкрд░ рддрдХ рдЧрд┐рдирддреА рдХрд░рддреЗ рд╕рдордп, рдкрд╣рд▓рд╛ рдЪреИрдирд▓ рд╕рдХреНрд░рд┐рдп рд╣реЛрддрд╛ рд╣реИ рдЬрдмрдХрд┐ TIMx_CNT < TIMx_CCR1ред рдЕрдиреНрдпрдерд╛, рдкрд╣рд▓рд╛ рдЪреИрдирд▓ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИ. [рдЖрдЧреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЯрд╛рдЗрдорд░ 1 рд╕реЗ рдПрдХ рдЧрд╝рд▓рдд рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рд╣реИ] 111: рджреВрд╕рд░рд╛ рдкреАрдбрдмреНрд▓реВрдПрдо рдореЛрдб - рдиреАрдЪреЗ рд╕реЗ рдКрдкрд░ рддрдХ рдЧрд┐рдирддреА рдХрд░рддреЗ рд╕рдордп, рдкрд╣рд▓рд╛ рдЪреИрдирд▓ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реЛрддрд╛ рд╣реИ рдЬрдмрдХрд┐ TIMx_CNT < TIMx_CCR1ред рдЕрдиреНрдпрдерд╛, рдкрд╣рд▓рд╛ рдЪреИрдирд▓ рд╕рдХреНрд░рд┐рдп рд╣реИ.

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

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ
рдмрд┐рдЯ 3 OC1PE: рдкрд┐рди 1 рдкреНрд░реАрд▓реЛрдб рд╕рдХреНрд╖рдо рдХрд░реЗрдВ
0: TIMx_CCR1 рдкрд░ рдкреНрд░реАрд▓реЛрдб рд░рдЬрд┐рд╕реНрдЯрд░ рдЕрдХреНрд╖рдо рд╣реИред рдЖрдк рдХрд┐рд╕реА рднреА рд╕рдордп TIMx_CCR1 рдХреЛ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдирдпрд╛ рдорд╛рди рддреБрд░рдВрдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ.
1: TIMx_CCR1 рдкрд░ рдкреНрд░реАрд▓реЛрдб рд░рдЬрд┐рд╕реНрдЯрд░ рд╕рдХреНрд╖рдо рд╣реИред рдкрдврд╝рдиреЗ/рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдкреНрд░реАрд▓реЛрдб рд░рдЬрд┐рд╕реНрдЯрд░ рддрдХ рдкрд╣реБрдБрдЪрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдЕрджреНрдпрддрди рдИрд╡реЗрдВрдЯ рдХреЗ рджреМрд░рд╛рди рдкреНрд░реАрд▓реЛрдбреЗрдб рдорд╛рди TIMx_CCR1 рдХреЛ рдЫрд╛рдпрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
*рдиреЛрдЯ: рдкреАрдбрдмреНрд▓реВрдПрдо рдореЛрдб рдХреЗ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реАрд▓реЛрдб рд░рдЬрд┐рд╕реНрдЯрд░ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХрд▓ рд╕рд┐рдЧреНрдирд▓ рдореЛрдб рдореЗрдВ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ (рдУрдкреАрдПрдо рдмрд┐рдЯ TIMx_CR1 рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд╕реЗрдЯ рд╣реИ)ред

рдареАрдХ рд╣реИ, рдЖрдЗрдП рджреВрд╕рд░реЗ рдЯрд╛рдЗрдорд░ рдХреЗ рддреАрди рдЪреИрдирд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдЪреАрдЬрд╝реЗрдВ рдЪрд╛рд▓реВ рдХрд░реЗрдВ:

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

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

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

AR рдореЗрдВ рджреЛ рдЖрда-рдмрд┐рдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рд╣реЛрддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ:

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

TIM2_ARRH = 0;
TIM2_ARRL = 255;

рджреВрд╕рд░рд╛ рдЯрд╛рдЗрдорд░ рдХреЗрд╡рд▓ рдиреАрдЪреЗ рд╕реЗ рдКрдкрд░ рддрдХ рдЧрд┐рдирддреА рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрдг, рдХреБрдЫ рднреА рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рдЖрдЗрдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрд╡реГрддреНрддрд┐ рд╡рд┐рднрдХреНрдд рдХреЛ 256 рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред рджреВрд╕рд░реЗ рдЯрд╛рдЗрдорд░ рдХреЗ рд▓рд┐рдП, рд╡рд┐рднрдХреНрдд рдХреЛ TIM2_PSCR рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рджреЛ рдХреА рд╢рдХреНрддрд┐ рд╣реИ:

#define TIM2_PSCR  *(volatile uint8_t *)0x00530E

TIM2_PSCR = 8;

рдЬреЛ рдХреБрдЫ рдмрдЪрд╛ рд╣реИ рд╡рд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдФрд░ рджреВрд╕рд░реЗ рдЯрд╛рдЗрдорд░ рдХреЛ рд╣реА рдЪрд╛рд▓реВ рдХрд░рдирд╛ рд╣реИред рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХреА рдЬрд╛рддреА рд╣реИ рдХреИрдкреНрдЪрд░/рддреБрд▓рдирд╛ рдХрд░реЗрдВ рд╕рдХреНрд╖рдо: рдЙрдирдореЗрдВ рджреЛ, рддреАрди рдЪреИрдирд▓ рдЕрд╕рдордорд┐рдд рд░реВрдк рд╕реЗ рдмрд┐рдЦрд░реЗ рд╣реБрдП рд╣реИрдВред рдпрд╣рд╛рдВ рд╣рдо рдпрд╣ рднреА рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рдЧреНрдирд▓ рдХреА рдзреНрд░реБрд╡реАрдпрддрд╛ рдХреЛ рдмрджрд▓рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдпрд╛рдиреАред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, PWM рдореЛрдб 1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

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

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

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

рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдо TIMx_CR1 рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдЯрд╛рдЗрдорд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; 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;
}

рдЪреМрдХрд╕ рдкрд╛рдардХ рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдереЛрдбрд╝рд╛ рджреЛрд╖рдкреВрд░реНрдг рдкреАрдбрдмреНрд▓реВрдПрдо рд╣реИ, рдЬреЛ 100% рднрд░рдг рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реИ (255 рдХреЗ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдкрд░, рд╕рд┐рдЧреНрдирд▓ рдПрдХ рдЯрд╛рдЗрдорд░ рдЪрдХреНрд░ рдХреЗ рд▓рд┐рдП рдЙрд▓рдЯрд╛ рд╣реИ)ред рдПрд▓ рдИ рдбреА рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреЛрдИ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛, рдФрд░ рдЪреМрдХрд╕ рдкрд╛рдардХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рджреВрд╕рд░реЗ рдЯрд╛рдЗрдорд░ рдкрд░ рдкреАрдбрдмреНрд▓реВрдПрдо рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЖрдЗрдП рдкрд╣рд▓реЗ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред

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

рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреЗрд╡рд▓ рдЯрд╛рдЗрдорд░ 1 рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдкреВрд░реНрдг рдЕрдиреБрднрд╛рдЧ рдХреЛ рджреЗрдЦрдХрд░ рд╣реА рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдо рдЙрд╕ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рджреВрд╕рд░реЗ рдЯрд╛рдЗрдорд░ рдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИред рд╡рд╣рд╛рдВ 17.7.30 рдмреНрд░реЗрдХ рд░рдЬрд┐рд╕реНрдЯрд░ (TIM1_BKR), рдЬрд╣рд╛рдВ рдпрд╣ рдмрд┐рдЯ рд╣реИ:

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ
рдореБрдЦреНрдп рдЖрдЙрдЯрдкреБрдЯ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ

#define TIM1_BKR   *(volatile uint8_t *)0x00526D

TIM1_BKR = (1<<7);

рдЕрдм рдпрд╣ рд╕рдм рдирд┐рд╢реНрдЪрд┐рдд рд╣реИ, рдХреЛрдб рдЙрд╕реА рдЬрдЧрд╣ рдкрд░.

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ

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

STM8 рдкрд░ рдорд▓реНрдЯреАрдкреНрд▓реЗрдХреНрд╕рд┐рдВрдЧ

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

рдХрд╛рд░реНрдп рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрддрд╛ рд╣реИ:

  • рдкрд╣рд▓реЗ рдЖрд░рдЬреАрдмреА рдПрд▓рдИрдбреА рдХрд╛ рдПрдиреЛрдб рдЬреБрдбрд╝рд╛;
  • рдЗрд╕реЗ рдЬрд▓рд╛рдпрд╛, рдХреИрдереЛрдб рдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдХреЗрдд рднреЗрдЬреЗ;
  • рдкреАрдбрдмреНрд▓реВрдПрдо рдЪрдХреНрд░ рдХреЗ рдЕрдВрдд рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рдЧрдИ;
  • рджреВрд╕рд░реЗ рдЖрд░рдЬреАрдмреА рдПрд▓рдИрдбреА рдХрд╛ рдПрдиреЛрдб рдЬреБрдбрд╝рд╛;
  • рдЙрд╕реЗ рдЬрд▓рд╛рдПрдВ...

рдЦреИрд░, рдЖрджрд┐. рдмреЗрд╢рдХ, рд╕реБрдВрджрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдПрдиреЛрдб рдЬреБрдбрд╝рд╛ рд╣реЛ рдФрд░ рдПрд▓рдИрдбреА рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ "рдкреНрд░рдЬреНрд╡рд▓рд┐рдд" рд╣реЛред рдЦрд╝реИрд░, рдпрд╛ рд▓рдЧрднрдЧ. рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдореЗрдВ рдПрдХ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рджреВрд╕рд░реЗ рдЯрд╛рдЗрдорд░ рдХреЗ рддреАрди рдЪреИрдирд▓реЛрдВ рдореЗрдВ рдорд╛рди рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдЧрд╛, рдпреВрдИрд╡реА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдкрд░ рдЙрдиреНрд╣реЗрдВ рдмрджрд▓ рджреЗрдЧрд╛, рдФрд░ рд╕рд╛рде рд╣реА рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдХреНрд░рд┐рдп рдЖрд░рдЬреАрдмреА рдПрд▓рдИрдбреА рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ред

рдЪреВрдВрдХрд┐ рдПрд▓рдИрдбреА рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ "рд╡реАрдбрд┐рдпреЛ рдореЗрдореЛрд░реА" рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЗрдВрдЯрд░рдкреНрдЯ рд╣реИрдВрдбрд▓рд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред рдпрд╣ рдПрдХ рд╕рд░рд▓ рд╕рд░рдгреА рд╣реИ:

uint8_t colors[8][3];

рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрд▓рдИрдбреА рдХрд╛ рд░рдВрдЧ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╕рд░рдгреА рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдорд╛рди рд▓рд┐рдЦрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред рдФрд░ рд╡реЗрд░рд┐рдПрдмрд▓ рд╕рдХреНрд░рд┐рдп рдПрд▓рдИрдбреА рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛

uint8_t cnt;

demux рдХреЗ

рдЙрдЪрд┐рдд рдорд▓реНрдЯреАрдкреНрд▓реЗрдХреНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд, рдПрдХ CD74HC238 рдбрд┐рдорд▓реНрдЯреАрдкреНрд▓реЗрдХреНрд╕рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдбрд┐рдорд▓реНрдЯреАрдкреНрд▓реЗрдХреНрд╕рд░ - рдПрдХ рдЪрд┐рдк рдЬреЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЗрдВ рдСрдкрд░реЗрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИ <<. рддреАрди рдЗрдирдкреБрдЯ рдкрд┐рди (рдмрд┐рдЯреНрд╕ 0, 1 рдФрд░ 2) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдо рдЗрд╕реЗ рдПрдХ рддреАрди-рдмрд┐рдЯ рдирдВрдмрд░ рдПрдХреНрд╕ рдЦрд┐рд▓рд╛рддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ рдирдВрдмрд░ рд╕рдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИ (1<<X). рдЪрд┐рдк рдХреЗ рд╢реЗрд╖ рдЗрдирдкреБрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреВрд░реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЛ рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдореЗрдВ рдЗрд╕ рдЪрд┐рдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рдХреЗрд╡рд▓ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдХрдмреНрдЬреЗ рд╡рд╛рд▓реЗ рдкрд┐рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдмрд▓реНрдХрд┐ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рднреА рд╣реИ - рддрд╛рдХрд┐ рдЧрд▓рддреА рд╕реЗ рд╕рдВрднрд╡ рд╕реЗ рдЕрдзрд┐рдХ рдПрд▓рдИрдбреА рдЪрд╛рд▓реВ рди рд╣реЛрдВ рдФрд░ рдПрдордХреЗ рди рдЬрд▓реЗред рдЪрд┐рдк рдХреА рдХреАрдордд рдПрдХ рдкреИрд╕рд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рдЖрдкрдХреЗ рдШрд░реЗрд▓реВ рджрд╡рд╛ рдХреИрдмрд┐рдиреЗрдЯ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ
рдПрдЪ = рдЙрдЪреНрдЪ рд╡реЛрд▓реНрдЯреЗрдЬ рд╕реНрддрд░, рдПрд▓ = рдирд┐рдореНрди рд╡реЛрд▓реНрдЯреЗрдЬ рд╕реНрддрд░, рдПрдХреНрд╕ - рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ

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

рдкреАрдбрдмреНрд▓реВрдПрдо

рджреВрд╕рд░реЗ рдЯрд╛рдЗрдорд░ рдкрд░ PWM рдХреЛ рдкрд┐рдЫрд▓реА рдХрд╣рд╛рдиреА рдХреА рддрд░рд╣ рд╣реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рджреЛ рдЕрдВрддрд░реЛрдВ рдХреЗ рд╕рд╛рде:

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

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ
рдЗрдВрдЯрд░рдкреНрдЯ рдЗрдиреЗрдмрд▓ рд░рдЬрд┐рд╕реНрдЯрд░

#define TIM2_IER   *(volatile uint8_t *)0x005303

//enable interrupt
TIM2_IER = 1;

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

рдмрджрд▓рддреА рдзреНрд░реБрд╡рддрд╛:

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

рдЖрд░, рдЬреА рдФрд░ рдмреА рдХреЛ 255 рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВ рдФрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЙрдиреНрд╣реЗрдВ рдЙрд▓реНрдЯрд╛ рдХрд░рдирд╛ рдпрд╛рдж рд░рдЦреЗрдВред

рдмреАрдЪ рдореЗрдВ рдЖрддрд╛ рд╣реИ

рд╡реНрдпрд╡рдзрд╛рди рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЪрд┐рдк рдореБрдЦреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддреА рд╣реИ рдФрд░ рдХреБрдЫ рдмрд╛рд╣рд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИред рдЯрд╛рдЗрдорд░ рд╕рд╣рд┐рдд рдмрд╛рд╣рд░реА рдпрд╛ рдЖрдВрддрд░рд┐рдХ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рдХрд╛рд░рдг рд╡реНрдпрд╡рдзрд╛рди рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред

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

рдбреЗрдЯрд╛рд╢реАрдЯ рдореЗрдВ рдЗрдВрдЯрд░рдкреНрдЯ рд╡реИрдХреНрдЯрд░ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рд╡реЗ рдорд┐рд▓рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:

рдбреЗрдЯрд╛рд╢реАрдЯ 2 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ
13 TIM2 рдЕрджреНрдпрддрди/рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣
14 TIM2 рдХреИрдкреНрдЪрд░/рддреБрд▓рдирд╛ рдХрд░реЗрдВ

рд╣рдореЗрдВ рдпреВрдИрд╡реА рдкрд░ рдПрд▓рдИрдбреА рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрдВрдЯрд░рдкреНрдЯ #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 рдкрдврд╝реЗрдВ: рдПрд╕рдЯреАрдПрдо32 рдкрд░ рдПрд╕рдкреАрдЖрдИ; STM8 рдкрд░ PWM, рдЯрд╛рдЗрдорд░ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ

рдпрджрд┐ рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рдХреЛ рдпрд╣ рд▓реЗрдЦ рдЙрдкрдпреЛрдЧреА рд▓рдЧрддрд╛ рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╡реНрдпрд░реНрде рдирд╣реАрдВ рд▓рд┐рдЦрд╛ред рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА, рдореИрдВ рд╣рд░ рдЪреАрдЬ рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ