ãã€ã¯ããšã¬ã¯ãããã¯ã¹ã¯ãéæ³ã® Arduino ã®ãããã§ãè¿å¹Žãã¡ãã·ã§ããã«ãªè¶£å³ã«ãªã£ãŠããŸãã ããããããã«åé¡ããããŸããååã«èå³ãããã°ãããã« DigitalWrite() ãè¶ ããããšãã§ããŸããã次ã«äœããã¹ããã¯å®å šã«ã¯æ確ã§ã¯ãããŸããã Arduinoã®éçºè ã¯ãšã³ã·ã¹ãã ãžã®åå ¥éå£ãäžããããšã«å€å€§ãªåªåãæã£ãŠããŸãããããšã³ã·ã¹ãã ã®å€ã«ã¯ã¢ããã¥ã¢ã«ã¯ã¢ã¯ã»ã¹ã§ããªãéé ·ãªåè·¯ã®æã森ããŸã æ®ã£ãŠããŸãã
ããšãã°ãããŒã¿ã·ãŒãã 圌ãã¯ãã¹ãŠãæã£ãŠããããã§ããããæã«åã£ãŠäœ¿çšããŸãã ãããããããã®èè ã¯æããã«ããã€ã¯ãã³ã³ãããŒã©ãŒãæ®åããããšãã䜿åœãèªåãã¡ã«èª²ããŠããŸããã æã ããã¯ããã§ãåå¿è ãã§ããã ãæ··ä¹±ãããããã«ãç°¡åãªããšã説æãããšãã«ãç解ã§ããªãçšèªãç¥èªãæå³çã«ä¹±çšããŠãããšããããšã§ãã ãããããã¹ãŠãããã»ã©æªãããã§ã¯ãªããå¿ èŠã«å¿ããŠæ£ºã¯éããŸãã
ãã®èšäºã§ã¯ã趣å³ã®ç®çã§ããŒã¿ã·ãŒããšéä¿¡ãã人æç§åŠã®å°é家ã®çµéšãå ±æããŸãã ãã®ããã¹ãã¯ãArduino ãã³ãããæé·ããã¢ããã¥ã¢ã察象ãšããŠããããã€ã¯ãã³ã³ãããŒã©ãŒã®åäœåçãããçšåºŠç解ããŠããããšãåæãšããŠããŸãã
äŒçµ±çãªãã®ããå§ããŸã
Arduinoã§LEDãç¹æ» ããã
ãããŠããã«ã³ãŒã:
void setup() {
DDRB |= (1<<5);
}
void loop() {
PINB = (1<<5);
for (volatile uint32_t k=0; k<100000; k++);
}
"ããã¯äœã§ããïŒ â æŽç·Žãããèªè
ã¯å°ããã§ãããã â PINB å
¥åã¬ãžã¹ã¿ã«äœããæžã蟌ãã®ã¯ãªãã§ãã? èªãã ãã§ããïŒã æ¬åœã«ã
ããã¯æ¯èŒçæ°ããæ©èœã§ãããAtmega8 ã«ã¯ãªãã£ãã®ã§ã誰ããç¥ã£ãŠããããã§ã¯ãªãããäžäœäºææ§ã®çç±ããèšåãããŠããŸããã ããããããŸãç¥ãããŠããªãæ©èœãå«ãããããã®ãã¹ãŠã®æ©èœã䜿çšããã«ã¯ããŒã¿ã·ãŒããèªã䟡å€ããããšããèããå®èšŒããã®ã«éåžžã«é©ããŠããŸãã ãããŠããããå¯äžã®çç±ã§ã¯ãããŸããã
ãªãããŒã¿ã·ãŒããèªãå¿ èŠãããã®ã§ãããã?
éåžžãArduino ãšã³ãžãã¢ã¯ LED ãš AnalogWrite ãååã«è©ŠããåŸãã©ã€ãã©ãªããã§ã«æžã蟌ãŸããŠããããããçš®é¡ã®ã¢ãžã¥ãŒã«ãããããããŒãã«æ¥ç¶ãå§ããŸãã é ããæ©ãããæ¬æ¥ã©ããã«åäœããªãã©ã€ãã©ãªãåºçŸããŸãã ãããçŽ äººãçŽãããã«ãããå§ãããšâŠã
ããã§ã¯ãŸã£ããç解ã§ããªãããšãèµ·ããã®ã§ãGoogle ã«ã¢ã¯ã»ã¹ããå€æ°ã®ãã¥ãŒããªã¢ã«ãèªã¿ã誰ãã®é©åãªã³ãŒãã®äžéšãåŒã£åŒµãåºããæçµçã«ç®æšãéæããå¿ èŠããããŸãã ããã¯å€§ããªéææãäžããŸãããå®éã«ã¯ããã®ããã»ã¹ã¯ãªãŒããã€ããªããŒã¹ãšã³ãžãã¢ãªã³ã°ããŠè»èŒªãåçºæãããããªãã®ã§ãã ããã«ããã®ãã€ã¯ãã©ã®ããã«æ©èœãããã«ã€ããŠã®ç解ã¯æ·±ãŸããŸããã ç§ããããé·ãéèªåã§ãã£ãŠããã®ã§ããããŸãã
ãã®ãšããµã€ãã£ã³ã°ãªæŽ»åã®ä»£ããã«ãAtmega328 ããã¥ã¡ã³ãã®ç 究ã«æ°æ¥ãè²»ãããŠããããå€§å¹ ã«æéãç¯çŽã§ããã§ãããã çµå±ã®ãšãããããã¯éåžžã«åçŽãªãã€ã¯ãã³ã³ãããŒã©ãŒã§ãã
ãããã£ãŠããã€ã¯ãã³ã³ãããŒã©ãŒãäžè¬çã«ã©ã®ããã«åäœããäœãã§ããããæ³åããã«ã¯ãå°ãªããšãããŒã¿ã·ãŒããèªãå¿ èŠããããŸãã ãããŠããã«ïŒ
-
ä»ã®äººã®ã©ã€ãã©ãªããã§ãã¯ããŠæé©åããããã ãããã¯å€ãã®å Žåãè»èŒªãåçºæããã®ãšåãã¢ããã¥ã¢ã«ãã£ãŠæžãããŠããŸãã ãããã¯éã«ãèè ã¯æå³çã«é床ã«ããŒã«ãã«ãŒãã«ããŠããŸãã XNUMX å倧ããããŠé床ã¯é ããªããŸãããééããªãæ©èœããŸãã
-
誰ãã©ã€ãã©ãªãäœæããŠããªããããžã§ã¯ãã§ãããã䜿çšã§ããããã«ããã
-
ãã MK ã©ã€ã³ããå¥ã® MK ã©ã€ã³ãžã®ç§»è¡ã容æã«ããããã
-
Arduino ã«é©åããªãã£ãå€ãã³ãŒããæçµçã«æé©åããŸãã
-
ã©ã€ãã©ãªãããå Žåã«ã¯ãã®æ§é ããããã調ã¹ãããšãªããã¬ãžã¹ã¿ãä»ããŠããããçŽæ¥å¶åŸ¡ããæ¹æ³ãåŠã¶ããã§ãã
HAL ãš LL ãããã®ã«ããªãã¬ãžã¹ã¿ã«çŽæ¥æžã蟌ãã®ã§ãããã?
çšèªé
HALãé«æœè±¡åã¬ã€ã€ãŒ â é«åºŠãªæœè±¡åºŠã§ãã€ã¯ãã³ã³ãããŒã©ãŒãå¶åŸ¡ããããã®ã©ã€ãã©ãªã SPI1 ã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããå¿
èŠãããå Žåã¯ãã©ã®ã¬ãžã¹ã¿ãäœãæ
åœããããèããã«ãSPI1 ãèšå®ããŠæå¹ã«ããã ãã§ãã
LLãäœã¬ãã« API â ã¬ãžã¹ã¿ ã¢ãã¬ã¹ãæã€ãã¯ããŸãã¯æ§é äœãå«ãã©ã€ãã©ãªãååã§ã¢ã¯ã»ã¹ã§ããŸãã Atmega ã® DDRxãPORTxãPINx 㯠LL ã§ãã
ãHALãLLããŸãã¯ã¬ãžã¹ã¿ããšãããããã¯ã«é¢ããè«äºã¯ãHabré ã®ã³ã¡ã³ãã§å®æçã«çºçããŸãã ã¢ã¹ãã©ã«ç¥èãžã®ã¢ã¯ã»ã¹ã䞻匵ããããšãªããç§ã¯åã«ç§ã®çŽ 人ã®çµéšãšèããå ±æããŸãã
Atmega ã®ããšãå€ããå°ãªããç解ããSTM32 ã®çŽ æŽãããã«é¢ããèšäºãèªãã ã®ã§ãDiscovery ã Blue Pills ãªã©ãXNUMX çš®é¡ã®ããŒããè³Œå ¥ããããã«ã¯èªäœè£œåçšã®ããããè³Œå ¥ããŸããã ãããã¯ãã¹ãŠXNUMX幎éç®±ã®äžã«åãéããŠããŸããã æã ãç§ã¯èªåã«ããèšããŸããããããã§çµããã ãä»é±æ«ãã STM ããã¹ã¿ãŒããããCubeMX ãèµ·åããSPI çšã®ã»ããã¢ãããçæããSTM ã®èäœæš©ããµãã ãã«çã蟌ãŸããããã¹ãã®å£ãèŠãŠããããäœãšãã ãããšå€æããŸãããå€ãã®ã
ãã¡ãããCubeMX ãããã§äœãæžãããã¯ããããŸãã ãããåæã«ããã¹ãŠã®èšèé£ããèŠããŠããææžãããã®ãéçŸå®çã§ããããšãæããã§ãã ããããããã°ããããã«ãCube å ã®ããã¯ã¹ã«ãã§ãã¯ãå ¥ããã®ããã£ããå¿ããŠããŸã£ããšããŠãããŸã£ããåé¡ãããŸããã
XNUMX幎ãçµã£ãä»ã§ãåãèããŠãã
HALãç¹ã« STM32CubeMX ã¯ãSTM32 ããããå¯æ¥ã«æ±ãããã®ãšã³ãžãã¢åãã®ããŒã«ã§ãã äž»ãªç¹åŸŽã¯ãé«ã¬ãã«ã®æœè±¡åã§ãããSTM32 ã©ã€ã³å ã«çãŸããªããããã MCU ããå¥ã® MCUãããã«ã¯ããã³ã¢ããå¥ã® MCU ã«è¿ éã«ç§»è¡ã§ããæ©èœã§ãã æ奜家ããã®ãããªåé¡ã«ééããããšã¯ãã£ãã«ãããŸãã - ç§ãã¡ã®ãã€ã¯ãã³ã³ãããŒã©ãŒã®éžæã¯ãååãšããŠãAliExpress ã®åæãã«éå®ãããŠãããæ ¹æ¬çã«ç°ãªããããã®éã§ç§»è¡ããããšããããããŸã - ç§ãã¡ã¯ Atmega ãã STMãSTM ãã ESPããŸãã¯äžåœäººã®å人ãæ°ãããã®ã§ããã°äœã§ã移è¡ããŸãç§ãã¡ã«æãã€ããŠãã ããã HAL ã¯ããã§ã¯åœ¹ã«ç«ãããå匷ããã®ã«å€ãã®æéãè²»ãããŸãã
LL ã¯æ®ããŸãããããããã¬ãžã¹ã¿ãŸã§ã¯åã¹ããããããŸãã å人çã«ã¯ãã¬ãžã¹ã¿ ã¢ãã¬ã¹ã䜿çšããŠãã¯ããäœæããããšãæçã§ãããšæããŠããŸããããŒã¿ã·ãŒãããã泚ææ·±ãæ€èšããå°æ¥å¿ èŠã«ãªããã®ãšçµ¶å¯Ÿã«å¿ èŠãšããªããã®ã«ã€ããŠèããããã°ã©ã ãããé©åã«æ§æããŸããäžè¬ã«ãå æãããšæèšã容æã«ãªããŸãã ã
ããã«ã人æ°ã®ãã STM32F103 ã«ã¯åŸ®åŠãªéãããããŸããäºææ§ã®ãªã LL ããŒãžã§ã³ã 32 ã€ãããXNUMX ã€ã¯ STM ã®å
¬åŒããŒãžã§ã³ããã XNUMX ã€ã¯ Leaf Labs ã®ããŒãžã§ã³ã§ãSTMXNUMXduino ãããžã§ã¯ãã§äœ¿çšãããŠããŸãã ããªãããªãŒãã³ãœãŒã¹ ã©ã€ãã©ãªãäœæããå Žå (ãããŠç§ã¯ãŸãã«
æåŸã«ãç§ã®æèŠã§ã¯ãç¹ã«ãããžã§ã¯ãã®æåããèšç»ããŠããå ŽåãLL ãæé€ãããšç§»è¡ãç°¡çŽ åãããŸãã èªåŒµãããäŸ: LL ã䜿çšããã« Atmel Studio 㧠Arduino ã®ç¹æ» ãæžããŠã¿ãŸããã:
#include <stdint.h>
#define _REG(addr) (*(volatile uint8_t*)(addr))
#define DDR_B 0x24
#define OUT_B 0x25
int main(void)
{
volatile uint32_t k;
_REG(DDR_B) |= (1<<5);
while(1)
{
_REG(OUT_B) |= (1<<5);
for (k=0; k<50000; k++);
_REG(OUT_B) &= ~(1<<5);
for (k=0; k<50000; k++);
}
}
ãã®ã³ãŒã㧠STM8 (ST Visual Desktop ãã) ãåããäžè¯ããŒãã® LED ãç¹æ» ãããã«ã¯ãã³ãŒãå ã® XNUMX ã€ã®ã¢ãã¬ã¹ãå€æŽããã ãã§ååã§ãã
#define DDR_B 0x5007
#define OUT_B 0x5005
ã¯ããç¹å®ã®ããŒãã« LED ãæ¥ç¶ããæ©èœã䜿çšããŠããŸããéåžžã«ãã£ããç¹æ» ããŸãããããã¯èµ·ãããŸãã
ããŒã¿ã·ãŒãã«ã¯ã©ã®ãããªçš®é¡ããããŸãã?
ãã·ã¢èªãšè±èªã®èšäºããã©ãŒã©ã ã§ã¯ããããŒã¿ã·ãŒãããšã¯ãããã«é¢ããæè¡ææžãæå³ããŠãããæ¬æã§ãåæ§ã«æ±ããŸãã æ£åŒã«ã¯ããããã¯ãã®ãããªããã¥ã¡ã³ãã® XNUMX ã€ã®ã¿ã€ãã«ãããŸããã
ããŒã¿ã·ãŒã â ããã©ãŒãã³ã¹ç¹æ§ãæŠè¡çããã³æè¡çç¹æ§ã ããããé»åéšåã«ã¯å¿ é ã§ãã èæ¯æ å ±ã¯æå ã«çœ®ããŠãããšäŸ¿å©ã§ãããçèããŠèªãã¹ãå 容ã¯ããŸããããŸããã ãã ããããåçŽãªãããã¯ãäžèŠãªããã¥ã¡ã³ããäœæããªãããã«ããŒã¿ã·ãŒãã«å¶éãããããšããããããŸãã ãã®å Žå ãªãã¡ã¬ã³ã¹ããã¥ã¢ã« ããã«å«ãŸããŠããŸãã
ãªãã¡ã¬ã³ã¹ããã¥ã¢ã« â 説ææžèªäœã¯ 1000 ããŒãžä»¥äžããå¥å šãªæ¬ã§ãã ãããã«è©°ã蟌ãŸããŠãããã¹ãŠã®æ©èœã詳现ã«èª¬æãããŠããŸãã ãã€ã¯ãã³ã³ãããŒã©ãŒããã¹ã¿ãŒããããã®äž»èŠãªããã¥ã¡ã³ãã ãšã¯ç°ãªã ããŒã¿ã·ãŒãã説ææžã¯å¹ åºã MK åãã«æžãããŠãããç¹å®ã®ã¢ãã«ã§ã¯å©çšã§ããªãåšèŸºæ©åšã«é¢ããå€ãã®æ å ±ãå«ãŸããŠããŸãã
ããã°ã©ãã³ã°ããã¥ã¢ã« ãŸã㯠åœä»€ã»ããããã¥ã¢ã« â ç¬èªã®ãã€ã¯ãã³ã³ãããŒã©ãŒã³ãã³ãã®èª¬æã ã¢ã»ã³ããªèšèªã§ããã°ã©ãã³ã°ãã人åãã«èšèšãããŠããŸãã ã³ã³ãã€ã©ã®äœæè ã¯ã³ãŒããæé©åããããã«ãããç©æ¥µçã«äœ¿çšãããããäžè¬çãªã±ãŒã¹ã§ã¯å¿ èŠãããŸããã ãã ããããã§ç¢ºèªããããšã¯ãäžè¬çãªç解ãå²ã蟌ã¿ã®çµäºãªã©ã®ç¹å®ã®ã³ãã³ããããã³ãããã¬ãç©æ¥µçã«äœ¿çšããå Žåã«åœ¹ç«ã¡ãŸãã
ã¢ããªã±ãŒã·ã§ã³ããŒã â ç¹å®ã®åé¡ã解決ããããã®åœ¹ç«ã€ãã³ããå€ãã®å Žåãã³ãŒãäŸãå«ãŸããŸãã
æ£èª€è¡š â éæšæºçãªãããåäœã®ã±ãŒã¹ãšåé¿çã®ãªãã·ã§ã³ (ååšããå Žå) ã®èª¬æã
ããŒã¿ã·ãŒãã®å 容
çŽæ¥ ããŒã¿ã·ãŒã 次ã®ã»ã¯ã·ã§ã³ãå¿ èŠã«ãªãå ŽåããããŸãã
ããã€ã¹ã®æŠèŠ â ããŒã¿ã·ãŒãã®æåã®ããŒãžã«ã¯ããã€ã¹ã«ã€ããŠç°¡åã«èª¬æãããŠããŸãã ã©ããã§ããããèŠã€ããïŒåºã§èŠããã¯ãã ä»ããããèšåãèŠã€ããïŒãšãã«ããããäœã§ããããç解ãããå Žåã«éåžžã«äŸ¿å©ã§ãã
æŠèŠ â 補åã©ã€ã³ã®ãããã®æ©èœã®ãã詳现ãªèª¬æã
ãã³å²ãåœãŠ â èãããããã¹ãŠã®ããã ããã±ãŒãžã®ãã³é çœ®å³ (ã©ã®ãã³ãã©ã®ã¬ãã°ã«ããã)ã
ãã³ã®èª¬æ â åãã³ã®ç®çãšæ©èœã®èª¬æã
ã¡ã¢ãªããã â ã¡ã¢ãªå ã«ã¢ãã¬ã¹ ããããå¿ èŠã«ãªãããšã¯ã»ãšãã©ãããŸããããã¬ãžã¹ã¿ ããã㯠ã¢ãã¬ã¹ã®ããŒãã«ãå«ãŸããå ŽåããããŸãã
å°å³ãç»é²ãã â ã¬ãžã¹ã¿ ãããã¯ã®ã¢ãã¬ã¹ã®ããŒãã«ã¯ãååãšããŠããŒã¿ã·ãŒããš åç §ããã¥ã¢ã« â ã·ããã®ã¿ (ã¢ãã¬ã¹ãªãã»ãã).
é»æ°çç¹æ§ â ãã®ã»ã¯ã·ã§ã³ã§ã¯äž»ã«æ¬¡ã®ããšã«é¢å¿ããããŸã 絶察æ倧å®æ Œããããããšã®æå€§è² è·ããªã¹ãããŸãã ç Žå£äžå¯èœãª Atmega328p ãšã¯ç°ãªããã»ãšãã©ã® MK ã§ã¯é倧ãªè² è·ããã³ã«æ¥ç¶ããããšãã§ããŸããããã㯠Arduinist ã«ãšã£ãŠäžå¿«ãªé©ãã«ãªããŸãã
ããã±ãŒãžæ å ± â å©çšå¯èœãªã±ãŒã¹ã®å³é¢ãããŒãã®èšèšæã«åœ¹ç«ã¡ãŸãã
ãªãã¡ã¬ã³ã¹ããã¥ã¢ã« æ§é çã«ã¯ãã¿ã€ãã«ã«ç€ºãããŠããç¹å®ã®åšèŸºæ©åšã«ç¹åããã»ã¯ã·ã§ã³ã§æ§æãããŠããŸãã åç« ã¯æ¬¡ã® XNUMX ã€ã®éšåã«åãããŠããŸãã
æŠèŠ, æŠèŠ, ç¹åŸŽ â åšèŸºæ©èœã®æŠèŠã
æ©èœèª¬æ, 䜿çšã¬ã€ã ãŸãã¯åã«ã»ã¯ã·ã§ã³ã®ã¡ã€ã³ããã㯠- åšèŸºæ©åšã®åçãšãã®äœ¿çšæ¹æ³ã«ã€ããŠã®è©³çŽ°ãªããã¹ã説æã
ã¬ãžã¹ã¿ â å¶åŸ¡ã¬ãžã¹ã¿ã®èª¬æã GPIO ã SPI ãªã©ã®åçŽãªã±ãŒã¹ã§ã¯ãããªãã§ã©ã«ã®äœ¿çšãéå§ããã«ã¯ããã§ååãããããŸããããå€ãã®å ŽåããŸã åã®éšåãèªãå¿ èŠããããŸãã
ããŒã¿ã·ãŒãã®èªã¿æ¹
ããŒã¿ã·ãŒãã¯ãç¿æ £çã«ããã®éãšç解ã§ããªãåèªã®å€ãã«é©ããããŸãã å®éãããã€ãã®ã©ã€ãããã¯ãç¥ã£ãŠããã°ããã¹ãŠã¯ããã»ã©æããã®ã§ã¯ãããŸããã
ã»ãã åªãã PDF ãªãŒããŒã ããŒã¿ã·ãŒãã¯çŽã®æ瀺ã®èŒãããäŒçµ±ã«åŸã£ãŠæžãããŠãããå°å·ããŠãã©ã¹ããã¯ã®ããã¯ããŒã¯ã«æãã§çž«ãã®ã«æé©ã§ãã ãããã®äžã«ãã€ããŒããã¹ãã埮éã«èŠ³å¯ãããŸãã 幞ããªããšã«ãå°ãªããšãææžã®æ§é ã¯ããã¯ããŒã¯ã䜿çšããŠèšèšãããŠãããããç°¡åã«ããã²ãŒã·ã§ã³ã§ããé©åãªãªãŒããŒãéåžžã«å¿ èŠã§ãã
ããŒã¿ã·ãŒã㯠Stroustrup ã®æç§æžã§ã¯ãªãã次ã®å 容ãå«ãŸããŠããŸãã å šéšèªãå¿ èŠã¯ãªãã åã®ã¢ããã€ã¹ã䜿çšããå Žåã¯ãããã¯ããŒã¯ ããŒã§ç®çã®ã»ã¯ã·ã§ã³ãèŠã€ããã ãã§ãã
ããŒã¿ã·ãŒããç¹ã« ãªãã¡ã¬ã³ã¹ããã¥ã¢ã«ãç¹å®ã®ãããã®æ©èœã説æããããšã¯ã§ããŸãããã è¡å šäœã ããã¯ãæ å ±ã®ååãããã㯠7 åã® XNUMX ããããã«é¢é£ããªãããšãæå³ããŸãã TIMXNUMX ã¬ãžã¹ã¿ãåŠç¿ããåã«ãã§ãã¯ã€ã³ããŠãã ãã æŠèŠã ããªãã¯ãããæã«å ¥ããŸãããïŒ
ç¥ã£ãŠãã аМглОйÑкОй åå㪠åºç€ã®æ®µéã ããŒã¿ã·ãŒãã¯ãå¹³åçãªãã€ãã£ã ã¹ããŒã«ãŒã«ã¯éŠŽæã¿ã®ãªãçšèªãååãåçŽãªæ¥ç¶æ§é ãååã§æ§æãããŠããŸãã äžåœèªè±èªã®åªããäžåœèªããŒã¿ã·ãŒãããããŸããååã¯çšèªã§ãããåŸåã¯ã©ã³ãã ãªåèªã®ã»ããã§ãã
äŒããã 銎æã¿ã®ãªãèšèãè±èª-ãã·ã¢èªèŸæžã䜿çšããŠç¿»èš³ããããšããªãã§ãã ããã è¿·ã£ãã ãã¹ããªã·ã¹ããã®å Žåãããã¹ããªã·ã¹ããšãã翻蚳ã¯ããªããæããããŸããã GoogleãStack OverflowãWikipediaããã©ãŒã©ã ã䜿çšããŸããå¿
èŠãªæŠå¿µã¯æ¬¡ã®ãšããã§ãã
èªãã å 容ãç解ããæè¯ã®æ¹æ³ã¯ã ã¢ã¯ã·ã§ã³ããã§ãã¯ã€ã³ããã ãããã£ãŠããŸã äœãã誀解ããŠéæ³ã®ç ãèŠãå Žåã«åããŠã䜿ãæ £ãããããã° ããŒãã XNUMX æãã§ããã° XNUMX ææå ã«çœ®ããŠãããŠãã ããã
äœæ¥ãè¡ããšãã«ããŒã¿ã·ãŒããæå ã«çœ®ããŠããã®ã¯è¯ãç¿æ £ã§ãã 誰ãã®ãã¥ãŒããªã¢ã«ãèªãã§ãã ãŸãã¯ä»ã®äººã®ã©ã€ãã©ãªãç 究ããããšãã§ããŸãã ãã®äžã§ãåé¡ã«å¯Ÿããããæé©ãªè§£æ±ºçãèŠã€ããå¯èœæ§ã¯ååã«ãããŸãã éãåæ§ã§ããã¬ãžã¹ã¿ãå®éã«ã©ã®ããã«æ©èœããããããŒã¿ã·ãŒãããç解ã§ããªãå Žåã¯ãGoogle ã§èª¿ã¹ãŠãã ãããããããã誰ããæ¢ã«ç°¡åãªèšèã§ãã¹ãŠã説æããŠããããGitHub ã«æ確ãªã³ãŒããæ®ããŠããã§ãããã
çšèªé
ããŒã¿ã·ãŒãã«ããã«æ £ããã®ã«åœ¹ç«ã€ããã€ãã®äŸ¿å©ãªåèªãšèšå·ã ããæ°æ¥ã§æãåºããããšãè¿œå ãä¿®æ£å€§æè¿ã§ãã
é»æ°
Vccã®, çå® â ããã©ã¹ããé£ã¹ç©
察, ãŽã£ãŒ â ããã€ãã¹ããå°ç
çŸåš - çŸåš
é»å§ - é»å§
é»æµãã·ã³ã¯ãã â å€éšè² è·ã®ãã¢ãŒã¹ããšããŠæ©èœããŸã
é»æµãäŸçµŠãã â å€éšè² è·ãžã®é»åäŸçµŠ
ãã€ã·ã³ã¯/ãœãŒã¹ãã³ â è² è·ã«å¯Ÿãããèæ§ããåäžãããã³
IO
é«ãé« â Vcc ãã³äž
Lãäœ â Vssãã³äž
é«ã€ã³ããŒãã³ã¹, ãã€ãŒãã, floating â ãã³ã«ã¯äœããªãããé«æµæãã§ãããå€çããã¯å®è³ªçã«èŠããŸããã
匱ãæžå, 匱ããã«ããŠã³ â å
èµãã«ã¢ãã/ãã«ããŠã³æµæãçŽ 50 kΩ ã«çžåœ (ããŒã¿ã·ãŒããåç
§)ã ããšãã°ãå
¥åãã³ã空äžã«ã¶ãäžãã£ãŠèª€èŠå ±ãçºçããã®ãé²ãããã«äœ¿çšãããŸãã 匱ã -圌ããäžæãããã®ã¯ç°¡åã ããã§ãã
æŒãåŒã â ãã³åºåã¢ãŒãã ã〠О ã㌠â Arduino ããã®éåžžã®åºåã
ãªãŒãã³ãã¬ã€ã³ â ãã³ã次ã®ããããã«ãªãåºåã¢ãŒãã®æå® ããŒãŸã㯠ãã€ã€ã³ããŒãã³ã¹/ãããŒãã£ã³ã°ã ããã«ãã»ãšãã©ã®å Žåãããã¯ãæ¬ç©ã®ããªãŒãã³ ãã¬ã€ã³ã§ã¯ãªããä¿è·ãã€ãªãŒããæµæãªã©ãååšããŸãã ããã¯åã«ã°ã©ãŠã³ã/ãªãã¢ãŒãã®æå®ã§ãã
çã®ãªãŒãã³ãã¬ã€ã³ - ããããããã¯å®éã®ãªãŒãã³ ãã¬ã€ã³ã§ãããã³ãéããŠããå Žåã¯ãã³ãçŽæ¥ã°ã©ã³ãã«ã€ãªãããéããŠããå Žåã¯ãã³ãåããªããŸãŸã«ãªããŸãã ããã¯ãå¿
èŠã«å¿ã㊠Vcc ãè¶
ããé»å§ãééãããããšãã§ããããšãæå³ããŸãããæ倧å€ã¯äŸç¶ãšããŠããŒã¿ã·ãŒãã®ã»ã¯ã·ã§ã³ã§æå®ãããŠããŸãã 絶察æ倧å®æ Œ/é»å§.
ã€ã³ã¿ãŒãã§ã€ã¹
ã·ãªãŒãºã§ â çŽåã«æ¥ç¶ãããŠãã
ãã§ãŒã³ãã â ã·ãªã¢ã«æ¥ç¶ã䜿çšããŠãããããã§ãŒã³ã«çµã¿ç«ãŠãåºåã®æ°ãå¢ãããŸãã
ã·ãã â ã·ãããéåžžã¯ããã ã·ããã瀺ããŸãã ããããã ã·ããã€ã³ãã О ã·ããã¢ãŠããã â ããŒã¿ããããããšã«éåä¿¡ããŸãã
â ãããããããã¡ãŒãä»ããŠã·ãããããéããããã¡ãŒãã«ããŒããã©ããã 移éãå®äºãããšãã«ããéããããããåãå§ããŸãã
æå»ãã â ãããããšã®è»¢éãå®è¡ãããã¹ãŠã®ããããæ£ããå Žæã«ã·ããããŸãã
ããã«ãããã¡, ã·ã£ããŠã¬ãžã¹ã¿, ããªããŒãã¬ãžã¹ã¿ â å±¥æŽæå®ãã¬ãžã¹ã¿ãæ°ããããŒã¿ãåãå
¥ããããšãã§ããå¿
èŠãããããããæç¹ãŸã§ä¿æããå¿
èŠãããå Žåã ããšãã°ãPWM ãæ£ããåäœããã«ã¯ãçŸåšã®ãµã€ã¯ã«ãçµäºãããŸã§ãã®ãã©ã¡ãŒã¿ (ãã¥ãŒã㣠ãµã€ã¯ã«ãåšæ³¢æ°) ãå€æŽãããã¹ãã§ã¯ãããŸããããæ°ãããã©ã¡ãŒã¿ã¯ãã§ã«è»¢éãããŠããå¯èœæ§ããããŸãã ãããã£ãŠãçŸåšã®ãã®ã¯æ¬¡ã®ãšããã§ãã ã·ã£ããŠã¬ãžã¹ã¿ãæ°ãããã®ã¯ä»¥äžã«è©²åœããŸãã ããªããŒãã¬ãžã¹ã¿ã察å¿ãããããã¬ãžã¹ã¿ã«æžã蟌ãŸããŸãã
ãããããªããš
ããªã¹ã±ãŒã© â åšæ³¢æ°ããªã¹ã±ãŒã©ãŒ
å°ãèšå®ãã â ãããã 1 ã«èšå®ããŸã
ããããã¯ãªã¢/ãªã»ããããã«ã¯ â ãããã 0 ã«ãªã»ãã (ãªã»ãã â STM ããŒã¿ã·ãŒãæ©èœ)
次ã®ã¹ããã
äžè¬ã«ãããã§ã¯ STM32 ããã³ STM8 ã«é¢ãã XNUMX ã€ã®ãããžã§ã¯ãã®ãã¢ã³ã¹ãã¬ãŒã·ã§ã³ãè¡ãå®è·µçãªéšåãèšç»ãããŠããŸãããããã¯ãé»çãSPIãã¿ã€ããŒãPWMãããã³å²ã蟌ã¿ã䜿çšããŠããŒã¿ã·ãŒãã䜿çšããŠãã®èšäºã®ããã«ç¹å¥ã«äœæãããŸããã
ãã ããããã¹ããå€ãããããããžã§ã¯ãã¯ç¬¬ XNUMX éšã«éãããŸãã
ããŒã¿ã·ãŒããèªãã¹ãã«ã¯è¶£å³ã«åœ¹ç«ã¡ãŸããããã©ãŒã©ã ããã£ããã§ã®è¶£å³ä»²éãšã®ã©ã€ãã³ãã¥ãã±ãŒã·ã§ã³ã«ä»£ãããã®ã§ã¯ãããŸããã ãã®ããã«ã¯ããŸã第äžã«è±èªåãåäžãããå¿
èŠããããŸãã ãããã£ãŠãèªã¿çµãã人ã«ã¯ç¹å¥ãªè³åãäžããããŸã: ã³ãŒãã䜿çšããæåã®æ¯æãã§ãSkyeng ã§ã® XNUMX åã®ç¡æã¬ãã¹ã³ HABR2
.
åºæïŒ habr.com