ะ
ืืืึทื ื ืืื ืืืขื ืืืืึทืื ืืืจ ืืื ืฆื ื ืืฆื ืืึทืื ืฉืืฅ ืฆื ืกืึธืืืืข ืืึทื ืฅ ืคึผืฉืื, ืึธืืขืจ ื ืืืืืง ืคึฟืึทืจ ืคืืืข ืคึผืจืึทืืืฉืขืงืก, ืืึทืกืงืก ืืืืฃ STM32 (ืืืื ืคึผืื) ืืื STM8 ืงืึทื ืืจืึธืืืขืจื. ืึทืืข ืืขืืึธ ืคึผืจืึทืืืฉืขืงืก ืืขื ืขื ืืขืืึทืงืืืืึทื ืฆื ืืืื ืืึทืืืืกืืข ืืขืืก, ืืืจ ืืืขืื ืืืื ืืื ืืื ืืจืืืก ืงืืืึทื ืืึทืืื, ืคึฟืึทืจ ืืืึธืก ืืืจ ืืืขืื ืืึธืื ืฆื ื ืืฆื ืึทืืข ืกืึธืจืฅ ืคืื ืืฉืืงืึทืืืข ืคึผืขืจืืคืขืจืึทืืก.
ืืขืจ ืืขืงืกื ืืืืืขืจ ืืื ืืขืืืขื ืจืืืืง, ืึทืืื ืคึฟืึทืจ ืงืึทื ืืืื ืืึทื ืก ืืื ืืึทืื ืืขื ืืื ืืึทืื:
ืึธืคึผืืืืงืขื ืื ื: ืืื ืืื ื ืืฉื ืึท ืื ืืฉืขื ืืจ, ืืื ืืึธื ื ืื ืคืึทืจืืืื ืฆื ืืึธืื ืืืฃ ืืืืกื ืืื ืขืืขืงืืจืึธื ืืง, ืืขืจ ืึทืจืืืงื ืืื ืืืขื ืคึฟืึทืจ ืึทืืึทืืฉืขืจื ืืื ืืืจ. ืืื ืคืึทืงื, ืืื ืืขืืืืื ืืื ืืื ืฆืืืื ืืึธืจ ืฆืืจืืง ืืื ืืขืจ ืฆืื ืืืืขื. ืืืื ืขืืขืฆืขืจ ืืืึธืื ืืึธืื ืืืจ ืึทื ืืึทืืึทืฉืืฅ ืืืืฃ ืึท ืึทื ืคืึทืืืืืขืจ ืฉืคึผืึธื ืืขื ืขื ื ืืฉื ืกืงืขืจื ืฆื ืืืืขื ืขื, ืืื ืืืึธืื ื ืืฉื ืืึธืื ืคืืจืืจืืื ืึท ืคึผืืึทืฅ ืคืื ืฆืืื ืฆื ืืืื ืขืืืขืืข ืงืึธื ืืจืขืงืืขื ืืืืฃ ืื ืืื ืืขืจื ืขื ืืื ืื ืืืขื ืืื ื ืงืจืึทืืฉืื ืืื ืฉืขืจ ืืื ืงืืขืคึผืืง ืืืืคึผ.
ืืขืจ ืคืึธืงืืก ืคืื ืืขื ืึทืจืืืงื ืืื ืืืืฃ ืืึทืืึทืฉืืฅ, ื ืืฉื ืคึผืจืึทืืืฉืขืงืก, ืึทืืื ืืขืจ ืงืึธื ืงืขื ื ืืฉื ืืืื ืืืืขืจ ืฆืืืืืง ืืื ืึธืคื ืขื ื. ืื ืคึผืจืึทืืืฉืขืงืก ืืื ืืขื ืขื ืืืืขืจ ืคึผืฉืื, ืืึธืืฉ ืคึผืึทืกืืง ืคึฟืึทืจ ืึท ืขืจืฉืืขืจ ืืึทืงืึทื ืืขืจ ืืื ืื ื ืืึท ืฉืคึผืึธื.
ืืื ืืึธืคึฟื ืึทื ืืืื ืึทืจืืืงื ืืืขื ืืขืืคื ืขืืขืฆืขืจ ืืื ืึท ืขื ืืขื ืืื ืข ืคืื โโืืืืื ืืื ืื ืคืขืจืื.
STM32
16 ืืขืืก ืืื DM634 ืืื SPI
ื ืงืืืื ืคึผืจืืืขืงื ื ืืฆื ืืื ืคึผืื (STM32F103C8T6) ืืื DM634 ืืขืคืืจื ืฉืึธืคืขืจ. ื ืืฆื ืืึทืืึทืฉืืฅ, ืืืจ ืืืขืื ืืขืคึฟืื ืขื ืื ืฉืึธืคืขืจ, STM IO ืคึผืึธืจืฅ ืืื ืงืึทื ืคืืืืขืจ SPI.
ืืืงืกื ืืืงืก
ืืืืืืึทื ืฉืคึผืึธื ืืื 16 16-ืืืกื ืคึผืืื ืึทืืืคึผืืฅ, ืงืขื ืขื ืืืื ืงืึธื ื ืขืงืืขื ืืื ืงืืืื. ืื ื ืืืขืจืืง-ืกืืฃ 12-ืืืกื ืืึธืืขื ืืื ืืึทืืืืกื ืคืื ืึท ืืื ืขืจ ืคึผืจืืืขืงื
ืืื ื ืืขืจ ืคืึทืืจืืงืึทื ื ืืื ืืืืืืึทื,
DC ืกืื ืง ืงืืืืื (ืขืคึฟื ืคืืืกื)
ืืื ืงืขื / ืขืคืขื ืขื-ืคืืืกื ืจืขืืืืืึทื - ืึธืคึผืจืื; ืืงืืจ ืคืื ืื ืคืืึธืืื ื ืงืจืึทื ื; ืจืขืืืืืึทื, ืืื ืื ืึทืงืืืื ืฉืืึทื, ืงืึธื ื ืขืงืืขื ืฆื ืขืจื - ืืขืืก ืืขื ืขื ืคืืจืืื ืื ืฆื ืื ืฉืึธืคืขืจ ืืืจื ืงืึทืืึธืืื. ืขืืขืงืืจืืง, ืืึธืก ืืื, ืคืื ืงืืจืก, ื ืืฉื ืึท "ืขืคืขื ืขื ืคืืืกื" (ืขืคืขื ืขื ืคืืืกื), ืึธืืขืจ ืืื ืืึทืืึทืฉืืฅ ืืขื ืืึทืฆืืืืขื ืื ื ืคึฟืึทืจ ืคึผืื ืก ืืื ืคืืืกื ืืึธืืข ืืื ืึธืคื ืืขืคึฟืื ืขื.
ืคืื ืืจืืืกื ืืืง ืจืขืกืืกืืึธืจืก ืฆืืืืฉื REXT ืืื GND ืฆื ืฉืืขืื ืื ืจืขืืืืืึทื ืงืจืึทื ื ืืืขืจื
ื ืจืขืคึฟืขืจืขื ืฅ ืจืขืกืืกืืึธืจ ืืื ืืื ืกืืึทืืืจื ืฆืืืืฉื ืื REXT ืฉืืืคื ืืื ืขืจื, ืืืึธืก ืงืึธื ืืจืึธืืก ืื ืื ืขืจืืขื ืงืขืื ืฉืืขื ืคืื ืื ืึทืืืคึผืืฅ, ืืขื ืื ืืจืึทืคืืง ืืืืฃ ืืืึทื 9 ืคืื ืื ืืึทืืึทืฉืื. ืืื ืื DM634, ืืขื ืงืขืื ืฉืืขื ืงืขื ืขื ืืืื ืืืื ืงืึทื ืืจืึธืืื ืืืจื ืืืืืืืืืจื, ืืึทืฉืืขืืืงื ืื ืงืืืืขืืืืง ืืจืืืื ืึทืก (ืืืืืืืข ืืจืืืื ืึทืก); ืืื ืืืขื ื ืืฉื ืืืื ืืื ืืขืืึทืืืก ืืื ืืขื ืึทืจืืืงื, ืืื ืืืขื ื ืึธืจ ืฉืืขืื ืึท ืจืขืกืืกืืึธืจ ืคืื 2.2 - 3 ืืึธืื ืืึธ.
ืฆื ืคึฟืึทืจืฉืืืื ืืื ืฆื ืงืึธื ืืจืึธืืืจื ืื ืฉืคึผืึธื, ืืึธืืืจ ืงืืงื ืืื ืื ืืึทืฉืจืืึทืืื ื ืคืื ืื ืืืื ืฆืืืื ื:
ืืึธ, ืืึธ ืขืก ืืื ืืื ืขืืืฉ ืขื ืืืืฉ ืืื ืึทืืข ืืืึทื ืืืื. ืืืืขืจืืขืฆื ืืขื ืืื ืคึผืจืึธืืืขืืึทืืืง, ืืืจ ืงืขื ืขื ืคึฟืึทืจืฉืืืื ืขืก ืืืื ืืืจ ืืืืื, ืึธืืขืจ ืขืก ืืื ืื ืื ืืขืจ ืืืขื - ืงืืง ืืื ืื ืงืฉืจ ืฆื ืื ืคืึทื ืืงืฉืึทื ืึทืื ืขื ืืขื TLC5940 ืืื ืืืกืงืจืืืื ืืื ืื ืืึทืืึทืฉืื:
... ืืืืื ืืจืื ืคึผืื ืก ืืขื ืขื ืคืืจืืื ืื ืฆื ืึทืจืืึทื ืืึทืื ืืื ืื ืืืื. ืื ืจืืืืื ื ืืจืขื ืคืื ืื SCLK ืกืืื ืึทื ืฉืืคืฅ ืื ืืึทืื ืคืื ืื SIN ืฉืืืคื ืฆื ืื ืื ืขืจืืขื ืจืขืืืกืืจืืจื. ื ืึธื ืึทืืข ืืึทืื ืืขื ืขื ืืึธืืืื, ืึท ืงืืจืฅ ืืืื XLAT ืกืืื ืึทื ืืึทืืฉืึทื ืื ืกืึทืงืืืขื ืืฉืึทืื ืืจืึทื ืกืคืขืจื ืืึทืื ืืื ืื ืื ืขืจืืขื ืจืขืืืฉืืกืืขืจื. ืื ืขืจืืขื ืจืขืืืฉืืกืืขืจื ืืขื ืขื ืืืืขืจื ืืจืืืขืจื ืืืจื ืื XLAT ืกืืื ืึทื ืืืจืื. ืึทืืข ืืึทืื ืืขื ืขื ืืจืึทื ืกืืืืืขื ืจืืึฟ ืืึทืืืึทืืืง ืืืกื ืขืจืฉืืขืจ.
ืืึทืืฉ - ืืึทืืฉ / ืืึทืืฉ / ืฉืืึธืก.
ืจืืืืื ื ืืจืขื - ืืืืื ื ืืจืขื ืคืื ืื ืืืืคืขืง
MSB ืขืจืฉืืขืจ - ืจืืึฟ ืืึทืืืึทืืืง (ืืื ืงืกืืึธืืกื) ืืืกื ืคืึธืจืืืก.
ืฆื ืืืืืขืจ ืืึทืื - ืืืขืจืฉืืงื ืืึทืื ืกืึทืงืืืขื ืืฉืึทืื (ืืืกื ืืื ืืืกื).
ืืืึธืจื ืืึทืืฉ ืืื ืึธืคื ืืขืคืื ืขื ืืื ืื ืืึทืงืืืืขื ืืืืฉืึทื ืคึฟืึทืจ ืืฉืืคึผืก ืืื ืืื ืืืืขืจืืขืืขืฆื ืืื ืคืึทืจืฉืืื ืืืขืื, ืึทืืื ืคึฟืึทืจ ืื ืฆืืืื ืคืื ืคืืจืฉืืื ื ืืื ืืืขื ืืึธืื ืืื
ืึท ืงืืืื ืืืืืื ืืงืจืืื ืคึผืจืึธืืจืึทืืื ืืขืคืืจื ืฉืึธืคืขืจ ืืื ืืกืขื ืฉืึทืื ืึท ืืืขืจืจืืง ืจืขืืืกืืจืืจื. "ืฉืืคื" (ืืืขืจืจืืง) ืืื ืืขื ื ืึธืืขื - ืืืืืืืื ืืึทืืืขืืื ื ืคืื ืืึทืื ืื ืื ืืืื: ืืขืืขืจ ื ืืึท ืืืกื ืฉืืืคึผื ืื ืคึผืืฉืื ืื ืืื ืฆืข ืงืืื ืคืึธืจืืืก ืืื ืคืจืึธื ื ืคืื ืขืก. ืืื ื ืงืืื ืืืื ืขืจ ืืืื ืฆื ืึธืืกืขืจืืืืจื ืืึทืึธืืืฉ ืืืื ืงืื ื ืคืื ืื ืืขืืก ืืขืฉืึทืก ืื ืืืขืจืจืืง, ืืขืจ ืคึผืจืึธืฆืขืก ื ืขืื ืึธืจื ืืื ืืึทืคืขืจ ืจืขืืืฉืืกืืขืจื ืืคืืขืฉืืืื ืคืื ืื ืึทืจืืขื ืจืขืืืฉืืกืืขืจื ืืืจื ืึท ืืึทืืคึผืขืจ (ืืึทืืฉ) ืืื ืึท ืืื ืคืื ืืืืจืื ืฆืืืขืจ ืืื ืื ืืืื ืืขื ืขื ืขืจืืื ืืืฉื ืืื ืืขืจ ืืขืืืืื ืกืืงืืืึทื ืก. ืืืขื ืึทืืฅ ืืื ืืจืืื, ืื ืืึธืื ืขืคืขื ืขื ืืื ืื ืืืื ืืืื ืฆื ืึทืจืืขืื, ืจืืคึผืืืืกืื ื ืื ืคืจืืขืจืืืงืข ืคึผืขืงื. ืืืึธืจื ืืึทืืฉ ืืื ืื ืืึทืงืืืืขื ืืืืฉืึทื ืคึฟืึทืจ ืืืงืจืึธืกืืจืงืืืฅ ืึผืืขื ืฉืืขื ืืืง ืืืคึผืืืื ืึทืืึท ืึท ืืึทืืคึผืขืจ, ืงืืื ืขื ืื ืืื ืืืึธืก ืงืึทืืืึทื ืืืฉืึทื ื ืขืก ืืื ืืขื ืืฆื.
ืึทืืื, ืืึทืื ืึทืจืืืขืจืคืืจื ืฆื ืื DM634 ืืื ืืขืคืืจื ืืืืก ืืื ืืึธืก: ืฉืืขืื ืื ืืึทื ืึทืจืืึทื ืฉืจืืึทื ืฆื ืื ืืืขืจื ืคืื ืื ืืขืจืกื ืืึทืืืึทืืืง ืืืกื ืคืื ืื ืืืืึทื ืืขืคืืจื, ืฆืืขื ืื DCK ืึทืจืืืฃ ืืื ืึทืจืึธืคึผ; ืฉืืขืื ืื ืืึทื ืึทืจืืึทื ืฉืจืืึทื ืฆื ืื ืืืขืจื ืคืื ืื ืืืืึทืืขืจ ืืืกื, ืฆืืขื DCK; ืืื ืึทืืื ืืืืฃ ืืื ืึทืืข ืืืื ืืขื ืขื ืืจืึทื ืกืืืืืขื (ืืืื ืืขืงืืืคื), ื ืึธื ืืืึธืก ืืืจ ืฆืืขื LAT. ืืึธืก ืงืขื ืืืื ืืขืืื ืืึทื ืืืึทืื (ืืืกื-ืงืืึทืคึผ), ืึธืืขืจ ืขืก ืืื ืืขืกืขืจ ืฆื ื ืืฆื ืึท SPI ืฆืืืื ื ืืืึธืก ืืื ืกืคึผืขืฆืืขื ืืืืืขืจื ืคึฟืึทืจ ืืขื, ืืืืึทื ืขืก ืืื ืืขืจืืื ืื ืืืืฃ ืืื ืืืขืจ STM32 ืืื ืฆืืืื ืขืงืืขืืคืืืจื.
ืืืื ืคึผืื STM32F103
ืื ืืจืึทืืึทืงืืขืจื: STM32 ืงืึทื ืืจืึธืืืขืจื ืืขื ืขื ืคืื ืืขืจ ืงืึธืืคึผืืืฆืืจื ืืื Atmega328 ืืื ืืื ืงืขื ืืืกืงืืืขื ืกืงืขืจื. ืืขืจืฆื, ืคึฟืึทืจ ืขื ืขืจืืืข ืฉืคึผืึธืจื ืกืืืืช, ืึผืืขื ืึทืืข ืคึผืขืจืืคืขืจืึทืืก ืืขื ืขื ืืืืกืืขืืจืืื ืึทืืืขืง ืืื ืื ืึธื ืืืื, ืืื ืื ืืืืืขืจ ืึธืคืืงืืึทื ืืื 8 ืืื ืคึฟืื ืื ืื ืขืจืืขื ืืงืืจ. ืฆืื ืืืืง, STM ืคึผืจืึธืืืจืึทืืขืจื ืืขืฉืจืืื ืงืึธื ืืืึธืก ืืจืขื ืื ืื ืฉืคึผืึธื ืฆื ืื "ืงืึทืืงืืึทืืืืืื" 72 MHz, ืืื ืื ืืืืจืื ืคืื ืึทืืข ืื IDEs ืืืึธืก ืืื ืืืืกื ืึทืจืืึทื ืืขืจืขืื ื ืขืก ืืื ืื ืื ืืืืึทืืืืึทืืืึธื ืคึผืจืึธืฆืขืืืจ, ืึทืืื ืืืจ ืืึธื ื ืื ืืึทืจืคึฟื ืฆื ืืืืืขืจ (ืึธืืขืจ
ืืึทืงืืืืขื ืืืืฉืึทื: ืืืื ืคึผืื ืืื ืืงืืืืคึผื ืืื ืื ืคืึธืืงืก STM32F103C8T6 ืฉืคึผืึธื, ืขืก ืืขื ืขื ืฆืืืื ื ืืฆืืง ืืึธืงืืืขื ืื ืคึฟืึทืจ ืขืก:
ืืึทืืข ืฉืื ืคึฟืึทืจ ืืืงืจืึธืงืึธื ืืจืึธืืืขืจืก STM32F103x8 ืืื STM32F103xB;ืจืขืคึฟืขืจืขื ืฅ ืืึทื ืืึทื ืคึฟืึทืจ ืื ืืื ืฆืข STM32F103 ืฉืืจื ืืื ืืขืจ.
ืืื ืื ืืึทืื ืืืึทื ืืืจ ืงืขื ืืืื ืืื ืืขืจืขืกืืจื ืืื:
- ืคึผืื ืึธืืฅ - ืฉืคึผืึธื ืคึผืื ืึธืืฅ - ืืื ืคืึทื ืืืจ ืืึทืฉืืืกื ืฆื ืืึทืื ืื ืืึธืจืื ืืื;
- ืืึผืจืื ืืึทืคึผืข - ืืึผืจืื ืืึทืคึผืข ืคึฟืึทืจ ืึท ืกืคึผืขืฆืืคืืฉ ืฉืคึผืึธื. ืื ืจืขืคืขืจืขื ืฅ ืืึทื ืืึทื ืืื ืึท ืืึทืคึผืข ืคึฟืึทืจ ืื ืืื ืฆืข ืฉืืจื, ืืื ืขืก ืืขืจืืื ื ืจืขืืืฉืืกืืขืจื ืืืึธืก ืืื ืืืขืจ ืืื ื ืืฉื ืืึธืื.
- ืฉืืืคื ืืขืคึฟืื ืืฆืืข ืืืฉ - ืืืกืืื ื ืื ืืืืคึผื ืืื ืึธืืืขืจื ืึทืืืื ืคืึทื ืืงืฉืึทื ื ืคืื ืคึผืื ืก; ืคึฟืึทืจ ืื "ืืืื ืคึผืื" ืืืจ ืงืขื ืขื ืืขืคึฟืื ืขื ืืขืจ ืืึทืงืืืขื ืืืืืขืจ ืืืืฃ ืื ืืื ืืขืจื ืขื ืืื ืึท ืจืฉืืื ืคืื ืคึผืื ืก ืืื ืืืืขืจ ืคืึทื ืืงืฉืึทื ื. ืืขืจืืืขืจ, ืืืจ ืืื Google ืืื ืคึผืื ืคึผืื ืึธืื ืืื ืืึทืืื ืืขื ืืืื ืืื ืืึทื ื:
ื .ื.: ืขืก ืืื ืืขืืืขื ืึท ืืขืืช ืืื ืื ืืืื ืคืื ืื ืืื ืืขืจื ืขื, ืืืึธืก ืืื ืืขืืืขื ืืืืขืจืงื ืืื ืื ืืึทืืขืจืงืื ืืขื, ืืึทื ืงืขื ืืืจ ืคึฟืึทืจ ืืขื. ืื ืืืื ืืื ืจืืคึผืืืืกื, ืึธืืขืจ ืืึธืก ืืื ืึท ืืขืงืฆืืข - ืขืก ืืื ืืขืกืขืจ ืฆื ืงืึธื ืืจืึธืืืจื ืืื ืคึฟืึธืจืืึทืฆืืข ื ืืฉื ืคึฟืื ืืึทืืึทืฉืืฅ.
ืืืจ ืืึทืืืึทืืืงื ืื ืืึทืืึทืฉืื, ืขืคืขื ืขื ืื ืจืขืคืขืจืขื ืฅ ืืึทื ืืึทื, ืืื ืคึฟืื ืืืฆื ืืืืฃ ืืืจ ื ืืฆื ืขืก ืืืืื.
ืคึผืจืึธืฆืขืืืจ: ืืืจ ืืึทื ืืืขื ืืื ื ืึธืจืืึทื ืึทืจืืึทื ืฉืจืืึทื / ืจืขืืืืืึทื, ืงืึทื ืคืืืืขืจ ืกืคึผื, ืงืขืจ ืืืืฃ ืื ื ืืืืืง ืคึผืขืจืืคืขืจืึทืืก.
ืึทืจืืึทื ืฉืจืืึทื ืจืขืืืืืึทื
ืืืืฃ ืื Atmega328, ืืื / ืึธ ืืื ืืืคึผืืึทืืขื ืึทื ืืึธืจ ืคึผืฉืื, ืืืึธืก ืืื ืืืึธืก ืื ืืขื ืคืื STM32 ืึธืคึผืฆืืขืก ืงืขื ืขื ืืืื ืงืึทื ืคืืืืื ื. ืืืฆื ืืืจ ื ืึธืจ ืืึทืจืคึฟื ืงืึทื ืงืืืืฉืึทื ื, ืึธืืขืจ ืืคืืื ืื ืืึธืื ืคืืจ ืึธืคึผืฆืืขืก:
ืขืคืขื ืขื ืคืืืกื, ืฉืืืคึผื-ืฆืืขื, ืื ืืขืจ ืืจืืจื ืฉืืืคึผื-ืฆืืขื, ืื ืืขืจ ืืจืืจื ืขืคืขื ืขื ืคืืืกื
"ืฉืืืคึผื" (ืฉืืืคึผื-ืฆืืขื) ืืื ืื ืืขืืืืื ืืืขื ืจืขืืืืืึทื ืคืื ืื Arduino, ืื ืฉืืืคื ืงืขื ืขื ื ืขืืขื ืื ืืืขืจื ืึธืืขืจ ืืืื ืึธืืขืจ ื ืืืขืจืืง. ืืืขืจ ืืื "ืขืคืขื ืขื ืคืืืกื" ืขืก ืืขื ืขื
ืจืขืืืืืึทื ืงืึทื ืคืืืืขืจืืืฉืึทื / ืืืขื ืื ืคึผืึธืจื ืืื ืึทืกืืื ื ืฆื ืจืขืืืืืึทื: / ืจืขืืืืืึทื ืืึทืคืขืจ ืขื ืืืืึทืื: / - ืขืคืขื ืขื ืคืืืกื ืืึธืืข: "0" ืืื ืื ืจืขืืืืืึทื ืจืขืืืกืืจืืจื ืื ืืืืึทืื N-MOS, "1" ืืื ืื ืจืขืืืืืึทื ืจืขืืืกืืจืืจื ืืึธืื ืื ืคึผืึธืจื ืืื Hi-Z ืืึธืืข ( P-MOS ืืื ื ืืฉื ืึทืงืืืืืืืืื) / - ืฉืืืคึผื-ืฆืืขื ืืึธืืข: "0" ืืื ืื ืจืขืืืืืึทื ืจืขืืืกืืจืืจื ืึทืงืืึทืืืืืฅ N-MOS, "1" ืืื ืื ืจืขืืืืืึทื ืจืขืืืกืืจืืจื ืึทืงืืึทืืืืืฅ P-MOS.
ืึทืืข ืื ืืืืืง ืฆืืืืฉื ืขืคืขื ืขื ืคืืืกื (ืขืคืขื ืขื ืคืืืกื) ืคืื "ืฉืืืคึผื-ืฆืืขื" (ืฉืืืคึผื-ืฆืืขื) ืืื ืึทื ืืื ืืขืจ ืขืจืฉืืขืจ ืฉืืืคื ืงืขื ืขื ื ืืฉื ืึธื ื ืขืืขื ืื HIGH ืฉืืึทื: ืืืขื ืฉืจืืืื ืืืื ืขืจ ืฆื ืื ืจืขืืืืืึทื ืจืขืืืกืืจืืจื, ืขืก ืืืื ืืื ืืืื ืงืขืื ืฉืืขื ืืึธืืข (ืืืื ืืืคึผืืืึทื ืก, ืื-ื). ืืืขื ืฉืจืืืื ื ืื, ืื ืฉืืืคื ืืืืืืืื ืื ืืขืืืข ืืื ืืืืืข ืืึธืืขืก, ืกืื ืืึทืืืฉืืงืื ืืื ืขืืขืงืืจืืง.
ืืื ื ืึธืจืืึทื ืจืขืืืืืึทื ืืึธืืข, ืื ืฉืืืคื ืคืฉืื ืืจืึธืืงืึทืกืฅ ืื ืืื ืืึทืื ืคืื ืื ืจืขืืืืืึทื ืจืขืืืกืืจืืจื. ืืื ืื "ืึธืืืขืจื ืึทืืืื" ืขืก ืืื ืงืึทื ืืจืึธืืื ืืืจื ืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืคึผืขืจืืคืขืจืึทืืก (ืืขื 9.1.4):
ืืืื ืึท ืคึผืึธืจื ืืืกื ืืื ืงืึทื ืคืืืืขืจื ืืื ืึท ืึธืืืขืจื ืึทืืืื ืคืื ืงืฆืืข ืฉืืืคื, ืื ืฉืืืคื ืจืขืืืกืืจืืจื ืืื ืคืึทืจืงืจืืคึผืื ืืื ืื ืฉืืืคื ืืื ืงืึธื ื ืขืงืืขื ืฆื ืื ืคึผืขืจืืคืขืจืึทื ืฉืืืคื.
ืึทืืืขืจื ืึทืืืืืข ืคืึทื ืืงืฉืึทื ืึทืืืื ืคืื ืืขืืขืจ ืฉืคึผืืืงืข ืืื ืืืกืงืจืืืื ืืื ืฉืคึผืืืงืข ืืขืคืื ืืืืึธื ืก ืื ืืึทืืึทืฉืื ืืื ืืืืฃ ืื ืืึทืื ืืึธืืืื ืืืื. ืฆื ืื ืงืฉืื ืคืื ืืืึธืก ืฆื ืืึธื ืืืื ืึท ืฉืืืคื ืืื ืขืืืขืืข ืึธืืืขืจื ืึทืืืื ืคืึทื ืืงืฉืึทื ื, ืื ืขื ืืคืขืจ ืืื ืืขืืขืื ืืืจื ืึท ืคืึธืึธืื ืึธืืข ืืื ืื ืืึทืืึทืฉืื:
ืืืื ืงืืืคื ืคึผืขืจืืคืขืจืึทืืก ื ืืฆื ืื ืืขืืืข ืฉืืืคื, ืฆื ืืืกืืืืื ืงืึธื ืคืืืงื ืฆืืืืฉื ืึธืืืขืจื ืึทืืืื ืคืึทื ืืงืฉืึทื ื, ืืืืื ืืืื ืคึผืขืจืืคืขืจืึทื ืืึธื ืืืื ืืขืืืืื ื ืืื ืึท ืฆืืื, ืืึทืืึทืื ืืื ืื ืคึผืขืจืืคืขืจืึทื ืืืืืขืจ ืืขืื ืืืกื (ืืื ืื ืฆืื ืขืืขื RCC ืจืขืืืกืืจืืจื).
ืฆืื ืกืืฃ, ืคึผืื ืก ืืื ืจืขืืืืืึทื ืืึธืืข ืืืื ืืึธืื ืึท ืืืืืขืจ ืืืืงืืึทื. ืืึธืก ืืื ืื ืื ืืขืจ ืขื ืขืจืืืข ืฉืคึผืึธืจื ืฉืืจืื; ืืื ืืื ืืืขืจ ืคืึทื, ืืืจ ื ืึธืจ ืฉืืขืื ืขืก ืฆื ืืึทืงืกืืืื ืืื ืคืึทืจืืขืกื ืขืก.
ืึทืืื: ืืืจ ื ืืฆื SPI, ืืืึธืก ืืืื ืึทื ืฆืืืื ืคึผืื ืก (ืืื ืืึทืื ืืื ืืื ืึท ืืืืืขืจ ืกืืื ืึทื) ืืึธื ืืืื "ืึธืืืขืจื ืึทืืืื ืฉืืืคึผ-ืฆืืขื ืคืื ืงืฆืืข", ืืื ืื ืื ืืขืจ ืืืื ืขืจ (LAT) ืืึธื ืืืื "ืจืขืืืืขืจ ืฉืืืคึผ-ืฆืืขื". ืึธืืขืจ ืืืืืขืจ ืืื ืืึทืฉืืืืขื, ืืึธืื ืืื ืื ืืึทื ืืืขื ืืื SPI.
ืกืคึผื
ืื ืื ืืขืจ ืงืืืื ืืืืืื ืืงืจืืื ืคึผืจืึธืืจืึทื
SPI ืึธืืขืจ Serial Peripheral Interface (ืกืืจืืึทื ืคึผืขืจืืคืขืจืึทื ืฆืืืื ื) ืืื ืึท ืคึผืฉืื ืืื ืืืืขืจ ืขืคืขืงืืืื ืฆืืืื ื ืคึฟืึทืจ ืงืึทื ืขืงืืื ื ืึท MK ืืื ืื ืืขืจืข MKs ืืื ืื ืึทืจืืืก ืืืขืื ืืืื. ืืขืจ ืคึผืจืื ืฆืืคึผ ืคืื ืืืึทื ืึธืคึผืขืจืึทืฆืืข ืืื ืฉืืื ืืืกืงืจืืืื ืืืืื, ืืื ืืืขืื ืื ืืื ืขืืืฉ ืืขืคืืจื ืฉืึธืคืขืจ (ืืื ืืขืจ ืืขืจืืึธื ืขื ืืึทื ืืึทื, ืืขื ืึธืคึผืืืืืื ื 25). SPI ืงืขื ืขื ืึทืจืืขืื ืืื ืืขื ("ืืขื") ืืื ืฉืงืืึทืฃ ("ืฉืงืืึทืฃ") ืืึธืืข. SPI ืืื ืคืืจ ืืงืขืจืืืง ืืฉืึทื ืึทืื, ืคืื ืืืึธืก ื ืื ืึทืืข ืงืขื ืขื ืืืื ืืขืืืืื ื:
- MOSI, ืืขื ืจืขืืืืืึทื / ืฉืงืืึทืฃ ืึทืจืืึทื ืฉืจืืึทื: ืืขื ืฉืืืคื ืืจืึทื ืกืืืื ืืึทืื ืืื ืืขื ืืึธืืข ืืื ื ืขืื ืืึทืื ืืื ืฉืงืืึทืฃ ืืึธืืข;
- ืืืกืึธ, ืืขื ืื ืคึผืื / ืฉืงืืึทืฃ ืจืขืืืืืึทื: ืืืืฃ ืื ืคืึทืจืงืขืจื, ืขืก ื ืขืื ืืื ืื ืืขื, ืืื ืืจืึทื ืกืืืื ืืื ืื ืฉืงืืึทืฃ;
- SCK, ืกืืจืืึทื ืืืืืขืจ: ืฉืืขืื ืื ืึธืคืืงืืึทื ืคืื ืืึทืื ืืจืึทื ืกืืืกืืข ืืื ืื ืืขื ืึธืืขืจ ื ืขืื ืึท ืืืืืขืจ ืกืืื ืึทื ืืื ืื ืฉืงืืึทืฃ. ืืกืขื ืฉืึทืื ืืืืืื ื ืืืฅ;
- ืกืก, ืฉืงืืึทืฃ ืกืขืืขืงื: ืืื ืื ืืืืฃ ืคืื ืืขื ืงืึทื ืึทื, ืืขืจ ืฉืงืืึทืฃ ืืืืืกื ืึทื ืขืคึผืขืก ืืื ืืขืืืืื ืคืื ืืื. ืืืืฃ STM32 ืขืก ืืื ืืขืจืืคื NSS, ืืื N = ื ืขืืึทืืืื, ื.ื. ืืขืจ ืงืึธื ืืจืึธืืืขืจ ืืืขืจื ืึท ืฉืงืืึทืฃ ืืืื ืขืก ืืื ืขืจื ืืื ืืขื ืงืึทื ืึทื. ืขืก ืงืึทืืืืื ื ืืขืืื ื ืืื ืื Open Drain Output ืืึธืืข, ืึธืืขืจ ืืึธืก ืืื ืื ืื ืืขืจ ืืขืฉืืืืข.
ืืื ืึทืืฅ ืึทื ืืขืจืฉ, SPI ืืืืฃ STM32 ืืื ืจืืึทื ืืื ืคืึทื ืืงืฉืึทื ืึทืืืื, ืืืึธืก ืืืื ืขืก ืขืคึผืขืก ืฉืืืขืจ ืฆื ืคึฟืึทืจืฉืืืื. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืขืก ืงืขื ืขื ืึทืจืืขืื ื ืื ืืืืื ืืื SPI, ืึธืืขืจ ืืืื ืืื ืึท I2S ืฆืืืื ื, ืืื ืืื ืื ืืึทืงืืืืขื ืืืืฉืึทื, ืืืืขืจ ืืืกืงืจืืคึผืฉืึทื ื ืืขื ืขื ืืขืืืฉื, ืขืก ืืื ื ืืืืืง ืฆื ืฉื ืืึทืื ืึทืืืขืง ืื ืืืืขืคืืืง ืืื ืึท ืืืึทืฆืืึทืืืง ืฉืืืืืขืจ. ืืื ืืืขืจ ืึทืจืืขื ืืื ืืึธืจ ืคึผืฉืื: ืืืจ ื ืึธืจ ืืึทืจืคึฟื ืฆื ืฉืืงื ืืึทืื ืืืืื ืืื MOSI ืืื SCK. ืืืจ ืืืื ืฆื ืึธืคึผืืืืืื ื 25.3.4 (ืืึทืื-ืืืคึผืืขืงืก ืงืึธืืื ืืงืึทืฆืืข, ืืึทืื-ืืืคึผืืขืงืก ืงืึธืืื ืืงืึทืฆืืข), ืืื ืืืจ ืืขืคึฟืื ืขื 1 ืืืืืขืจ ืืื 1 ืื ืืืืจืขืงืืืึธื ืึทื ืืึทืื ืืจืึธื (1 ืืืืืขืจ ืกืืื ืึทื ืืื 1 ืื ืืืืจืขืงืืืึธื ืึทื ืืึทืื ืืืึทื):
ืืื ืืขื ืืึธืืข, ืื ืึทืคึผืืึทืงืืืฉืึทื ื ืืฆื SPI ืืื ืืจืึทื ืกืืืกืืข-ืืืืื ืึธืืขืจ ืืึทืงืืืขื-ืืืืื ืืึธืืข. / ืืจืึทื ืกืืื-ืืืืื ืืึธืืข ืืื ืขื ืืขื ืฆื ืืืคึผืืขืงืก ืืึธืืข: ืืึทืื ืืขื ืขื ืืจืึทื ืกืืืืืขื ืืืืฃ ืื ืืจืึทื ืกืืืกืืข ืฉืืืคื (MOSI ืืื ืืขื ืืึธืืข ืึธืืขืจ ืืืกืึธ ืืื ืฉืงืืึทืฃ ืืึธืืข), ืืื ืื ืืึทืงืืืขื ืฉืืืคื (MISO ืึธืืขืจ MOSI ืจืืกืคึผืขืงืืืืืื) ืงืขื ืขื ืืืื ืืขืืืืื ื ืืื ืึท ืจืขืืืืขืจ ื / ืึธ ืฉืืืคื . ืืื ืืขื ืคืึทื, ืื ืึทืคึผืืึทืงืืืฉืึทื ื ืึธืจ ืืึทืจืฃ ืฆื ืืืื ืึธืจืืจื ืื Rx ืืึทืคืขืจ (ืืืื ืขืก ืืื ืืืืขื ืขื, ืขืก ืืืขื ืืืื ืงืืื ืืจืึทื ืกืคืขืจื ืืึทืื ืืึธืจื).
ืืจืืืก, ืื MISO ืฉืืืคื ืืื ืคืจืื, ืืึธืื ืืื ืื ืคืึทืจืืื ืื ืื LAT ืกืืื ืึทื ืฆื ืืื. ืืึธืืืจ ืงืืงื ืืื Slave Select, ืืืึธืก ืืืืฃ ืื STM32 ืงืขื ืขื ืืืื ืงืึทื ืืจืึธืืื ืคึผืจืึธืืจืึทืืืึทืืืง, ืืืึธืก ืืื ืืึธืจ ืืึทืงืืืขื. ืืืจ ืืืืขื ืขื ืืขื ืคึผืึทืจืึทืืจืึทืฃ ืคืื ืื ืืขืืืข ื ืึธืืขื ืืื ืึธืคึผืืืืืื ื 25.3.1 SPI ืึทืืืขืืืื ืข ืืึทืฉืจืืึทืืื ื:
ืืืืืืืืืจื ืงืึธื ืืจืึธื NSS (SSM = 1) / ืกืืึทืื ืกืขืืขืงืฆืืข ืืื ืคึฟืึธืจืืึทืฆืืข ืืื ืงืึทื ืืืื ื ืืื ืื SSI ืืืกื ืคืื ืื SPI_CR1 ืจืขืืืกืืจืืจื. ืื ืคืื ืืจืืืกื ืืืง NSS ืฉืืืคื ืืืืืื ืคืจืื ืคึฟืึทืจ ืื ืืขืจืข ืึทืคึผืืึทืงืืืฉืึทื ื.
ืขืก ืืื ืฆืืื ืฆื ืฉืจืืึทืื ืฆื ืื ืจืขืืืฉืืกืืขืจื. ืืื ืืึทืฉืืึธืกื ืฆื ื ืืฆื SPI2, ืงืืง ืคึฟืึทืจ ืืืื ืืึทืืข ืึทืืจืขืก ืืื ืื ืืึทืืึทืฉืื - ืืื ืึธืคึผืืืืืื ื 3.3 ืืึผืจืื ืืึทืคึผืข:
ื ื, ืืืืืจ ืื ืืืืื:
#define _SPI2_(mem_offset) (*(volatile uint32_t *)(0x40003800 + (mem_offset)))
ืขืคึฟืขื ืขื ืึธืคึผืืืืืื ื 25.3.3 ืืื ืื ืืื-ืืงืกืคึผืืึทื ืึทืืึธืจื ืืืื "ืงืึทื ืคืืืืขืจืื ื SPI ืืื ืืืจ ืืึธืืข":
1. ืฉืืขืื ืื ืกืืจืืึทื ืืืืืขืจ ืึธืคืืงืืึทื ืืื ืืืื ืืจ[2:0] ืืื ืื SPI_CR1 ืจืขืืืกืืจืืจื.
ืื ืจืขืืืฉืืกืืขืจื ืืขื ืขื ืืขืืืืื ืืื ืืขืจ ืจืขืคึฟืขืจืขื ืฅ ืืึทื ืืึทื ืึธืคึผืืืืืื ื ืืื ืื ืืขืืืข ื ืึธืืขื. ืึทืืจืขืก ืืืขืจืจืืง (ืึทืืจืขืก ืคืึธืืึธ) ืคึฟืึทืจ CR1 - 0x00, ืืืจื ืคืขืืืงืืึทื ืึทืืข ืืืื ืืขื ืขื ืงืืืจื (ืืึทืฉืืขืืืง ืืืขืจื 0x0000):
ืื BR ืืืื ืฉืืขืื ืื ืงืึธื ืืจืึธืืืขืจ ืืืืืขืจ ืืืืืืืขืจ, ืึทืืื ืืืืขืจืืึทื ืื ื ืื ืึธืคืืงืืึทื ืืื ืืืึธืก ืื SPI ืืืขื ืึทืจืืขืื. ืืื ืืืขืจ STM32 ืึธืคืืงืืึทื ืืืขื ืืืื 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. ืฉืืขืื ืื CPOL ืืื CPHA ืืืื ืฆื ืืขืคืื ืืจื ืื ืฉืืืืืช ืฆืืืืฉื ืืึทืื ืึทืจืืืขืจืคืืจื ืืื ืกืืจืืึทื ืืืืืขืจ ืืืืืื ื (ืืขื ืืืึทืืจืึทืืข ืืืืฃ ืืืึทื 240)
ืืื ื ืืืจ ืืืืขื ืขื ืึท ืืึทืืึทืฉืื ืืึธ ืืื ื ืืฉื ืงืืงื ืืื ืกืืขืืึทืืืงืก, ืืึธืื ืืื ืื ื ืขืืขื ืึท ื ืขืขื ืืขืจ ืงืืง ืืื ืื ืืขืงืกื ืืึทืฉืจืืึทืืื ื ืคืื ืื CPOL ืืื CPHA ืืืื ืืืืฃ ืืืึทื 704 (SPI ืึทืืืขืืืื ืข ืืึทืฉืจืืึทืืื ื):
ืืืืืขืจ ืคืึทืกืข ืืื ืคึผืึธืืืขืจืึทืื
ื ืืฆื ืื CPOL ืืื CPHA ืืืื ืคืื ืื SPI_CR1 ืจืขืืืกืืจืืจื, ืืืจ ืงืขื ืขื ืคึผืจืึธืืจืึทืืืึทืืืง ืืืืกืงืืืึทืื ืคืืจ ืืืืืื ื ืฉืืืืืช. ืื CPOL (ืืืืืขืจ ืคึผืึธืืืขืจืึทืื) ืืืกื ืงืึธื ืืจืึธืืก ืื ืฉืืึทื ืคืื ืื ืืืืืขืจ ืกืืื ืึทื ืืืขื ืงืืื ืืึทืื ืืขื ืขื ืืจืึทื ืกืืืืืขื. ืืขื ืืืกื ืงืึธื ืืจืึธืืก ืื ืืขื ืืื ืฉืงืืึทืฃ ืืึธืืขืก. ืืืื CPOL ืืื ืืึทืฉืืขืืืง, ืื SCK ืฉืืืคื ืืื ื ืืืขืจืืง ืืื ืื ืืื ืืึธืืข. ืืืื ืื CPOL ืืืกื ืืื ืืึทืฉืืืื, ืื SCK ืฉืืืคื ืืื ืืืื ืืขืฉืึทืก ืื ืืื ืืึธืืข.
ืืืขื ืื CPHA (ืืืืืขืจ ืคืึทืกืข) ืืืกื ืืื ืืึทืฉืืืื, ืื ืืืื ืืืกื ืืจืึทืคึผ ืกืืจืึธืื ืืื ืื ืจืืข ืืจืขื ืคืื ืื SCK ืกืืื ืึทื (ืคืึทืืื ื ืืืื CPOL ืืื ืงืืึธืจ, ืจืืืืื ื ืืืื CPOL ืืื ืืึทืฉืืืื). ืื ืืึทืื ืืขื ืขื ืงืึทืคึผืืฉืขืจื ืืืจื ืื ืจืืข ืขื ืืขืจืื ื ืืื ืื ืืืืืขืจ ืกืืื ืึทื. ืืืื ืื CPHA ืืืกื ืืื ืงืืึธืจ, ืื ืืืื ืืืกื ืืจืึทืคึผ ืกืืจืึธืื ืืื ืื ืจืืืืื ื ืืจืขื ืคืื ืื SCK ืกืืื ืึทื (ืคืึทืืื ื ืืจืขื ืืืื CPOL ืืื ืืึทืฉืืืื, ืจืืืืื ื ืืจืขื ืืืื CPOL ืืื ืงืืืจื). ืืึทืืข ืืื ืงืึทืคึผืืฉืขืจื ืืื ืืขืจ ืขืจืฉืืขืจ ืขื ืืขืจืื ื ืืื ืื ืืืืืขืจ ืกืืื ืึทื.
ืืืืื ืึทืืืึธืจืื ืืขื ืืืืกื, ืืืจ ืงืืืขื ืฆื ืื ืืกืงื ื ืึทื ืืืืืข ืืืื ืืืื ืืืืึทืื ืืขืจืึธืก, ืืืืึทื ืืืจ ืืืขืื ืึทื ืื SCK ืกืืื ืึทื ืืึธื ืืืืึทืื ื ืืืขืจืืง ืืืขื ื ืื ืืื ื ืืฆื, ืืื ืื ืืึทืื ืืึธื ืืืื ืืจืึทื ืกืืืืืขื ืืืืฃ ืื ืจืืืืื ื ืืจืขื ืคืื ืื ืืืืคืขืง (ืืขื Fig. ืจืืืืื ื ืขืืืฉ ืืื ืื DM634 ืืึทืื ืืืึทื).
ืืืจื ืืขื ืืืขื, ืืึธ ืืืจ ืขืจืฉืืขืจ ืืขืคึผืืึธื ืืขืจื ืึท ืฉืืจืื ืคืื ืื ืืืึธืงืึทืืืืึทืจื ืืื ST ืืึทืื ืฉืืฅ: ืืื ืืื ืื ืคืจืึทืืข "ืืึทืฉืืขืืืง ืื ืืืกื ืฆื ื ืื" ืืื ืืขืฉืจืืื ืฆื ืืึทืฉืืขืืืง ืึท ืืืกืืืื ื ืืฉื ืฆื ืงืืึธืจ ืึท ืืืกื, ืืื, ืืืฉื, Atmega.
3. ืฉืืขืื ืื DFF ืืืกื ืฆื ืืึทืฉืืืกื ืฆื ืื ืืึทืื ืืืึธืง ืืื 8-ืืืกื ืึธืืขืจ 16-ืืืกื ืคึฟืึธืจืืึทื
ืืื ืกืคึผืึทืกืืคืืงืื ืืขื ืืืขื ืึท 16-ืืืกื DM634 ืึทืืื ื ืืฉื ืฆื ืึทืจื ืืื ืืจืึทื ืกืืืืื ื 12-ืืืกื ืคึผืืื ืืึทืื, ืืื ืื DM633. ืขืก ืืืื ืืื ืขื ืฆื ืฉืืขืื DFF ืฆื ืืืื:
#define DFF 0x0800
_SPI2_ (_SPI_CR1) |= DFF; // 16-bit mode
4. ืงืึทื ืคืืืืขืจ ืื LSBFIRST ืืืกื ืืื ืื SPI_CR1 ืจืขืืืกืืจืืจื ืฆื ืืึทืฉืืืืขื ืืขื ืืืึธืง ืคึฟืึธืจืืึทื
LSBFIRST, ืืื ืืืื ื ืึธืืขื ืกืึทืืืืฉืขืก, ืงืึทื ืคืืืืขืจ ืืจืึทื ืกืืืกืืข ืืื ืืขืจ ืืื ืืกืืขืจ ืืึทืืืืืืง ืืืกื ืขืจืฉืืขืจ. ืึธืืขืจ DM634 ืืืื ืฆื ืืึทืงืืืขื ืืึทืื ืคึฟืื ืื ืืขืจืกื ืืึทืืืึทืืืง ืืืกื. ืืขืจืืืขืจ, ืืืจ ืืึธืื ืขืก ืืึทืฉืืขืืืง.
5. ืืื ืืึทืื ืืืึทืจื ืืึธืืข, ืืืื ืึทืจืืึทื ืฉืจืืึทื ืคืื ืื NSS ืฉืืืคื ืืื ืคืืจืืื ืื, ืฆืืืืืื ืึท ืืืื ืกืืื ืึทื ืฆื ืื NSS ืฉืืืคื ืืขืฉืึทืก ืื ืืื ืฆืข ืืืื ืึทืจืืืขืจืคืืจื ืกืืงืืืึทื ืก. ืืื NSS ืืืืืืืืืจื ืืึธืืข, ืฉืืขืื ืื SSM ืืื SSI ืืืื ืืื ืื SPI_CR1 ืจืขืืืกืืจืืจื. ืืืื ืื NSS ืฉืคึผืืืงืข ืืึธื ืืืื ืืขืืืืื ื ืืื ืึท ืจืขืืืืืึทื, ื ืึธืจ ืื SSOE ืืืกื ืืึทืจืฃ ืืืื ืฉืืขืื.
ืื ืกืืึทืืืจื SSM ืืื SSI ืฆื ืคืึทืจืืขืกื ืืืขืื ืื NSS ืืึทืื ืืืึทืจื ืืึธืืข:
#define SSI 0x0100
#define SSM 0x0200
_SPI2_ (_SPI_CR1) |= SSM | SSI; //enable software control of SS, SS high
6. ืื MSTR ืืื SPE ืืืื ืืืื ืืืื ืืึทืฉืืืื (ืืื ืืืืืื ืืึทืฉืืืื ืืืืื ืืืื ืื NSS ืกืืื ืึทื ืืื ืืืื)
ืึทืงืืืึทืืื, ืืื ืื ืืืื ืืืจ ืืขืืืื ืืื ืืื ืืืขืจ SPI ืืื ืึท ืืขื ืืื ืงืขืจ ืขืก ืืืืฃ:
#define MSTR 0x0004
#define SPE 0x0040
_SPI2_ (_SPI_CR1) |= MSTR; //SPI master
//ะบะพะณะดะฐ ะฒัะต ะณะพัะพะฒะพ, ะฒะบะปััะฐะตะผ SPI
_SPI2_ (_SPI_CR1) |= SPE;
SPI ืืื ืงืึทื ืคืืืืขืจื, ืืึธืื ืืื ืื ืืืืื ืฉืจืืึทืื ืคืึทื ืืงืฉืึทื ื ืืืึธืก ืฉืืงื ืืืืขืก ืฆื ืื ืฉืึธืคืขืจ. ืคืึธืจืืขืฆื ืืืืขื ืขื 25.3.3 "ืงืึทื ืคืืืืขืจืื ื SPI ืืื ืืขื ืืึธืืข":
ืืึทืืข ืึทืจืืืขืจืคืืจื ืกืืจ
ืืจืึทื ืกืืืกืืข ืืืืื ืืื ืึธื ืืืขื ืึท ืืืื ืืื ืืขืฉืจืืื ืฆื ืื ืืงืก ืืึทืคืขืจ.
ืื ืืึทืื ืืืืข ืืื ืืึธืืืื ืืื ืื ืืืขืจืจืืง ืจืขืืืกืืจืืจื ืืืึท ืคึผืึทืจืึทืืขื ืืึธืืข (ืคืื ืื ืื ืขืจืืขื ืืืืึธืืืก) ืืขืฉืึทืก ืื ืืจืึทื ืกืืืกืืข ืคืื โโืืขืจ ืขืจืฉืืขืจ ืืืกื, ื ืึธื ืืืึธืก ืขืก ืืื ืืจืึทื ืกืืืืืขื ืฆื ืกืึทืงืืืขื ืืฉืึทื MOSI ืฉืืืคื ืืึธืืข, ืขืจืฉืืขืจ ืึธืืขืจ ืืขืฆืืข ืืืกื ืคืึธืจืืืก ืืืคึผืขื ืืื ื ืืืืฃ ืื ืืึทืฉืืขืืืงื ืคืื ืื LSBFIRST ืืืกื ืืื ืื CPI_CR1 ืจืขืืืกืืจืืจื. ืื TXE ืคืึธื ืืื ืืึทืฉืืืื ื ืึธื ืืึทืื ืืจืึทื ืกืืืกืืข ืคืื ืืงืก ืืึทืคืขืจ ืฆื ืืืขืจืจืืง ืจืขืืืกืืจืืจื, ืืื ืืืื ืืืฉืขื ืขืจืืืฅ ืึท ืืืขืจืจืืึทืก ืืืื ืื TXEIE ืืืกื ืืื ืื CPI_CR1 ืจืขืืืกืืจืืจื ืืื ืืึทืฉืืืื.
ืืื ืืืืืืืืื ืึท ืืืกื ืืืขืจืืขืจ ืืื ืืขืจ ืืืืขืจืืขืฆืื ื ืฆื ืืคืืขืจืงืืึทืืงืืื ืฆื ืืืื ืฉืืจืื ืคืื ืื ืืืคึผืืึทืืขื ืืืืฉืึทื ืคืื SPI ืืื STM ืงืึทื ืืจืึธืืืขืจื. ืืืืฃ Atmega ืื TXE ืคืึธื (ืืงืก ืืืืืืง, ืืงืก ืืื ืืืืืืง ืืื ืืจืืื ืฆื ืืึทืงืืืขื ืืึทืื) ืืื ืืึทืฉืืืื ืืืืื ื ืึธื ืื ืืื ืฆืข ืืืื ืืื ืืขืฉืืงื ืืืืก. ืืื ืืึธ ืืขื ืคืึธื ืืื ืืึทืฉืืืื ื ืึธื ืื ืืืื ืืื ืื ืกืขืจืืึทื ืืื ืื ืื ืขืจืืขื ืืืขืจืจืืง ืจืขืืืกืืจืืจื. ืืื ื ืขืก ืืื ืคึผืืฉื ืืึธืจื ืืื ืึทืืข ืื ืืืื ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืื (ืืื ืคึผืึทืจืึทืืขื), ืืื ืืึทื ืื ืืึทืื ืืขื ืขื ืืจืึทื ืกืคืขืจื ืกืึทืงืืืขื ืืฉืึทืื, TXE ืืื ืืึทืฉืืืื ืืืืืขืจ ืื ืืืืข ืืื ืืึธืจ ืืขืฉืืงื. ืืึธืก ืืื ืืืืืืืง ืืืืึทื ืืื ืืขื ืคืึทื ืคืื ืืื ืืืขืจ ืืขืคืืจื ืฉืึธืคืขืจ, ืืืจ ืืึทืจืคึฟื ืฆื ืฆืืขื ืื LAT ืฉืืืคื ื ืึธื ืฉืืงื ืึทืืข ืืึทืื, ื.ื. ืื TXE ืคืึธื ืึทืืืื ืืืขื ื ืืฉื ืืืื ืืขื ืื ืคึฟืึทืจ ืืื ืื.
ืืึธืก ืืืื ื ืึทื ืืืจ ืืึทืจืคึฟื ืื ืื ืืขืจ ืคืึธื. ืืึธืืืจ ืงืืงื ืืื 25.3.7 - "ืกืืึทืืืก ืคืืึทืืก":
<โฆ>
ืคืึทืจื ืืืขื ืคืึธื
ืื BSY ืคืึธื ืืื ืืึทืฉืืืื ืืื ืงืืืจื ืืืจื ืืึทืื ืืืึทืจื (ืฉืจืืืื ืฆื ืขืก ืืื ืงืืื ืืืืจืงืื ื). ืื BSY ืคืึธื ืื ืืืงืืืฅ ืื ืฉืืึทื ืคืื ืื SPI ืงืึธืืื ืืงืึทืฆืืข ืฉืืืืข.
ืขืก ืจืืกืืึทืจื:
ืืืขื ืื ืึทืจืืืขืจืคืืจื ืืื ืืขืขื ืืืงื (ืึทืืืฅ ืืื ืืขื ืืึธืืข ืืืื ืื ืึทืจืืืขืจืคืืจื ืืื ืงืขืกืืืืขืจืืืง)
ืืืขื SPI ืืื ืคืึทืจืงืจืืคึผืื
ืืืขื ืึท ืืขื ืืึธืืข ืืขืืช ืึทืงืขืจื (MODF = 1)
ืืืื ืื ืึทืจืืืขืจืคืืจื ืืื ื ืืฉื ืงืขืกืืืืขืจืืืง, ืื BSY ืคืึธื ืืื ืงืืืจื ืฆืืืืฉื ืืขืืขืจ ืืึทืื ืึทืจืืืขืจืคืืจื
ืึธืืงืื, ืืึธืก ืืืขื ืงืืืขื ืืื ืืึทื ืืืง. ืืื ืก ืืขืคืื ืขื ืืืืก ืืื ืื ืืงืก ืืึทืคืขืจ ืืื ืืืื. ืฆื ืืึธื ืืึธืก, ืืืืขื ืขื "SPI Data Register":
ืืืื 15:0 DR[15:0] ืืึทืืึท ืจืขืืืกืืจืืจื
ืืึทืื ืืืงืืืขื ืึธืืขืจ ืืึทืื ืฆื ืืืื ืืจืึทื ืกืืืืืขื.
ืื ืืึทืื ืจืขืืืกืืจืืจื ืืื ืฆืขืืืืื ืืื ืฆืืืื ืืึทืคืขืจื - ืืืื ืขืจ ืคึฟืึทืจ ืฉืจืืืื (ืืจืึทื ืกืืืืื ื ืืึทืคืขืจ) ืืื ืืืื ืขืจ ืคึฟืึทืจ ืืืืขื ืขื (ืืึทืงืืืขื ืืึทืคืขืจ). ืฉืจืืืื ืฆื ืื ืืึทืื ืจืขืืืกืืจืืจื ืฉืจืืืื ืฆื ืื ืืงืก ืืึทืคืขืจ, ืืื ืืืืขื ืขื ืคืื ืื ืืึทืื ืจืขืืืกืืจืืจื ืืืขื ืฆืืจืืงืงืืืขื ืื ืืืขืจื ืงืึทื ืืืื ื ืืื ืื ืจืงืก ืืึทืคืขืจ.
ื ื, ืืื ืื ืกืืึทืืืก ืจืขืืืกืืจืืจื, ืืื ืื TXE ืืื BSY ืคืืึทืืก ืืขื ืขื ืืขืคึฟืื ืขื:
ืืืจ ืฉืจืืืื:
#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 ืฉืืืคื ื ืึธื, ืึทืืื ืืืจ ืืืขืื ืฆืืจืืงืงืืืขื ืฆื ืืื / ืึธ.
ืึทืกืืื ืื ื ืคึผืื ืก
ืืื ืื STM32F1, ืื ืจืขืืืกืืขืจืก ืคืึทืจืึทื ืืืืึธืจืืืขื ืคึฟืึทืจ ืื ืฉืืึทื ืคืื ืื ืคึผืื ืก ืืขื ืขื ืืึทื ืฅ ืืืืขืืืืื ืืืขื. ืขืก ืืื ืงืืึธืจ ืึทื ืขืก ืืขื ืขื ืืขืจ ืคืื ืืื ืืื Atmega, ืึธืืขืจ ืืื ืืขื ืขื ืืืื ืึทื ืืขืจืฉ ืคืื ืื ืืขืจืข STM ืืฉืืคึผืก. ืึธืคึผืืืืืื ื 9.1 ืึทืืืขืืืื ืข ืืึทืฉืจืืึทืืื ื ืคืื GPIO:
ืืขืืขืจ ืคืื ืื ืึทืืืขืืืื ืข ื / ืึธ ืคึผืึธืจืฅ (GPIO) ืืื ืฆืืืื 32-ืืืกื ืงืึทื ืคืืืืขืจืืืฉืึทื ืจืขืืืฉืืกืืขืจื (GPIOx_CRL ืืื GPIOx_CRH), ืฆืืืื 32-ืืืกื ืืึทืื ืจืขืืืฉืืกืืขืจื (GPIOx_IDR ืืื GPIOx_ODR), ืึท 32-ืืืกื ืฉืืขืื / ืืึทืฉืืขืืืง ืจืขืืืกืืจืืจื (GPIOx_BSRR), ืึท 16-ืืืกื ืืึทืฉืืขืืืง ืจืขืืืกืืจืืจื (GPIOx_BRR) ืืื ืึท 32- ืืืกื ืืืึทืงืื ื ืจืขืืืกืืจืืจื (GPIOx_LCKR).
ืืขืจ ืขืจืฉืืขืจ ืฆืืืื ืจืขืืืฉืืกืืขืจื ืืขื ืขื ืืืืขืืืืื ืืืขื, ืืื ืืืื ืืึทื ืฅ ืืืืึทืงืืืขื, ืืืืึทื ืื 16 ืคึผืึธืจื ืคึผืื ืก ืืขื ืขื ืฆืขืืืึธืจืคื ืึทืจืืืขืจ ืืื ืืื ืึท "ืคืืจ ืืืื ืคึผืขืจ ืืจืืืขืจ" ืคึฟืึธืจืืึทื. ืืขื ืข. ืคึผืื ืก ื ืื ืฆื ืืืื ืืขื ืขื ืืื CRL, ืืื ืื ืื ืืื ืืขื ืขื ืืื CRH. ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืื, ืื ืจืืขื ืจืขืืืฉืืกืืขืจื ืืฆืืื ืึทื ืืืึทืืื ืื ืืืื ืคืื ืึทืืข ืคึผืื ืก ืคืื ืื ืคึผืึธืจื - ืึธืคื ืจืืขื ืืึทืื "ืจืขืืขืจืืืืจื".
ืคึฟืึทืจ ืคึผืึทืฉืืขืก, ืืึธืื ืืื ืื ืึธื ืืืืื ืคึฟืื ืื ืกืืฃ ืคืื ืืขืจ ืจืฉืืื.
ืืืจ ืืึธื ื ืื ืืึทืจืคึฟื ืึท ืืืึทืงืื ื ืจืขืืืกืืจืืจื.
ืื ืืึทืฉืืขืืืง ืืื ืืึทืฉืืขืืืง ืจืขืืืฉืืกืืขืจื ืืขื ืขื ืืึทื ืฅ ืืึธืื ืข ืืืืึทื ืืื ืืืื ืืืคึผืืืงืึทื ืืขืืขืจ ืื ืืขืจืขืจ: ืืืจ ืงืขื ืขื ืฉืจืืึทืื ืึทืืฅ ืืืืื ืืื BSRR, ืืื ืื ืืขืืขืจ 16 ืืืื ืืืขื ืืึทืฉืืขืืืง ืื ืฉืืืคื ืฆื ื ืื, ืืื ืื ื ืืืขืจืืงืขืจ ืึธื ืขืก ืืืขื ืืืื ืืึทืฉืืืื ืฆื 1, ืึธืืขืจ ืืืจ ืงืขื ืขื ืืืื ื ืืฆื BRR, ืื ื ืืืขืจืืงืขืจ 16 ืืืื ืคืื ืืืึธืก ืืืืื ืืึทืฉืืขืืืง ืื ืฉืืืคื. ืืื ืืื ืื ืจืืข ืึธืคึผืฆืืข. ืื ืจืขืืืฉืืกืืขืจื ืืขื ืขื ืืืืืืืง ืืืืึทื ืืื ืฆืืฉืืขืื ืึทืืึธืืืฉืข ืึทืงืกืขืก ืฆื ืคึผืื ืก:
ืึทืืึธืืืฉืข ืืึทืฉืืขืืืง ืึธืืขืจ ืืึทืฉืืขืืืง
ืขืก ืืื ื ืื ืืึทืจืคึฟื ืฆื ืืืกืืืืึทื ืื ืืขืจืึทืคึผืฅ ืืืขื ืคึผืจืึธืืจืึทืืืื ื GPIOx_ODR ืืืืฃ ืื ืืืกื ืืืจืื: ืืืื ืขืจ ืึธืืขืจ ืืขืจ ืืืื ืงืขื ืขื ืืืื ืคืืจืขื ืืขืจื ืืื ืึท ืืืื ืึทืืึธืืืฉืข ืฉืจืืึทืื ืึธืคึผืขืจืึทืฆืืข APB2. ืืึธืก ืืื ืึทืืฉืืืื ืืืจื ืฉืจืืืื ืึท "1" ืฆื ืื ืฉืืขืื / ืืึทืฉืืขืืืง ืจืขืืืกืืจืืจื (GPIOx_BSRR ืึธืืขืจ, ืคึฟืึทืจ ืืึทืฉืืขืืืง ืืืืื, GPIOx_BRR) ืคืื ืื ืืืกื ืืืึธืก ืืึทืจืฃ ืืืื ืืขืืืื. ืื ืืขืจืข ืืืื ืืืขื ืืืืึทืื ืึทื ืืฉืืื ืืืฉื.
ืื ืืึทืื ืจืขืืืฉืืกืืขืจื ืืึธืื ืืึทื ืฅ ืืื-ืืงืกืคึผืืึทื ืึทืืึธืจื ื ืขืืขื - IDR = ืึทืจืืึทื ืฉืจืืึทื ืจืืืืื ื ืจืขืืืกืืจืืจื, ืึทืจืืึทื ืฉืจืืึทื ืจืขืืืกืืจืืจื; ODR = ืจืขืืืืืึทื ืจืืืืื ื ืจืขืืืกืืจืืจื, ืจืขืืืืืึทื ืจืขืืืกืืจืืจื. ืืืจ ืืืขืื ืืื ื ืื ืืึทืจืคึฟื ืืื ืืขื ืงืจืึทื ื ืคึผืจืืืขืงื.
ืืื ืืขืกืึธืฃ, ืงืึธื ืืจืึธื ืจืขืืืฉืืกืืขืจื. ืืื ื ืืืจ ืืขื ืขื ืืื ืืขืจืขืกืืจื ืืื ืื ืจืืข SPI ืคึผืื ืก, ื ืืืืื PB13, PB14 ืืื PB15, ืืืจ ืืื ืงืืงื ืืื CRH:
ืืื ืืืจ ืืขื ืึทื ืืืจ ืืืขืื ืืึทืจืคึฟื ืฆื ืฉืจืืึทืื ืขืคึผืขืก ืืื ืืืื ืคืื 20 ืฆื 31.
ืืืจ ืืึธืื ืฉืืื ืคืืืืขืจื ืืืืื ืืืึธืก ืืืจ ืืืขืื ืคืื ืคึผืื ืก, ืึทืืื ืืึธ ืืื ืืืขื ืืึธื ืึธื ืึท ืกืงืจืขืขื ืฉืึธื, ืืื ืืืขื ื ืึธืจ ืืึธืื ืึทื MODE ืกืคึผืขืฆืืคืืฆืืจื ืื ืจืืืืื ื (ืึทืจืืึทื ืจืืึทื ืืืื ืืืืืข ืืืื ืืขื ืขื ืืึทืฉืืืื ืฆื 0) ืืื ืฉืืืคื ืืืืงืืึทื (ืืืจ ืืึทืจืคึฟื 50MHz, ื"ื. ืืืืืข ืฉืืืคื ืฆื "1"), ืืื CNF ืฉืืขืื ืื ืืึธืืข: ืจืขืืืืขืจ "ืฉืืืคึผื-ืฆืืขื" - 00, "ืึธืืืขืจื ืึทืืืื" - 10. ืืื ืื ืคืขืืืงืืึทื, ืืื ืืืจ ืืขื ืืืืื, ืึทืืข ืคึผืื ืก ืืึธืื ืื ืืจืื ืืืกื ืคืื ืื ืื ืึธ (CNF0), ืขืก ืฉืืขืื ืืื ืฆื ืืึธืืข ืคืืึธืืืื ื ืึทืจืืึทื ืฉืจืืึทื.
ืืื ื ืืื ืคึผืืึทื ืฆื ืืึธื ืขืคึผืขืก ืึทื ืืขืจืฉ ืืื ืืขื ืฉืคึผืึธื, ืคึฟืึทืจ ืคึผืึทืฉืืขืก ืืื ืืึธืื ืืืคืืื ื ืึทืืข ืืขืืืขื ืืึธืืข ืืื CNF ืืืึทืืืขืก ืคึฟืึทืจ ืืืืืข ืื ื ืืืขืจืืงืขืจ ืืื ืืืืืขืจืฉืืขืจ ืงืึธื ืืจืึธื ืจืขืืืฉืืกืืขืจื.
ืขืคืขืก ืืืื
#define CNF0_0 0x00000004
#define CNF0_1 0x00000008
#define CNF1_0 0x00000040
#define CNF1_1 0x00000080
#define CNF2_0 0x00000400
#define CNF2_1 0x00000800
#define CNF3_0 0x00004000
#define CNF3_1 0x00008000
#define CNF4_0 0x00040000
#define CNF4_1 0x00080000
#define CNF5_0 0x00400000
#define CNF5_1 0x00800000
#define CNF6_0 0x04000000
#define CNF6_1 0x08000000
#define CNF7_0 0x40000000
#define CNF7_1 0x80000000
#define CNF8_0 0x00000004
#define CNF8_1 0x00000008
#define CNF9_0 0x00000040
#define CNF9_1 0x00000080
#define CNF10_0 0x00000400
#define CNF10_1 0x00000800
#define CNF11_0 0x00004000
#define CNF11_1 0x00008000
#define CNF12_0 0x00040000
#define CNF12_1 0x00080000
#define CNF13_0 0x00400000
#define CNF13_1 0x00800000
#define CNF14_0 0x04000000
#define CNF14_1 0x08000000
#define CNF15_0 0x40000000
#define CNF15_1 0x80000000
#define MODE0_0 0x00000001
#define MODE0_1 0x00000002
#define MODE1_0 0x00000010
#define MODE1_1 0x00000020
#define MODE2_0 0x00000100
#define MODE2_1 0x00000200
#define MODE3_0 0x00001000
#define MODE3_1 0x00002000
#define MODE4_0 0x00010000
#define MODE4_1 0x00020000
#define MODE5_0 0x00100000
#define MODE5_1 0x00200000
#define MODE6_0 0x01000000
#define MODE6_1 0x02000000
#define MODE7_0 0x10000000
#define MODE7_1 0x20000000
#define MODE8_0 0x00000001
#define MODE8_1 0x00000002
#define MODE9_0 0x00000010
#define MODE9_1 0x00000020
#define MODE10_0 0x00000100
#define MODE10_1 0x00000200
#define MODE11_0 0x00001000
#define MODE11_1 0x00002000
#define MODE12_0 0x00010000
#define MODE12_1 0x00020000
#define MODE13_0 0x00100000
#define MODE13_1 0x00200000
#define MODE14_0 0x01000000
#define MODE14_1 0x02000000
#define MODE15_0 0x10000000
#define MODE15_1 0x20000000
ืืื ืืืขืจ ืคึผืื ืก ืืขื ืขื ืืืื ืืืืฃ ืคึผืึธืจื ื (ืืึทืืข ืึทืืจืขืก - 0x40010C00), ืงืึธื:
#define _PORTB_(mem_offset) (*(volatile uint32_t *)(0x40010C00 + (mem_offset)))
#define _BRR 0x14
#define _BSRR 0x10
#define _CRL 0x00
#define _CRH 0x04
//ะธัะฟะพะปัะทัะตะผ ััะฐะฝะดะฐััะฝัะน SPI2: MOSI ะฝะฐ B15, CLK ะฝะฐ B13
//LAT ะฟัััั ะฑัะดะตั ะฝะฐ ะฝะตะธัะฟะพะปัะทัะตะผะพะผ MISO โ B14
//ะพัะธัะฐะตะผ ะดะตัะพะปัะฝัะน ะฑะธั, ะพะฝ ะฝะฐะผ ัะพัะฝะพ ะฝะต ะฝัะถะตะฝ
_PORTB_ (_CRH) &= ~(CNF15_0 | CNF14_0 | CNF13_0 | CNF12_0);
//ะฐะปััะตัะฝะฐัะธะฒะฝัะต ััะฝะบัะธะธ ะดะปั MOSI ะธ SCK
_PORTB_ (_CRH) |= CNF15_1 | CNF13_1;
//50 ะะั, MODE = 11
_PORTB_ (_CRH) |= MODE15_1 | MODE15_0 | MODE14_1 | MODE14_0 | MODE13_1 | MODE13_0;
ืืื, ืึทืงืึธืจืืื ืืื, ืืืจ ืงืขื ืขื ืฉืจืืึทืื ืืขืคึฟืื ืืฆืืข ืคึฟืึทืจ LAT, ืืืึธืก ืืืขื ืืืื ืืืืืืฉื ืืืจื ืื BRR ืืื BSRR ืจืขืืืฉืืกืืขืจื:
/*** LAT pulse โ high, then low */
#define LAT_pulse() _PORTB_(_BSRR) = (1<<14); _PORTB_(_BRR) = (1<<14)
#define LAT_low() _PORTB_(_BRR) = (1<<14)
(LAT_low ื ืึธืจ ืืืจื ืื ืขืจืฉืึท, ืขืก ืืื ืฉืืขื ืืืง ืืขืืืขื ืึทืืื, ืืึธืื ืขืก ืืืืึทืื)
ืืืฆื ืึทืืฅ ืืื ืืจืืืก, ืึธืืขืจ ืขืก ืืื ื ืืฉื ืึทืจืืขืื. ืืืืึทื ืืึธืก ืืื STM32, ืืื ืฉืคึผืึธืจื ืขืืขืงืืจืข, ืืืึธืก ืืืื ืืืจ ืืึทืจืคึฟื ืฆื ืืขืื ืื ืงืืึทืงืื ื ืคืื ืื ืคืืจืืื ืื ืคึผืขืจืืคืขืจืึทืืก.
ืงืขืจ ืืืืฃ ืงืืึทืงืื ื
ืื ืืืึทื, ืืืื ืืืงืื ื ืืื ืืืืืขืจ, ืืื ืคืึทืจืึทื ืืืืึธืจืืืขื ืคึฟืึทืจ ืงืืึทืงืื ื. ืืื ืืืจ ืืึธืื ืฉืืื ืืขืงืขื ื ืืึทืืขืจืงื ืื ืึทืืจืืืืืืืฉืึทื RCC. ืืืจ ืงืืงื ืคึฟืึทืจ ืขืก ืืื ืื ืืึทืงืืืืขื ืืืืฉืึทื: ืืึธืก ืืื ืืึทืฉืืขืืืง ืืื ืืืืืขืจ ืงืึธื ืืจืึธื.
ืืื ืืขืืึธืื ืืืืื, ืฆืื ืืืืง, ืื ืืขืจืกื ืฉืืืขืจ ืืืื ืคืื ืื ืงืืึทืงืื ื ืืขืืข ืืื ืืืจืืืขืงืึธืื ืคึฟืึทืจ ืืื ืื ืืืจื ืืขื ืืฉื ืคืื STM, ืคึฟืึทืจ ืืืึธืก ืืืจ ืืึทื ืงืขื ืืื ืืืืขืจ ืคืื (ืืื ืืืขื ืืืืืขืจ ืืขืื ืึท ืืื ืง ืฆื
#define _RCC_(mem_offset) (*(volatile uint32_t *)(0x40021000 + (mem_offset)))
ืืื ืืขืืึธืื ืึธืืขืจ ืืื ืืืืฃ ืื ืืื ืง ืืื ืืืจ ืคึผืจืืืืจื ืฆื ืืขืคึฟืื ืขื ืขืคึผืขืก ืืื ืื ืืขืืขืจ, ืึธืืขืจ, ืคืื ืืขืกืขืจ, ืืืื ืืืจื ืื ืืืกืงืจืืคึผืฉืึทื ื ืคืื ืื ืขื ืืืืึทืืื ื ืจืขืืืฉืืกืืขืจื ืคืื ืื ืกืขืงืฉืึทื ื ืืืขืื ืืขืื ืจืขืืืฉืืกืืขืจื. ืืื ืืืจ ืืืขืื ืืขืคึฟืื ืขื RCC_APB1ENR ืืื RCC_APB2ENR:
ืืื ืืื, ืึทืงืึธืจืืื ืืื, ืึทื ืืืึทืืื ืืืื ืืืึธืก ืึทืจืืึทื ื ืขืืขื ืื ืงืืึทืงืื ื ืคืื SPI2, IOPB (I/O Port B) ืืื ืึธืืืขืจื ืึทืืืื ืคืึทื ืืงืฉืึทื ื (AFIO).
#define _APB2ENR 0x18
#define _APB1ENR 0x1C
#define IOPBEN 0x0008
#define SPI2EN 0x4000
#define AFIOEN 0x0001
//ะฒะบะปััะฐะตะผ ัะฐะบัะธัะพะฒะฐะฝะธะต ะฟะพััะฐ B ะธ ะฐะปัั. ััะฝะบัะธะน
_RCC_(_APB2ENR) |= IOPBEN | AFIOEN;
//ะฒะบะปััะฐะตะผ ัะฐะบัะธัะพะฒะฐะฝะธะต SPI2
_RCC_(_APB1ENR) |= SPI2EN;
ืื ืืขืฆื ืงืึธื ืงืขื ืขื ืืืื ืืขืคึฟืื ืขื
ืืืื ืืืจ ืืึธืื ืื ืืขืืขืื ืืืื ืืื ืคืึทืจืืึทื ื ืฆื ืคึผืจืืืืจื, ืคืึทืจืืื ืื ืื DM634 ืืื ืืึธืก: DAI ืฆื PB15, DCK ืฆื PB13, LAT ืฆื PB14. ืืืจ ืืึทืื ืื ืฉืึธืคืขืจ ืคืื 5 ืืืืืืก, ืืึธื ื ืื ืคืึทืจืืขืกื ืฆื ืคืึทืจืืื ืื ืื ืืจืึธืื ืืก.
STM8 PWM
PWM ืืืืฃ STM8
ืืืขื ืืื ื ืึธืจ ืคึผืืึทื ืืจืื ื ืืขื ืึทืจืืืงื, ืืื ืืึทืฉืืึธืกื, ืืื ืึท ืืืึทืฉืคึผืื, ืฆื ืคึผืจืืืืจื ืฆื ืืขื ืขืืืขืืข ืคืึทื ืืงืฉืึทื ืึทืืืื ืคืื ืึท ืึทื ืคืึทืืืืืขืจ ืฉืคึผืึธื ืืื ืืืืื ืึท ืืึทืืึทืฉืื, ืึทืืื ืึทื ืืื ืืืึธืื ื ืืฉื ืขื ืืืงื ืืื ืึท ืฉืืกืืขืจ ืึธื ืฉืื. STM8 ืืื ืืขืืืขื ืืืขืึทื ืคึฟืึทืจ ืืขื ืจืึธืืข: ืขืจืฉืืขืจ, ืืื ืืขืืื ืึท ืคึผืึธืจ ืคืื ืืื ืขืืืฉ ืืึธืจืื ืืื STM8S103, ืืื ืฆืืืืืื ืก, ืขืก ืืื ื ืืฉื ืืืืขืจ ืคืึธืืงืก, ืืื ืืขืจืืืขืจ ืื ื ืกืืื ืฆื ืืืืขื ืขื ืืื ืืขืคึฟืื ืขื ืึท ืืืืืื ื ืืืืฃ ืื ืืื ืืขืจื ืขื ืืื ืืืืืจื ืืืืฃ ืื ืคืขืื ืคืื ืื ืืืืขืจ ืกืึทืืืฉืึทื ื.
ืืขืจ ืฉืคึผืึธื ืืืื ืืื
ืงืืึทืงืื ื ืืื ืืื / ืึธ
ืืืจื ืคืขืืืงืืึทื, STM8 ืึทืคึผืขืจืืืฅ ืืื ืึท ืึธืคืืงืืึทื ืคืื 2 MHz, ืืึธืก ืืืื ืืืื ืงืขืจืขืงืืึทื ืืื.
HSI (ืืืื ืกืคึผืื ืื ืขืจืืขื) ืืืืืขืจ
ืื HSI ืืืืืขืจ ืกืืื ืึทื ืืื ืืขืจืืืืื ืคืื ืึทื ืื ืขืจืืขื 16 ืืื ืจืง ืึทืกืึทืืืืืขืจ ืืื ืึท ืคึผืจืึธืืืจืึทืืึทืืึทื ืืืืืืืขืจ (1 ืฆื 8). ืขืก ืืื ืืึทืฉืืืื ืืื ืื ืืืืืขืจ ืืืืืืืขืจ ืจืขืืืกืืจืืจื (CLK_CKDIVR).
ืืึทืืขืจืงืื ื: ืืื ืื ืึธื ืืืื, ืึท HSI RC ืึทืกืึทืืืืืขืจ ืืื ืึท ืืืืืืืขืจ ืคืื 8 ืืื ืืืืกืืขืงืืืื ืืื ืื ืืืืื ื ืืงืืจ ืคืื ืื ืืืืืขืจ ืกืืื ืึทื.
ืืืจ ืืขืคึฟืื ืขื ืื ืจืขืืืกืืจืืจื ืึทืืจืขืก ืืื ืื ืืึทืืึทืฉืื, ืื ืืึทืฉืจืืึทืืื ื ืืื refman ืืื ืืขื ืึทื ืื ืจืขืืืกืืจืืจื ืืึทืจืฃ ืืืื ืงืืืจื:
#define CLK_CKDIVR *(volatile uint8_t *)0x0050C6
CLK_CKDIVR &= ~(0x18);
ืืื ื ืืืจ ืืืขืื ืืืืคื PWM ืืื ืคืึทืจืืื ืื ืื ืืขืืก, ืืึธืื ืืื ืื ืงืืง ืืื ืื ืคึผืื ืึธืื:
ืืขืจ ืฉืคึผืึธื ืืื ืงืืืื, ืคืืืข ืคืึทื ืืงืฉืึทื ื ืืขื ืขื ืกืืกืคึผืขื ืืขื ืืืืฃ ืื ืืขืืืข ืคึผืื ืก. ืืืึธืก ืืื ืืื ืงืืืึทืืจืึทื ืืจืึทืงืึทืฅ ืืื "ืึธืืืขืจื ืึทืืืื ืคืึทื ืืงืฉืึทื ืึทืืืื", ืขืก ืืื ืกืืืืืฉื ืืืจื "ืึธืคึผืฆืืข ืืืืขืก" (ืึธืคึผืฆืืข ืืืืขืก) - ืขืคึผืขืก ืืื ืึทืืืขืืึท ืคืืกืขืก. ืืืจ ืงืขื ืขื ืืืืฉื ืืืืขืจ ืืืึทืืืขืก ืคึผืจืึธืืจืึทืืืึทืืืงืึทืืื, ืึธืืขืจ ืขืก ืืื ื ืื ื ืืืืืง ืืืืึทื ืื ื ืืึทืข ืคืึทื ืืงืฉืึทื ืึทืืืื ืืื ืึทืงืืืืืืืืื ืืืืื ื ืึธื ืึท ืจืขืืึธืึธื. ืขืก ืืื ืืจืื ืืขืจ ืฆื ื ืืฆื ST ืืืืกืืึทื ืคึผืจืึธืืจืึทืืืกื (ืืึทืื ืืึธืืืื ืืื ืืืืกืืึทื ืึทื ืืืืืงืืขื), ืืืึธืก ืงืขื ืขื ืืืืฉื ืื ืืืืขืก. ืื ืคึผืื ืึธืื ืืืืืื ืึทื ืื CH1 ืืื CH2 ืคึผืื ืก ืคืื ืืขืจ ืขืจืฉืืขืจ ืืืึทืืขืจ ืืขื ืขื ืคืึทืจืืึธืจืื ืืื ืงืืืึทืืจืึทื ืืจืึทืงืึทืฅ; ืขืก ืืื ื ืืืืืง ืฆื ืฉืืขืื ืื AFR1 ืืื AFR0 ืืืื ืืื STVP, ืืื ืื ืจืืข ืืืขื ืืืื ืึทืจืืืขืจืคืืจื ืื CH1 ืจืขืืืืืึทื ืคืื ืื ืจืืข ืืืึทืืขืจ ืคืื PD4 ืฆื PC5.
ืืืื, 6 ืคึผืื ืก ืืืขื ืงืึธื ืืจืึธืืืจื ืื ืืขืืก: PC6, PC7 ืืื PC3 ืคึฟืึทืจ ืืขืจ ืขืจืฉืืขืจ ืืืึทืืขืจ, PC5, PD3 ืืื PA3 ืคึฟืึทืจ ืื ืจืืข.
ืืึทืฉืืขืืืงื ืื I/O ืคึผืื ืก ืืื ืืืืฃ STM8 ืืื ืกืืืคึผืืขืจ ืืื ืืขืจ ืืึทืืืฉืืงืึทื ืืื ืืืืฃ STM32:
- ืืึทืงืึทื ื ืคึฟืื Atmega DDR ืืึทืื ืจืืืืื ื ืจืขืืืกืืจืืจื (ืืึทืืึท ืืืจืขืงืืืึธื ืจืขืืืกืืจืืจื): 1 = ืจืขืืืืืึทื;
- ืืขืจ ืขืจืฉืืขืจ ืงืึธื ืืจืึธื ืจืขืืืกืืจืืจื CR1, ืืืขื ืจืขืืืืืึทื, ืฉืืขืื ืื ืฉืืืคึผ-ืฆืืขื ืืึธืืข (1) ืึธืืขืจ ืขืคืขื ืขื ืคืืืกื (0); ืืื ื ืืื ืคืึทืจืืื ืื ืื ืืขืืก ืฆื ืื ืฉืคึผืึธื ืืื ืงืึทืืึธืืื, ืืื ืืึธืื ืืขืจืึธืก ืืึธ;
- ืื ืจืืข ืงืึธื ืืจืึธื ืจืขืืืกืืจืืจื CR2, ืืืขื ืจืขืืืืืึทื, ืฉืืขืื ืื ืืืืืขืจ ืืืืงืืึทื: 1 = 10 ืืื
#define PA_DDR *(volatile uint8_t *)0x005002
#define PA_CR2 *(volatile uint8_t *)0x005004
#define PD_DDR *(volatile uint8_t *)0x005011
#define PD_CR2 *(volatile uint8_t *)0x005013
#define PC_DDR *(volatile uint8_t *)0x00500C
#define PC_CR2 *(volatile uint8_t *)0x00500E
PA_DDR = (1<<3); //output
PA_CR2 |= (1<<3); //fast
PD_DDR = (1<<3); //output
PD_CR2 |= (1<<3); //fast
PC_DDR = ((1<<3) | (1<<5) | (1<<6) | (1<<7)); //output
PC_CR2 |= ((1<<3) | (1<<5) | (1<<6) | (1<<7)); //fast
PWM ืืึทืฉืืขืืืงื
ืขืจืฉืืขืจ, ืืึธืืืจ ืืขืคืื ืืจื ืื ืืขืจืืื ืขื:
- ืคึผืืื ืึธืคืืงืืึทื - ืึธืคืืงืืึทื ืืื ืืืึธืก ืื ืืืึทืืขืจ ืืืงืก;
- ืึทืืืึธ ืจืืืึธืื, AR - ืึทืืืึธืืึธืึทืืึทืืืข ืืืขืจื ืฆื ืืืึธืก ืื ืืืึทืืขืจ ืืืขื ืฆืืืื (ืคึผืืืก ืคึผืขืจืืึธื);
- ืืขืจืืืึทื ืืืงื ืืขืฉืขืขื ืืฉ, UEV - ืึท ืืขืฉืขืขื ืืฉ ืืืึธืก ืึทืงืขืจื ืืืขื ืื ืืืึทืืขืจ ืืื ืืขืจืขืื ื ืฆื AR;
- PWM ืคืืืื ืฆืืงื - PWM ืคืืืื ืฆืืงื, ืึธืคื ืืขืจืืคื "ืคืืืื ืคืึทืงืืึธืจ";
- ืืึทืคึผื / ืคืึทืจืืืืึทืื ืืืขืจื - ืืืขืจื ืคึฟืึทืจ ืืึทืคึผื / ืคืึทืจืืืืึทื, ืฆื ืืืึธืก ืื ืืืึทืืขืจ ืืื ืืขืจืขืื ื ืืืขื ืขืคึผืขืก ืืึธื (ืืื ืืขื ืคืึทื ืคืื PWM, ืขืก ืื ืืืขืจืฅ ืื ืจืขืืืืืึทื ืกืืื ืึทื);
- ืคึผืจืขืืึธืึทื ืืืขืจื - ืคึผืจืขืืึธืึทืืขื ืืืขืจื. ืคืึทืจืืืืึทืื ืืืขืจื ืงืขื ืขื ื ืืฉื ืืืืฉื ืืฉืขืช ืื ืืืึทืืขืจ ืืื ืืืงืืึทืง, ืึทื ืืขืจืฉ ืื PWM ืฆืืงื ืืืขื ืืจืขืื. ืืขืจืืืขืจ, ื ืืึท ืืจืึทื ืกืืืืืขื ืืืึทืืืขืก ืืขื ืขื ืืขืฉืืขืื ืืื ืึท ืืึทืคืขืจ ืืื ืคึผืืื ืืืขื ืื ืืืึทืืขืจ ืจืืืฉืึทื ืื ืกืืฃ ืคืื ืืืื ืงืึธืื ืืืึธืืื ืืื ืืื ืืึทืฉืืขืืืง;
- ืขืืืฉ-ืึทืืืื ื ะธ ืฆืขื ืืขืจ-ืึทืืืื ื ืืึธืืขืก - ืึทืืืื ืืึทื ื ืฆืืืืืขื ืื ืืจืขื ืขืฅ ืืื ืืื ืืขื ืฆืขื ืืขืจ, ืื ืืขืืืข ืืื ืึทืืืขื ืฉื ืขื ืคึผืืื ะธ ืคืึทืกืข ืจืืืืืง PWM.
- OCiREF, ืจืขืืืืืึทื ืคืึทืจืืืืึทืื ืจืขืคืขืจืขื ืฅ ืกืืื ืึทื - ืจืขืคึฟืขืจืขื ืฅ ืจืขืืืืืึทื ืกืืื ืึทื, ืืื ืคืึทืงื, ืืืึธืก ืืื ืืจืืืก ืืืืฃ ืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืฉืืืคื ืืื PWM ืืึธืืข.
ืืื ืฉืืื ืงืืึธืจ ืคึฟืื ืื ืคึผืื ืึธืื, ืฆืืืื ืืืืืขืจื ืืึธืื PWM ืงืืืคึผืึทืืืืึทืืื - ืืขืจ ืขืจืฉืืขืจ ืืื ืื ืจืืข. ืืืืืข ืืขื ืขื 16-ืืืกื, ืืขืจ ืขืจืฉืืขืจ ืืื ืึท ืคึผืืึทืฅ ืคืื ื ืึธื ืคึฟืขืึดืงืืืื (ืืื ืืึทืืื ืืขืจ, ืขืก ืงืขื ืขื ืฆืืืื ืืืืืข ืึทืจืืืฃ ืืื ืึทืจืึธืคึผ). ืืืจ ืืืจืคื ืืืืืข ืืจืืขืื ืืืืื, ืืื ืืื ืืืฉืืืกื ืื ืฆืืืืืื ืืื ืืขื ืืืืืื ืืจืขืืขืจื ืฆืืืืืื, ืืื ื ืืฉื ืฆืืคืขืืืื ืฆื ื ืืฆื ืขืคืขืก ืืืืก ืืื ื ืืฉื ืื. ืขืืืขืืข ืคึผืจืึธืืืขื ืืื ืึทื ืื ืืึทืฉืจืืึทืืื ื ืคืื ืื PWM ืคืึทื ืืงืฉืึทื ืึทืืืื ืคืื ืึทืืข ืืืืืขืจื ืืื ืื ืจืขืคึฟืขืจืขื ืฅ ืืึทื ืืึทื ืืื ืืื ืื ืงืึทืคึผืืื ืืืขืื ืืขืจ ืขืจืฉืืขืจ ืืืึทืืขืจ (17.5.7 PWM ืืึธืืข), ืึทืืื ืืืจ ืืืื ืฉืคึผืจืื ืืขื ืฆืืจืืง ืืื ืฆืืจืืง ืืืืขืจ ืืขื ืืึธืงืืืขื ื ืึทืืข ืื ืฆืืื.
PWM ืืืืฃ STM8 ืืื ืึท ืืืืืืืง ืืืึทืืข ืืืืขืจ PWM ืืืืฃ Atmega:
Boundary Aligned PWM
ืืฉืืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืคืื ืื ืึธ ืฆื ืฉืคึผืืฅ
ืื ืื ืึธ-ืึทืจืืืฃ ืงืึทืื ืืื ื ืืื ืึทืงืืืื ืืืื ืื DIR ืืืกื ืืื ืื TIM_CR1 ืจืขืืืกืืจืืจื ืืื ืงืืืจื
ืืืึทืฉืคึผืื
ืืขืจ ืืืึทืฉืคึผืื ื ืืฆื ืืขืจ ืขืจืฉืืขืจ 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 (LED ืืืืฃ) ืืื ืคืึทืจืืืืึทืื ืืืขืจื ืืื 1 ื ืึธื.
ืืืจ ืืึธืื ืฉืืื ืืืืขื ืขื ืืืขืื ืขืืืขืืข ืคึผืืื ืืึธืืข, ืึทืืื ืืืจ ืืขืคึฟืื ืขื ืื ืคืืจืืื ืื ืจืขืืืกืืจืืจื ืคืื ืื ืจืืข ืืืึทืืขืจ ืืืจื ืืืื ืืื ืื ืจืขืคึฟืขืจืขื ืฅ ืืึทื ืืึทื ืคึฟืึทืจ ืืขื ืคืจืึทืืข (18.6.8 - TIMx_CCMR1):
110: ืขืจืฉืืขืจ ืคึผืืื ืืึธืืข - ืืืขื ืงืึทืื ืืื ื ืคืื ืื ืึธ ืฆื ืฉืคึผืืฅ, ืืขืจ ืขืจืฉืืขืจ ืงืึทื ืึทื ืืื ืึทืงืืืื ืืฉืขืช TIMx_CNT <TIMx_CCR1. ืึทื ืืขืจืฉ, ืืขืจ ืขืจืฉืืขืจ ืงืึทื ืึทื ืืื ืื ืึทืงืืืื. [ืืืืึทืืขืจ ืืื ืืขื ืืึธืงืืืขื ื ืขืก ืืื ืึท ืขืจืึธืื ืืึทืก ืงืึธืคึผืืข-ืคึผืึทืกืืข ืคืื โโืืืึทืืขืจ 1] 111: ืฆืืืืืืข ืคึผืืื ืืึธืืข - ืืืขื ืงืึทืื ืืื ื ืคืื ืื ืึธ ืฆื ืฉืคึผืืฅ, ืืขืจ ืขืจืฉืืขืจ ืงืึทื ืึทื ืืื ืื ืึทืงืืืื ืืฉืขืช TIMx_CNT <TIMx_CCR1. ืึทื ืืขืจืฉ, ืืขืจ ืขืจืฉืืขืจ ืงืึทื ืึทื ืืื ืึทืงืืืื.
ืืื ื ืื ืืขืืก ืืขื ืขื ืคืืจืืื ืื ืฆื ืื MK ืืืจื ืงืึทืืึธืืื, ืื ืจืืข ืืึธืืข ืืื ืคึผืึทืกืืง ืคึฟืึทืจ ืืื ืื (ืืขืจ ืขืจืฉืืขืจ ืืืื, ืึธืืขืจ ืืืจ ืืึธื ื ืื ืืืืกื ืึทื ื ืึธื).
ืืืกื 3 OC1PE: ืืขืื ืฉืืืคื 1 ืคึผืจืขืืึธืึทื
0: ืคึผืจืขืืึธืึทื ืจืขืืืกืืจืืจื ืืืืฃ TIMx_CCR1 ืืื ืคืึทืจืงืจืืคึผืื. ืืืจ ืงืขื ืขื ืฉืจืืึทืื ืฆื TIMx_CCR1 ืืื ืงืืื ืฆืืื. ืื ื ืืึทืข ืืืขืจื ืึทืจืืขื ืืื.
1: ืคึผืจืขืืึธืึทื ืจืขืืืกืืจืืจื ืืืืฃ TIMx_CCR1 ืืื ืขื ืืืืึทืื. ืืืืขื ืขื / ืฉืจืืึทืื ืึทืคึผืขืจืืืฉืึทื ื ืึทืงืกืขืก ืื ืคึผืจืขืืึธืึทื ืจืขืืืกืืจืืจื. ืื ืคึผืจืขืืึธืึทืืขื ืืืขืจื TIMx_CCR1 ืืื ืืึธืืืื ืืื ืื ืฉืึธืื ืจืขืืืกืืจืืจื ืืขืฉืึทืก ืืขืืขืจ ืืขืจืืืึทื ืืืงื ืืขืฉืขืขื ืืฉ.
* ืืึทืืขืจืงืื ื: ืคึฟืึทืจ PWM ืืึธืืข ืฆื ืึทืจืืขืื ืจืขืื, ืื ืคึผืจืขืืึธืึทื ืจืขืืืฉืืกืืขืจื ืืืื ืืืื ืขื ืืืืึทืื. ืืึธืก ืืื ื ืื ื ืืืืืง ืืื ืืืื ืกืืื ืึทื ืืึธืืข (ืื OPM ืืืกื ืืื ืืึทืฉืืืื ืืื ืื TIMx_CR1 ืจืขืืืกืืจืืจื).
ืึธืืงืื, ืืึธืื ืืื ืื ืงืขืจ ืืืืฃ ืึทืืฅ ืืืจ ืืึทืจืคึฟื ืคึฟืึทืจ ืื ืืจืื ืืฉืึทื ืึทืื ืคืื ืื ืจืืข ืืืึทืืขืจ:
#define TIM2_CCMR1 *(volatile uint8_t *)0x005307
#define TIM2_CCMR2 *(volatile uint8_t *)0x005308
#define TIM2_CCMR3 *(volatile uint8_t *)0x005309
#define PWM_MODE2 0x70 //PWM mode 2, 0b01110000
#define OCxPE 0x08 //preload enable
TIM2_CCMR1 = (PWM_MODE2 | OCxPE);
TIM2_CCMR2 = (PWM_MODE2 | OCxPE);
TIM2_CCMR3 = (PWM_MODE2 | OCxPE);
AR ืืืฉืืืื ืคืื ืฆืืืื ืึทืื-ืืืกื ืจืขืืืฉืืกืืขืจื, ืึทืืฅ ืืื ืคึผืฉืื:
#define TIM2_ARRH *(volatile uint8_t *)0x00530F
#define TIM2_ARRL *(volatile uint8_t *)0x005310
TIM2_ARRH = 0;
TIM2_ARRL = 255;
ืื ืจืืข ืืืึทืืขืจ ืงืขื ืขื ื ืึธืจ ืฆืืืื ืคืื ืื ืึธ ืฆื ืฉืคึผืืฅ, ืึทืืืื ืืึทื ื ืฆืืืืืขื ืื ืืจืขื ืขืฅ, ืืึธืจื ืืฉื ืืึทืจืฃ ืืืื ืืขืืืื. ืืื ืก ืฉืืขืื ืื ืึธืคืืงืืึทื ืืืืืืืขืจ, ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืฆื 256. ืคึฟืึทืจ ืื ืจืืข ืืืึทืืขืจ, ืื ืืืืืืืขืจ ืืื ืืึทืฉืืืื ืืื ืื TIM2_PSCR ืจืขืืืกืืจืืจื ืืื ืืื ืึท ืืึทืื ืคืื ืฆืืืื:
#define TIM2_PSCR *(volatile uint8_t *)0x00530E
TIM2_PSCR = 8;
ืึทืืข ืืืึธืก ืืืืืื ืืื ืฆื ืืืขื ืื ืืืืฃ ืื ืงืึทื ืงืืืืฉืึทื ื ืืื ืื ืจืืข ืืืึทืืขืจ ืืื. ืืขืจ ืขืจืฉืืขืจ ืคึผืจืึธืืืขื ืืื ืกืึทืืืื ืืืจื ืจืขืืืฉืืกืืขืจื ืืึทืคึผื / ืคืึทืจืืืืึทืื ืืขืื: ืขืก ืืขื ืขื ืฆืืืื, ืืจืืึท ืืฉืึทื ืึทืื ืฆืขืืืึธืจืคื ืืืืขืจ ืืื ืึทืกืืืืขืืจืืงืื. ืืึธ ืืืจ ืงืขื ืขื ืืืื ืืขืจื ืขื ืึทื ืขืก ืืื ืืขืืืขื ืฆื ืืืืฉื ืื ืคึผืึธืืืขืจืึทืื ืคืื ืื ืกืืื ืึทื, ื.ื. ืืื ืคึผืจืื ืฆืืคึผ, ืขืก ืืื ืืขืืืขื ืฆื ื ืืฆื PWM ืืึธืืข 1. ืืืจ ืฉืจืืึทืื:
#define TIM2_CCER1 *(volatile uint8_t *)0x00530A
#define TIM2_CCER2 *(volatile uint8_t *)0x00530B
#define CC1E (1<<0) // CCER1
#define CC2E (1<<4) // CCER1
#define CC3E (1<<0) // CCER2
TIM2_CCER1 = (CC1E | CC2E);
TIM2_CCER2 = CC3E;
ืืื ืืขืกืึธืฃ, ืืืจ ืึธื ืืืืื ืื ืืืึทืืขืจ ืืื ืื TIMx_CR1 ืจืขืืืกืืจืืจื:
#define TIM2_CR1 *(volatile uint8_t *)0x005300
TIM2_CR1 |= 1;
ืืึธืืืจ ืฉืจืืึทืื ืึท ืคึผืฉืื ืึทื ืึทืืึธื ืคืื AnalogWrite (), ืืืึธืก ืืืขื ืึทืจืืืขืจืคืืจื ืื ืคืึทืงืืืฉ ืืืึทืืืขืก ืฆื ืื ืืืึทืืขืจ ืคึฟืึทืจ ืคืึทืจืืืืึทื. ืื ืจืขืืืฉืืกืืขืจื ืืขื ืขื ืคึผืจืืืืงืืึทืืื ืืขืืืืกื ืืึทืคึผื / ืคืึทืจืืืืึทืื ืจืขืืืฉืืกืืขืจื, ืขืก ืืขื ืขื ืฆืืืื ืคืื ืืื ืคึฟืึทืจ ืืขืืขืจ ืงืึทื ืึทื: ืื ื ืืืขืจืืง-ืกืืจ 8 ืืืื ืืื TIM2_CCRxL ืืื ืื ืืืื-ืกืืจ ืึธื ืขืก ืืื TIM2_CCRxH. ืืื ื ืืืจ ืืึธืื ืืืฉืืคื ืึท 8-ืืืกื PWM, ืขืก ืืื ืืขื ืื ืฆื ืฉืจืืึทืื ืืืืื ืื ืงืืขื ืกืืขืจ ืืึทืืืืืืง ืืืื:
#define TIM2_CCR1L *(volatile uint8_t *)0x005312
#define TIM2_CCR2L *(volatile uint8_t *)0x005314
#define TIM2_CCR3L *(volatile uint8_t *)0x005316
void setRGBled(uint8_t r, uint8_t g, uint8_t b)
{
TIM2_CCR1L = r;
TIM2_CCR2L = g;
TIM2_CCR3L = b;
}
ืื ืึทืืขื ืืืื ืืืืขื ืขืจ ืืืขื ืืึทืืขืจืงื ืึทื ืืืจ ืืึธืื ืึท ืืืกื ืืขืคืขืงืืืืืข ืคึผืืื, ื ืื ืืืืืืช ืฆื ืคึผืจืึธืืืฆืืจื 100% ืคึผืืึธืืืืจื (ืืื ืึท ืืึทืงืกืืืื ืืืขืจื ืคืื 255, ืืขืจ ืกืืื ืึทื ืืื ืื ืืืขืจืืื ืคึฟืึทืจ ืืืื ืืืึทืืขืจ ืฆืืงื). ืคึฟืึทืจ ืืขืืก ืืึธืก ืืื ื ืืฉื ืขื ืื, ืืื ืื ืึทืืขื ืืืื ืืืืขื ืขืจ ืงืขื ืขื ืฉืืื ืืจืขืคื ืืื ืฆื ืคืึทืจืจืืืื ืขืก.
PWM ืืืืฃ ืื ืจืืข ืืืึทืืขืจ ืึทืจืืขื, ืืึธืื ืืื ืื ืืืื ืฆื ืืขืจ ืขืจืฉืืขืจ.
ืืขืจ ืขืจืฉืืขืจ ืืืึทืืขืจ ืืื ืคึผืื ืงื ืื ืืขืืืข ืืืื ืืื ืื ืืขืืืข ืจืขืืืฉืืกืืขืจื (ืขืก ืืื ื ืึธืจ ืึทื ืื ืืืื ืืืึธืก ืืขื ืขื ืคืืจืืืืื "ืจืขืืขืจืืืืจื" ืืื ืื ืจืืข ืืืึทืืขืจ ืืขื ืขื ืึทืงืืืืืื ืืขื ืืฆื ืืื ืืขืจ ืขืจืฉืืขืจ ืคึฟืึทืจ ืึทืืข ืกืึธืจืฅ ืคืื ืึทืืืึทื ืกืืจืืข ืืืื). ืืขืจืืืขืจ, ืขืก ืืื ืืขื ืื ืฆื ืืขืคึฟืื ืขื ืื ืึทืืจืขืกืขืก ืคืื ืื ืืขืืืข ืจืขืืืฉืืกืืขืจื ืืื ืื ืืึทืืึทืฉืื ืืื ื ืึธืืืึทืื ืื ืงืึธื. ื ื, ืืืืฉื ืื ืืืขืจื ืคืื ืื ืึธืคืืงืืึทื ืืืืืืืขืจ, ืืืืึทื ... ืืขืจ ืขืจืฉืืขืจ ืืืึทืืขืจ ืืืื ืฆื ืืึทืงืืืขื ื ืืฉื ืึท ืืึทืื ืคืื ืฆืืืื, ืึธืืขืจ ืึท ืคึผืื ืืืขื 16-ืืืกื ืืืขืจื ืืื ืฆืืืื ืจืขืืืฉืืกืืขืจื ืคึผืจืขืกืงืึทืืขืจ ืืืื ะธ ื ืืืขืจืืง. ืืืจ ืืึธื ืึทืืฅ ืืื ... ืืขืจ ืขืจืฉืืขืจ ืืืึทืืขืจ ืืื ื ืืฉื ืึทืจืืขืื. ืืืืก ืืื ืื ืืขืฉื?
ืืขืจ ืคึผืจืึธืืืขื ืงืขื ืขื ืืืื ืกืึทืืืื ืืืืื ืืืจื ืงืืงื ืืืจื ืื ืืื ืฆืข ืึธืคึผืืืืืื ื ืืืขืื ืื ืงืึธื ืืจืึธื ืจืขืืืฉืืกืืขืจื ืคืื ืืืึทืืขืจ 1, ืืื ืืืจ ืงืืงื ืคึฟืึทืจ ืื ืืืึธืก ืื ืจืืข ืืืึทืืขืจ ืืื ื ืืฉื. ืขืก ืืืขื ืืืื 17.7.30 ืืจืขืื ืจืขืืืกืืจืืจื (TIM1_BKR), ืืื ืขืก ืืื ืืึธืก ืืืกื:
ืืขืื ืืืืคึผื ืจืขืืืืืึทื
#define TIM1_BKR *(volatile uint8_t *)0x00526D
TIM1_BKR = (1<<7);
ืึทื ืก ืึทืืข ืคึฟืึทืจ ืืืืขืจ ืืืฆื, ืื ืงืึธื
STM8 ืืืืืืคึผืืขืงืก
ืืืืืืคึผืืขืงืกืื ื ืืืืฃ STM8
ืื ืืจืื ืืื ื-ืคึผืจืืืขืงื ืืื ืฆื ืคืึทืจืืื ืื ืึทืื RGB ืืขืืก ืฆื ืื ืจืืข ืืืึทืืขืจ ืืื ืคึผืืื ืืึธืืข ืืื ืืึทืื ืืื ืืืืึทืื ืคืึทืจืฉืืืขื ืข ืคืืจืื. ืขืก ืืื ืืืืืจื ืืืืฃ ืืขืจ ืืึทืืจืืฃ ืคืื ืืขืคืืจื ืืืืืืคึผืืขืงืกืื ื, ืืืึธืก ืืื ืึทื ืืืื ืืืจ ืงืขืจ ืืืืฃ ืืื ืึทืืืขืง ืืขืืก ืืืืขืจ, ืืืืขืจ ืืขืฉืืืื ื, ืขืก ืืืขื ืืืกืงืืืขื ืฆื ืืื ืื ืึทื ืืื ืืขื ืขื ืงืขืกืืืืขืจ ืืืืฃ (ืคึผืขืจืกืืกืืึทื ืก ืคืื ืืขืืื ื, ืื ืขืจืฉืึท ืคืื ืืืืืฉืึทืืืึทื ืืขืจืงืื ื). ืืื ืืื ืืืื ืืขืืื
ืืขืจ ืึทืจืืขื ืึทืืืขืจืืืึทื ืงืืงื ืืื ืืึธืก:
- ืงืึธื ื ืขืงืืขื ืื ืึทื ืึธืื ืคืื ืืขืจ ืขืจืฉืืขืจ RGB ืืขืคืืจื;
- ืืื ืขืก, ืฉืืงื ืื ื ืืืืืง ืกืืื ืึทืื ืฆื ืื ืงืึทืืึธืืื;
- ืืขืืืืจื ืืื ืืขื ืกืืฃ ืคืื ืื ืคึผืืื ืฆืืงื;
- ืงืึธื ื ืขืงืืขื ืื ืึทื ืึธืื ืคืื ืื ืจืืข RGB ืืขืคืืจื;
- ืฆืื ื ืขืก ...
ื ื ืืื'. ืคืื ืงืืจืก, ืคึฟืึทืจ ืฉืืื ืึธืคึผืขืจืึทืฆืืข ืขืก ืืื ืคืืจืืื ืื ืึทื ืื ืึทื ืึธืื ืืื ืงืึธื ื ืขืงืืขื ืืื ืื ืืขืคืืจื ืืื "ืืื ืืืื" ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืื. ื ื, ืึธืืขืจ ืึผืืขื. ืืื ืงืืื ืคืึทื, ืืืจ ืืึทืจืคึฟื ืฆื ืฉืจืืึทืื ืึท ืงืึธื ืืืึธืก ืืืขื ืจืขืืืืืึทื ืืืึทืืืขืก ืืื ืืจืื ืืฉืึทื ืึทืื ืคืื ืื ืจืืข ืืืึทืืขืจ, ืืืืฉื ืืื ืืืขื UEV ืืื ืจืืืฉื, ืืื ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืื ืืืืฉื ืื ืืืฆื ืึทืงืืืื RGB ืืขืคืืจื.
ืืื ื ืื ืืขืคืืจื ืกืืืืืฉืื ื ืืื ืึธืืึทืืึทืืืง, ืืืจ ืืึทืจืคึฟื ืฆื ืฉืึทืคึฟื ืึท "ืืืืืขื ืืึผืจืื" ืคึฟืื ืืืึธืก ืื ืื ืืขืจืึทืคึผืืื ืืึทื ืืืขืจ ืืืขื ืืึทืงืืืขื ืืึทืื. ืืึธืก ืืื ืึท ืคึผืฉืื ืืขื ืืข:
uint8_t colors[8][3];
ืืื ืกืืจ ืฆื ืืืืฉื ืื ืงืึธืืืจ ืคืื ืึท ืกืคึผืขืฆืืคืืฉ ืืขืคืืจื, ืขืก ืืืขื ืืืื ืืขื ืื ืฆื ืฉืจืืึทืื ืื ืคืืจืืื ืื ืืืึทืืืขืก ืืื ืืขื ืืขื ืืข. ืืื ืื ืืืึทืืขืืืืืง ืืืขื ืืืื ืคืึทืจืึทื ืืืืึธืจืืืขื ืคึฟืึทืจ ืื ื ืืืขืจ ืคืื ืื ืึทืงืืืื ืืขืคืืจื
uint8_t cnt;
Demux
ืคึฟืึทืจ ืืขืืขืจืืง ืืืืืืคึผืืขืงืกืื ื, ืืืจ ืืึทืจืคึฟื, ืึทืืื ืืขื ืื, ืึท CD74HC238 ืืขืืืืืืคึผืืขืงืกืขืจ. ืืขืืืืืืคึผืืขืงืกืขืจ - ืึท ืฉืคึผืึธื ืืืึธืก ืืืคึผืืึทืืึทื ืฅ ืืขืจ ืึธืคึผืขืจืึทืืึธืจ ืืื ืืึทืื ืืืึทืจื <<
. ืืืจื ืืจืื ืึทืจืืึทื ืฉืจืืึทื ืคึผืื ืก (ืืืฅ 0, 1 ืืื 2) ืืืจ ืงืึธืจืืขื ืขืก ืึท ืืจืื-ืืืกื ื ืืืขืจ X, ืืื ืืื ืขื ืืคืขืจ ืขืก ืึทืงืืึทืืืืืฅ ืจืขืืืืืึทื ื ืืืขืจ (1<<X
). ืื ืจืืขื ืื ืคึผืืฅ ืคืื ืื ืฉืคึผืึธื ืืขื ืขื ืืขื ืืฆื ืฆื ืืืึธื ืื ืืื ืฆืข ืคึผืืึทื. ืืืจ ืืึทืจืคึฟื ืืขื ืฉืคึผืึธื ื ืื ืืืืื ืฆื ืจืขืืืฆืืจื ืื ื ืืืขืจ ืคืื ืคืึทืจื ืืืขื ืืืงืจืึธืงืึธื ืืจืึธืืืขืจ ืคึผืื ืก, ืึธืืขืจ ืืืื ืคึฟืึทืจ ืืืืขืจืงืืึทื - ืึทืืื ืืื ื ืืฉื ืฆื ืึทืงืกืึทืืขื ืึทืื ืงืขืจ ืืืืฃ ืืขืจ ืืขืืก ืืื ืืขืืืขื ืืื ื ืืฉื ืคืึทืจืืจืขื ืขื ืื MK. ืืขืจ ืฉืคึผืึธื ืงืึธืก ืึท ืคึผืขื ื ืืื ืืึธื ืฉืืขื ืืืง ืืืื ืืขืืืืื ืืื ืืืื ืืืื ืืขืืืฆืื ืงืึทืืื ืขื.
ืืื ืืืขืจ CD74HC238 ืืืขื ืืืื ืคืึทืจืึทื ืืืืึธืจืืืขื ืคึฟืึทืจ ืกืึทืคึผืืืืื ื ืืืึธืืืืืืืฉ ืฆื ืื ืึทื ืึธืื ืคืื ืื ืืขืืขืื ืืขืคืืจื. ืืื ืึท ืคืื-ืคืืขืืืฉื ืืืืืืคึผืืขืงืก, ืขืก ืืืึธืื ืฆืืฉืืขืื ืืืึธืืืืืืืฉ ืฆื ืื ืืืึทื ืืืจื ืึท P-MOSFET, ืึธืืขืจ ืืื ืืขื ืืขืืึธ ืขืก ืืื ืืขืืืขื ืืืืึทื, ืืืืึทื ืขืก ืืจืึธื 20 ืืึท, ืืืื ืฆื ืึทืืกืึธืืื ืืึทืงืกืืืื ืจืืืืื ืื ืืื ืื ืืึทืื ืืืึทื. ืคืื
ื = ืืืื ืืืึธืืืืืืืฉ ืืืจืื, ื = ื ืืืขืจืืง ืืืึธืืืืืืืฉ ืืืจืื, X - ืืึธื ื ืื ืืึธืจืื
ืืืจ ืคืึทืจืืื ืื E2 ืืื E1 ืฆื ืขืจื, E3, A0, A1 ืืื A3 ืฆื ืคึผืื ืก PD5, PC3, PC4 ืืื PC5 ืคืื STM8. ืืื ื ืื ืืืฉ ืืืืื ืึผืืื ื ืืืขืจืืง ืืื ืืืื ืืขืืืขืืก, ืืืจ ืงืึทื ืคืืืืขืจ ืื ืคึผืื ืก ืืื ืฉืืืคึผื-ืฆืืขื ืคึผืื ืก.
PWM
PWM ืืืืฃ ืื ืจืืข ืืืึทืืขืจ ืืื ืงืึทื ืคืืืืขืจื ืืื ืื ืืขืืืข ืืืขื ืืื ืืื ืื ืคืจืืขืจืืืงืข ืืขืฉืืืืข, ืืื ืฆืืืื ืืืคืขืจืึทื ืกืื:
ืขืจืฉืืขืจ, ืืืจ ืืึทืจืคึฟื ืฆื ืืขืื ืื ืืืขืจืจืืึทืก ืืืืฃ ืืขืจืืืึทื ืืืงื ืืขืฉืขืขื ืืฉ (UEV) ืืืึธืก ืืืขื ืจืืคื ืึท ืคึฟืื ืงืฆืืข ืืืึธืก ืืึทืืึทืื ืื ืึทืงืืืื ืืขืคืืจื. ืืขื ืืื ืืขืืื ืืืจื ืืฉืึทื ืืื ื ืื ืืืกื ืืขืจืืืึทื ืืืงื ืื ืืขืจืจืืคึผื ืืขืื ืืื ืึท ืจืขืืืกืืจืืจื ืืื ืึท ืืขืืื ื ื ืึธืืขื
ืืืขืจืจืืึทืกื ืืขืื ืจืขืืืกืืจืืจื
#define TIM2_IER *(volatile uint8_t *)0x005303
//enable interrupt
TIM2_IER = 1;
ืื ืฆืืืืืืข ืืืืืง ืืื ืฉืืึทืืืช ืฆื ืืขืจ ืืขืจืฉืืื ืื ื ืคืื ืืืืืืคึผืืขืงืกืื ื, ืึทืืึท ืืื ghosting - ืคึผืขืจืึทืกืืืืง ืฉืืึทื ืขื ืคืื ืืืืึธืืื. ืืื ืืื ืืืขืจ ืคืึทื, ืขืก ืงืขื ืืืื ืจืขืื ืฆื ืืขื ืคืึทืงื ืึทื ืืขืจ ืืืึทืืขืจ, ืืขืคึฟืืจื ืึท ืืืขืจืจืืึทืก ืืืืฃ ืื UEV, ืืืื ืฆื ืืืงืขื, ืืื ืื ืื ืืขืจืึทืคึผืืื ืืึทื ืืืขืจ ืืื ื ืืฉื ืืึธืื ืฆืืื ืฆื ืืึทืฉืืืืขื ืื ืืขืคืืจื ืืืืืขืจ ืื ืืืึทืืขืจ ืืืืื ืฆื ืฉืจืืึทืื ืขืคึผืขืก ืฆื ืื ืคึผืื ืก. ืฆื ืงืึทืืืึทื ืืขื, ืืืจ ืืืขื ืืึธืื ืฆื ืืืขืจืงืขืจื ืื ืืึธืืืง (0 = ืืึทืงืกืืืื ืืจืืืื ืึทืก, 255 = ืืึธืจื ืืฉื ืืื ืืื) ืืื ืืืกืืืืื ืขืงืกืืจืขื ืคืืืื ืฆืืงื ืืืึทืืืขืก. ืืขื ืข. ืขื ืฉืืจ ืึทื ื ืึธื UEV ืื ืืขืืก ืืืื ืืืืก ืืึธืจ ืคึฟืึทืจ ืืืื ืคึผืืื ืฆืืงื.
ืืืืฉื ืคึผืึธืืืขืจืึทืื:
//set polarity
TIM2_CCER1 |= (CC1P | CC2P);
TIM2_CCER2 |= CC3P;
ืืืกืืืืื ืืึทืฉืืขืืืงื r, g ืืื b ืฆื 255 ืืื ืืขืืขื ืงืขื ืฆื ืืืขืจืงืขืจื ืืื ืืืขื ืืืจ ื ืืฆื ืืื.
ืื ืืขืจืึทืคึผืฅ
ืื ืขืกืึทื ืก ืคืื ืึท ืืืขืจืจืืึทืก ืืื ืึทื ืืื ืืขืจ ืืืืขืจ ืฆืืฉืืื ืื ืื ืฉืคึผืึธื ืกืืึทืคึผืก ืขืงืกืึทืงืืืืื ื ืื ืืืืคึผื ืคึผืจืึธืืจืึทื ืืื ืจืืคื ืขืืืขืืข ืคืื ืืจืืืกื ืืืง ืคึฟืื ืงืฆืืข. ืื ืืขืจืึทืคึผืฅ ืคืึทืื ืจืขืื ืฆื ืคืื ืืจืืืกื ืืืง ืึธืืขืจ ืื ืขืจืืขื ืื ืคืืืึทื ืกืื, ืึทืจืืึทื ืืขืจืขืื ื ืื ืืืึทืืขืจ.
ืืืขื ืืืจ ืขืจืฉืืขืจ ืืืฉืืคื ืึท ืคึผืจืืืขืงื ืืื ST Visual Develop, ืืื ืึทืืืฉืึทื ืฆื main.c
ืืืจ ืืึธืื ืืึทืงืืืขื ืึท ืคึฟืขื ืฆืืขืจ ืืื ืึท ืืืกืืขืจืืขื ืืขืงืข stm8_interrupt_vector.c
, ืืืืืึธืืึทืืืฉ ืึทืจืืึทื ืืขืจืขืื ื ืืื ืื ืคึผืจืืืขืงื. ืืื ืืขื ืืขืงืข, ืึท ืคึฟืื ืงืฆืืข ืืื ืึทืกืืื ื ืฆื ืืขืืขืจ ืืืขืจืจืืึทืก NonHandledInterrupt
. ืืืจ ืืึทืจืคึฟื ืฆื ืืื ืื ืืื ืืืขืจ ืคึฟืื ืงืฆืืข ืฆื ืืขืจ ืืขืืืืื ืืืขืจืจืืึทืก.
ืื ืืึทืืึทืฉืื ืืื ืึท ืืืฉ ืคืื ืื ืืขืจืึทืคึผื ืืืขืงืืึธืจืก, ืืื ืืืจ ืืขืคึฟืื ืขื ืื ืืืึธืก ืืืจ ืืึทืจืคึฟื:
13 ืืื2 ืืขืจืืืึทื ืืืงื / ืึธืืืืขืจืคืืึธื
14 ืืื2 ืืึทืคึผื / ืคืึทืจืืืืึทืื
ืืืจ ืืึทืจืคึฟื ืฆื ืืืืฉื ืื ืืขืคืืจื ืืื UEV, ืึทืืื ืืืจ ืืึทืจืคึฟื ืืืขืจืจืืึทืกื #13.
ืึทืงืงืึธืจืืื ืืื, ืขืจืฉืืขืจ, ืืื ืืขืจ ืืขืงืข stm8_interrupt_vector.c
ืืืืฉื ืื ืคืขืืืงืืึทื ื ืึธืืขื ืคืื ืื ืคืึทื ืืงืฉืึทื ื ืคืึทืจืึทื ืืืืึธืจืืืขื ืคึฟืึทืจ ืืืขืจืจืืึทืก ื ืื 13 (IRQ13) ืฆื ืืืื ืืืืืขื ืข:
{0x82, TIM2_Overflow}, /* irq13 */
ืฆืืืืืื ืก, ืืืจ ืืืขืื ืืึธืื ืฆื ืฉืึทืคึฟื ืึท ืืขืงืข main.h
ืืื ืื ืคืืืืขื ืืข ืืื ืืึทืื:
#ifndef __MAIN_H
#define __MAIN_H
@far @interrupt void TIM2_Overflow (void);
#endif
ืืื ืืขืกืึธืฃ, ืฉืจืืึทืื ืืขื ืคึฟืื ืงืฆืืข ืืื ืืืื main.c
:
@far @interrupt void TIM2_Overflow (void)
{
PD_ODR &= ~(1<<5); // ะฒัััะฑะฐะตะผ ะดะตะผัะปััะธะฟะปะตะบัะพั
PC_ODR = (cnt<<3); // ะทะฐะฟะธััะฒะฐะตะผ ะฒ ะดะตะผัะปััะธะฟะปะตะบัะพั ะฝะพะฒะพะต ะทะฝะฐัะตะฝะธะต
PD_ODR |= (1<<5); // ะฒะบะปััะฐะตะผ ะดะตะผัะปััะธะฟะปะตะบัะพั
TIM2_SR1 = 0; // ัะฑัะฐััะฒะฐะตะผ ัะปะฐะณ Update Interrupt Pending
cnt++;
cnt &= 7; // ะดะฒะธะณะฐะตะผ ััะตััะธะบ LED
TIM2_CCR1L = ~colors[cnt][0]; // ะฟะตัะตะดะฐะตะผ ะฒ ะฑััะตั ะธะฝะฒะตััะธัะพะฒะฐะฝะฝัะต ะทะฝะฐัะตะฝะธั
TIM2_CCR2L = ~colors[cnt][1]; // ะดะปั ัะปะตะดัััะตะณะพ ัะธะบะปะฐ ะจะะ
TIM2_CCR3L = ~colors[cnt][2]; //
return;
}
ืึทืืข ืืืึธืก ืืืืืื ืืื ืฆื ืืขืื ืื ืืขืจืึทืคึผืฅ. ืืขื ืืื ืืขืืื ืืื ืื ืึทืกืขืืืึทืืขืจ ืืึทืคึฟืขื rim
- ืืืจ ืืืขื ืืึธืื ืฆื ืงืืงื ืคึฟืึทืจ ืขืก ืืื
//enable interrupts
_asm("rim");
ืื ืื ืืขืจ ืึทืกืขืืืึทืืขืจ ืืึทืคึฟืขื ืืื sim
โ ืืืจื ืก ืึทืืืขืง ืื ืืขืจืึทืคึผืฅ. ืืื ืืืื ืืืื ืืืืกืืขืืขืงื ืืฉืขืช ื ืืึท ืืืึทืืืขืก ืืขื ืขื ืืขืฉืจืืื ืฆื ืื "ืืืืืขื ืืึผืจืื", ืึทืืื ืึทื ืึท ืืืขืจืจืืึทืก ืืขืคึฟืืจื ืืื ืืขื ืืืืจืขืื ืืึธืืขื ื ืงืขื ื ืืฉื ืฆืขืืึธืื ืื ืืขื ืืข.
ืึทืืข ืงืึธื -
ืืืื ืืืึท ืืื ืืกืืขืจ ืขืืขืฆืขืจ ืืขืคืื ื ืืขื ืึทืจืืืงื ื ืืฆืืง, ืืื ืืื ื ืืฉื ืฉืจืืึทืื ืขืก ืืื ืึทืจืืืกืืขืืืึธืจืคื. ืืื ืืืขื ืืืื ืฆืืคืจืืื ืฆื ืืึทืงืืืขื ืืึทืืขืจืงืื ืืขื ืืื ืืขืจืืช, ืืื ืืืขื ืคึผืจืืืืจื ืฆื ืขื ืืคึฟืขืจื ืึทืืฅ.
ืืงืืจ: www.habr.com