ãã®è©±ã¯ãªããªãããå§ããŸãã
ã¢ãªã¹ã§ããã»ãšãã©çããŸããã
ãã®åŸã®ããšã話ã®æ®ãã
èšãããåŸïŒ
ãã®ãšãã»ã€ã¯ããŸããŸãªãããã¯ã«å°å¿µããŸããããã®äžã«ã¯ãµãã¿ã€ãã«ã§æèµ·ããã質åã«å¯Ÿããå Žæãšçãããããç©èªã¯äž»ã«çŸä»£ã®MKã®åšèŸºã®åæåã«é¢é£ããåé¡ãäžå¿ã«å±éããŸãã
ãã®ãããMKã®ããŒããŠã§ã¢ã®ã»ããã¢ããã«é¢é£ããäž»ãªåé¡ã®æŠèŠã説æããŸããå€æ°ã®ãã©ã¡ãŒã¿ãŒãèšå®ããå¿
èŠãããããã®ã»ãšãã©ã¯ããããã®å Žåã«æå®ãããŸããããããã§ããªããä»»æã«èšå®ããããšã¯ã§ããŸããããäºåã«å®çŸ©ãããå€ãåãå¿
èŠããããŸãã ãã®ãããªåçŽãªåé¡ã®å£°æãæèã®æµããåŒãèµ·ãããããŸãæ確ã§ãªã解決çã«ã€ãªããå¯èœæ§ããããšèããŠããå Žåã¯ã
錻ãçãã€ã³ã¿ãŒãã§ãŒã¹ãããªãã¡IRPSïŒã©ãžã¢ã«ã·ãªã¢ã«ã€ã³ã¿ãŒãã§ãŒã¹-圌女ã¯çŸåšUARTãã£ã©ã¯ã¿ãŒãšããŠç»å Žããã®ã¯ãã®ååã§ããïŒã®ã»ããã¢ããã«é¢é£ããäŸãèŠãŠã¿ãŸãããã ç§ã¯ããã·ã¢èªã®ç¥èªãéè·¯äžã«éšåçã«ã¡ã¢ãæžããšããäºå®ã§ããçç±ã«ããã«çããŸããç§ã¯å人çã«ãããŒããŒãã¬ã€ã¢ãŠãã®åãæ¿ããAndroidããŒããŒãã®äŸ¿å©ãªéšåãšã¯åŒã³ãŸããå人çã«ã¯ãããã§ãªããã°ç»é¢ãçªãã®ã¯ãšãŠãäžäŸ¿ã§ãïŒã
ãã¡ãããæèµ·ãããåé¡ã®ç¯å²ã¯IRPSã«éå®ããããã®ã§ã¯ãªããä»ã®MKæ©åšãæ§æããå¿
èŠããããŸãããäŸãšããŠåãäžããŸããã ãã®ãããIRPSã®åäœãèšå®ããã«ã¯ãå°ãªããšãéä¿¡ãã©ãŒããããèšå®ããå¿
èŠããããŸããéä¿¡ãã©ãŒãããã¯ã次ã®ãã©ã¡ãŒã¿ãŒã«ãã£ãŠæ±ºå®ãããŸã-éä¿¡é床ãéä¿¡ããŒã¿ãããæ°ãããªãã£ãããã®ååšãšã¿ã€ããã¹ããããããæ°ã ãããŠãããã¯ã»ãã®å§ãŸãã«éãããå®éã«ã¯æ¡åŒµæ§æããããã¯ããã«é·ããªããŸãããä»ã§ã¯ããã«ã€ããŠã§ã¯ãããŸããã ãŸããIRPSã䜿çšããå Žåãã±ãŒã¹ã®70ïŒ
ã§æšæºæ§æ9600-8-0-1ãèšå®ãããå¥ã®25ïŒ
ã§äŒéé床ã®ã¿ãå€æŽãããä»ã®ãã¹ãŠã®æ§æã¯æ®ãã®5ïŒ
ãå
±æãããããã®ããã«ååšããå¿
èŠãããããšãèæ
®ããå¿
èŠããããŸãã«ã¹ã¿ãã€ãºããæ©èœã
ãã®åé¡ã解決ããããã®ããŸããŸãªãªãã·ã§ã³ãæ€èšããåã«ãç¹å®ã®ãªãã·ã§ã³ã®æåãè©äŸ¡ããããã®åºæºã決å®ããå¿
èŠããããŸããããããªããšãããé©åãªãªãã·ã§ã³ã®éžæã奜ã¿ã®è°è«ã«å€ãããŸãã ç§ã®æçš¿ã§ã¯ã以äžã®ç¶æ³ã決å®ããããšãèæ
®ããŠãããããäž»ã«ä¿¡é Œæ§åºæºããé²ã¿ãŸãã1.ééããç¯ãã®ã¯äººéã®æ§è³ªã§ãã2.ã³ã³ãã€ã©ã®ã¿ã¹ã¯ã¯ããããã®ãšã©ãŒãã§ããã ãæ©ãææããçæ³çã«ã¯ãã®å€èŠ³ã äžèšã®2ã€ã®ä»®èª¬ã®å°ãªããšã1ã€ã«åæããªãå Žåããããããã®èšäºã¯ããŸã奜ãã§ã¯ãªãã®ã§ããã®ã¬ãã¹ã³ã¯çŠæ¢ãããŠããŸãããããããã®ç«å Žãããç§ã¯1ã€ãŸãã¯å¥ã®è§£æ±ºçã®å容æ§ãæ€èšããŸãã³ã¡ã³ãã§ããªãã®ç«å Žãç¶ç¶ããïŒå¿
ç¶çã«åççã«ïŒè¿°ã¹ã
ãããããåäžä»£ã®MKïŒPICãAVRã51ïŒã§ã¯ã察å¿ããã¬ãžã¹ã¿ãŒã«çŽæ¥é²é³ããããšã§æ©åšãæ§æãããšããçŽ æŽãããä»äºãããããããã®ãããªåé¡ãçºçããçç±ãç解ã§ããŸããïŒ ãŸãããŸã第äžã«ãããªãã¯ç»é²ãç¥ãå¿
èŠããããŸãããŸãã¯ãä»æ¥ããã眮ãããšãæ
£ç¿ã§ããã®ã§ãããã¥ã¢ã«ãåžã£ãŠãã ããããããŠç§ã«ã¯å人çã«ãã®ã¬ãã¹ã³ã¯ç¹ã«é¢åã§ã¯ãªãããã§ãããç¹ã«çŸåšã®ããã¥ã¢ã«ã®å質ãèæ
®ããŠãéèŠãªéšåã«ã€ããŠã³ãã¥ããã£ã§ã¯ããã®ã¢ãããŒããæ¬åœã«åé¡ã«ãªãå¯èœæ§ããããŸãã
æè¿ã®ããã¥ã¡ã³ããŒã·ã§ã³ã®å質ã«ã€ããŠã®å°ããªã¡ã¢ïŒç§ã¯æ¬åœã«ããæããŸããïŒ-èã¯ä»¥åããç·ã ã£ããããããŸããããæè¿ã®ããã°ã®1ã€ã§ãžã£ãã¯ãã³ã¹ãªãŒã®ãã¬ãŒãºã«å®å
šã«åæããŸãã ãäžååããšããèšèãæããœãããªå®çŸ©ã«ãªããŸããã以åã¯ååšããªããšå®çŸ©ãããŠããŸããã ãã¡ãããã€ã³ã¿ãŒãããã¯çŽ æŽããããã®ã§ãïŒãããŠãããã«ã¯ç®èã¯ãããŸãããããã¯æ¬åœã«æ°ããäžçã®å¥è·¡ã§ãïŒãéçºè
ãšãã©ãŒã©ã ã®äž¡æ¹ã§ããããŸããªå Žæã§è³ªåãããããšãã§ããå€ãã®çããåŸãããšãã§ããŸãã ããããäžäžèŽã®äœå°ãæ®ããªããããªæ¹æ³ã§ããã¥ã¡ã³ããæžããŠã¿ãŸãããïŒ åœŒãã¯éåžžãéçºè
ã¯è¯ãããã¥ã¡ã³ããæžãããã«é¢äžããå¿
èŠãããã圌ãã®æéã¯è²Žéã§ããããã¯ãã«ã«ã©ã€ã¿ãŒã¯ã¿ã¹ã¯ã«å¯ŸåŠã§ããªããšçããŸãããç§ã®æèŠã§ã¯ãããã¯ç§ã®åé¡ã§ã¯ãããŸããã
ããã€ã¹ã®éçºè
ã¯ããŸãã«ãèªæã§ãããšä¿¡ããŠãããããéçºè
ã«èªæãªããšã¯åžžã«ïŒããæ£ç¢ºã«ã¯ãåžžã«ã§ã¯ãªãïŒãŠãŒã¶ãŒã«ã¯èªæã§ã¯ãªããããããã¥ã¡ã³ãã®å·çãå€éšå§èšããããšããå§ãããŸãããããã€ã¹ã䜿çšããããã€ã¹éçºè
ã«ã¯ãå§ãã§ãã ãã®çš®ã®ãµãŒãã¹ãæäŸãããªãã£ã¹ãäœæããããšãã§ããŸããã補é æ¥è
ã®ææžã«å¯Ÿããæ
床ãèãããšãããããé«äŸ¡ã§äžèŠãªãµãŒãã¹ã䜿çšããå¯èœæ§ã¯äœãã§ãããã
ããã¥ã¡ã³ãã®ãããã¯ã«é¢ããè¥å¹²ã®åæ³ã ç§ã¯æè¿ãåäžãããã®èª¬æã調ã¹ãŸããïŒã¡ãªã¿ã«Intelã«ããïŒãPE_RST_Nãšããååã®å
¥åããããŸããããã¯ã+ 3.3Vdcå
¥åãšããŠèšè¿°ãããã¢ãµãŒãããããšãé»åãšã¯ããã¯åšæ³¢æ°ã®ååšãéç¥ããŸãã å
¥åãã©ã®ããã«æ£ç¢ºã«èšè¿°ãããŠããã-é«ãŸãã¯äœã¯ç€ºãããŠããŸããããã®ä¿¡å·ã®æéå³ã¯ãããŸããïŒãã ããæéå³ã«ã¯PERSTïŒä¿¡å·ããããããã€ã¹ç¶æ
å³ã§ã¯åãååã§ç€ºãããŠããŸãïŒå€0bã¯ãªã»ããã®ã¢ã¯ãã£ããã£ã瀺ããŸãããªã»ãããååšããå Žåã®åäœã¢ãŒãã®è¡šã§ã¯ãåã®å€ã«ãã§ãã¯ããŒã¯ãããããã³ãã®ããã«ãªã£ãŠããŸãã äžè¬ã«ãéæ¥çãªå
åã®å
šäœã«åºã¥ããŠãããã€ã¹ã®ãªã»ããã«ã€ãªãããã®ã¬ãã°ã®ã¢ã¯ãã£ãã¬ãã«ã¯ã€ãšã¹ãããŒã§ãããšçµè«ä»ããããšãã§ããŸãããããã¥ã¡ã³ãã®å¯Ÿå¿ããæ確ã§ç°¡æœã§ç解å¯èœãªèª¬æãèªãã ãã§ãªãããªãæšæž¬ããå¿
èŠããããŸããïŒ
ãªãç§ã¯æšæž¬ãšæšæž¬ã®äžå®å®ãªå°ã«å
¥ãããšãäœåãªããããã®ã§ããïŒ ããããå人çã«ã¯ãããã¯éå»ã®äººçã«ãããæªãã«ã«ãã«å¯Ÿãã眰ã§ãïŒç§ããã®äººã®å€©äœ¿ã§ã¯ãããŸããã§ããïŒããä»ã®éçºè
ã¯äœãããŸãããïŒ ç§ã®ååã®äžäººã¯ããã®ãããªææžåã¯èããç«ã¡äžããã®ãå°é£ã«ããããã«ç¹å¥ã«è¡ãããŠãããšããèå³æ·±ã仮説ãè¡šæããŸãããããªããããè±èªã§æžãããŠããã®ã§ããïŒ ãããšãç§ãã¡ã®ããã«ç¹å¥ã«äœããããã®ã§ããã西æŽã§ã¯å®éã®æ£ããææžã䜿çšããŠããŸããïŒ ãã®å ŽåããåçŽãªæ inessã«ãã£ãŠèª¬æã§ããããšãæªæãæã£ãŠèª¬æããã¹ãã§ã¯ãªãããšãããã¬ãŒãºã¯å®å
šã«åœââãŠã¯ãŸããŸãïŒãã®ãããªããã¥ã¡ã³ãã®äœæè
ãéèªçãªåŒçšã§æãããŸããïŒã
ããããç§ã®å人çãªã³ã¬ã¯ã·ã§ã³ã®æ¬åœã®åäœã¯ããã«ã¢ããæµæåšæ¥ç¶ã®æ¥ç¶å¶åŸ¡ã次ã®ããã«èšè¿°ãããŠããææžã§ãäžè¬çã«ã¯åœå
äŒæ¥ã«ãã£ãŠè£œé ãããæªããªãMKã®èª¬æã§ãïŒã0-ãã«ã¢ããæµæåšã®ããããã¢ãŠããã1 ...ããã«æžãããŠããŸããïŒ -ããã«ã¢ããæµæåšã¯è±èœããŸããã-è¯ãè©Šã¿ã§ãããæšæž¬ããŸããã§ãã...ã¹ã¿ãžãªã§ã®ãã©ã ããŒã«...ãå€ã¯0ã®å察ã§ããã ã¿ããªææãã«ãŒãã³ã
ããããäžèšã®ãã¹ãŠïŒèª°ãããã§ã«å¿ããŠããå Žåãããã¥ã¡ã³ãã®éèŠã§ãªãå質ã«ã€ããŠè©±ããŠããïŒã¯ãåé¡ã®äžéšã§ããããã®2çªç®ã®ã³ã³ããŒãã³ã
çŸä»£ã®MKã¯åä»»è
ãããæ¬åœã«è€éã§ãããšããäºå®ã«ãããŸãã ããŒããŠã§ã¢ãããè€éã«ãªãããéçºè
ã®å¢ãç¶ããããŒãºããŸããŸãå®å
šã«æºãããããã®çŸè±¡ã®çç±ã®ãªã¹ãã®æåã«æ¥ãªãçç±ã«ã€ããŠãç§èªèº«ã®ãã€ã³ãããããŸãããå
šäœçãªç§ã®èãã¯äžè¬çã«ç¶æ³ãå€ããŸãã-çŸä»£ã®MKã¯æ¬åœã«è€éã§ããã®åä»»è
ã®ãã¡ãããŒããŠã§ã¢ãããã¯ãã¯ããã«å€ãããããã¯èªäœãããè€éã«ãªããéçºè
ãããžãã¹ã«äœ¿çšã§ããïŒããã³äœ¿çšããå¿
èŠãããïŒè¿œå ã®æ©èœãå®è£
ããŠããŸãã START UARTãã¡ããªã®ããã€ãã®æ©èœïŒæ¬åœã«åœ¹ç«ã€ïŒã®ãããã¯ã«é¢ããæçš¿ãèããŸããããããçµãããããããã®æ©èœã®äœ¿çšãå®è£
ãããšãã ãããã®æçš¿ã«åœãå¹ã蟌ãã åé¡ã«ã€ããŠèããŸããã
åé¡ã®æ¬¡ã®éšåã¯ãããŸããŸãªã¡ãŒã«ãŒã®MKãã¡ããªãš1ã€ã®ã¡ãŒã«ãŒã®åãã·ãªãŒãºå
ã®MKäºçš®ã®äž¡æ¹ã®åœåæ³ã®å¢å ã«é¢é£ããŠããã1ã€ã®äºçš®å
ã®ããªãå€æ§ãªããã€ã¹ã§çµãããŸãã åœåæ³ã®æ¡å€§ãšåæã«ã家æã®ç¹å®ã®ä»£è¡šè
ã®ã©ã€ããµã€ã¯ã«ãççž®ãããæ°ããããã€ã¹ãžã®æ°žç¶çãªç§»è¡ã®åé¡ãçããŸãã ç¹°ãè¿ããŸãããããã¯åžžã«å¿
èŠãšããããã§ã¯ãããŸããããããã«å¯ŸåŠããããšã¯éåžžã«é£ããã®ã§ãå¥ã®MKãžã®åãæ¿ããã§ããã ãçã¿ããªããçæ³çã«ã¯1è¡ã眮ãæããããã«ãœãããŠã§ã¢ãéçºããããšããå§ãããŸã
#define device xxxxx
ãã¡ãããããã¯æšæºã©ã€ãã©ãªã䜿çšããããšã§å®¹æã«ãªããŸãããã®ãããç§ã¯ãã®æçš¿ãæ£ããïŒç§ã®èŠ³ç¹ããã¯ãå¥ã®ããšãç¥ã£ãŠããŸãïŒã«ã€ããŠæžããŠããŸãã
IRPSèšå®ãå®è£
ããããã®å¯èœãªãªãã·ã§ã³ã®æ€èšãéå§ãããããã®æåã®ãã®ã¯ããã¹ãŠã®å¯èœãªãã©ã¡ãŒã¿ãæã€åçŽãªåæåé¢æ°ã«ãªããŸãïŒããã§ã¯ããã°ããã®éãã¢ã«ãŽãªãºã ããã°ã©ãã³ã°èšèªã§ããANPã«ãµã³ãã«ããã¹ããæžãèªæã«èŠãã¿ãŸããããããã¯ãã§ã«åœå¢ã®å察åŽã«ãããšæ±ºå®ããŸãããåããæªãåé¢ãããããããç°¡åã«ãããŒãªã³ã°ãè¡ããŸãïŒã ãããŠã次ã®ãããªãã®ãåŸãããŸã
UARTInit(9600,8,0,1)
åè¿°ã®æšæºçãªã±ãŒã¹ã®å ŽåïŒä»¥äžãMKã«ååšããæ©åšã®1ã€ã®èª¿æŽå¯èœãªãã£ãã«ãéžæãããšãã質åã¯ãæ¬åŒ§ããé€å€ããŸãïŒã ããã§ã¯ãã¹ãŠãé 調ã§ãè¶
èªç¶çãªããšãæžãå¿
èŠã¯ãããŸãããããã®ãªãã·ã§ã³ã®æ¬ ç¹ãèŠã€ããïŒãã¡ãããä»ã®çç±ã§ïŒæ¬ ç¹ãæé€ããããšããŸãã
ãŸãæåã«ãããŒããŠã§ã¢ã®ã»ããã¢ããæé ã§äžè¬çã«å¿
èŠãªãã®ãšãããã«èšå®ããèŠä»¶ã決å®ããå¿
èŠããããŸãã ç§ã®æèŠã§ã¯ãããã°ã©ã ã¯äž»ã«ä¿¡é Œã§ããå®å
šã§ãç解ã§ãããã®ã§ãªããã°ãªããŸããã åæåã¯ååãšããŠäžåºŠå®è¡ãããããŸãéããªããããå¹çèŠä»¶ã¯ããã»ã©éèŠã§ã¯ãããŸããããã¡ã¢ãªãã³ã³ãã¯ãã§é床ãèŠæ±ãããªãå Žåãããã¯è©äŸ¡ã®è¿œå ãã©ã¹ã§ãã ãšããã§ãå°ãªããšã1ã€ã®æè¡ãã€ãŸãCharliplekingã§ã¯ãMKã¬ãã°ã®åäœã¢ãŒããå€æŽããå¿
èŠããããããé床ããŸã£ããç¡èŠããªãã§ãã ããã
ãã®ãã¯ãããžãŒã§èŠãããæ¬ ç¹ïŒãããŠããã以å€ã®å Žåã¯ããã«è©³ãã説æããŸãïŒ-ãŸããå€æ°ã®ãã©ã¡ãŒã¿ãŒãå³å¯ã«å®çŸ©ãããé åºã§ãªã¹ãããå¿
èŠããããã©ããã§ééããç¯ããå Žåãçµæã¯åŸãããŸããæåŸ
ããŠãããã®ã åãã©ã¡ãŒã¿ãŒã«ã«ã¹ã¿ã ããŒã¿åãå®çŸ©ãããšããã©ã¡ãŒã¿ãŒã®é åºã«é¢ããåé¡ã¯å€å°ç·©åããã次ã®ããã«ãªããŸãã
typedef enum {âŠUARTSpeed9600âŠ} UARTSpeedT; void UARTInit(UARTSpeesT UartSpeed,âŠ};
ããã¹ãããããšãããšãã³ã³ãã€ã©ããèŠåã衚瀺ãããŸãã ãã®ã¢ãããŒãã¯ãå®è¡æ®µéãšã³ã³ãã€ã«æ®µéã§å°ããè²»çšãããããŸããããã®ãããç§ã¯ããã匷ããå§ããããšåæã«ãèè
ïŒç¬èªã®ã©ã€ãã©ãªãå«ãïŒããã®ãããªåçŽãã€åæã«å¹æçãªæ¹æ³ã§ç¡èŠãããŠãããšããèŠçãªæžæããè¡šçŸã§ããŸãã
圌ãã®å¯äžã®æ£åœåã¯ãçŽæçãªïŒç®èã ã£ãïŒããžãã¯ãã³ããŒ9600ãšã¯å¯Ÿç
§çã«ãèšæ¶ããå¿
èŠãããè¡šçŸã䜿çšããå¿
èŠããããããããŸããã å¥ã®æ¹æ³ã¯ãé¢æ°ã«å
¥ããšãã®å€æ°ã®ã¢ãµãŒã·ã§ã³ã§ãã³ã³ãã€ã©ãŒã®ãã©ã¡ãŒã¿ãŒã®æ£ç¢ºæ§ããã§ãã¯ããŸãã ååãšããŠããã®ã¢ãããŒãã¯ããã»ã©æªãã¯ãããŸããïŒå°ããªéã§ã倧ããªãŽãããªãããåªããŠããŸãïŒãããããã°ããªãªãŒã¹ãããšã©ãŒã¡ãã»ãŒãžãå®è¡ã¹ããŒãžã«è»¢éããå¿
èŠããããŸãã
ãã ãããã©ã¡ãŒã¿ãŒã®é åºã®èŠä»¶ãå°ãæ»ããã«ãããšïŒéåããããšãããšscãããããã«ãªããŸãïŒãããã§ããã¹ãŠã®ãã©ã¡ãŒã¿ãŒããªã¹ãããå¿
èŠããããé¢åã§ãã é«åºŠãªèšèªã§äœæ¥ããå Žåãããã©ã«ãã®ãã©ã¡ãŒã¿ãŒå€ããããŸãããå€å
žçãªCã®ãã¬ãŒã ã¯ãŒã¯å
ã«ãšã©ãŸãå ŽåïŒãããŠãåã«èŠåããªãéãããããã«çãŸãå ŽåïŒããã®æ¹æ³ã¯ç§ãã¡ã«ã¯é©ããŠããŸããã ããã«ããã®ã¡ãœããã«ã¯éåžžã«å€§ããªå¶éããããŸããã€ãŸãããã¹ãŠã®ããã©ã«ããã©ã¡ãŒã¿ã¯å®çŸ©ããããã©ã¡ãŒã¿ã«åŸãå¿
èŠãããããããªã¹ãã®æåŸã®ãã©ã¡ãŒã¿ãæ瀺çã«èšå®ããã«ã¯ã以åã®ãã©ã¡ãŒã¿ããã¹ãŠæå®ããå¿
èŠããããŸãã
C ++ãªã©ã®é«åºŠãªèšèªã§åã³äœæ¥ããå Žåããã1ã€ã®æ¹æ³ããããŸã-å²ãåœãŠæŒç®åããªãŒããŒããŒãããŸãããïŒ4 + 4 * 3 + 4 + 1 = 21ïŒå²ãåœãŠé¢æ°ãããŒãåŒæ°ã®é åºãšãä»»æã®é åºã®ããã«æ³åã§ããªãæ°ã®å²ãåœãŠé¢æ°ã ããã«ããããããããã®ãããªå¯èœæ§ãååšããè¯èã®èŠåã¯ãããèšåããããšãå¿
èŠãšããŸããã圌ãã¯ããã䜿çšããããšã矩åä»ããŠããŸããã
ãã¯ãèšèªæ©èœãå®éã«æäŸããåªããããªããã»ããµãããã°ãå¯å€æ°ã®åä»ãåŒæ°ã䜿çšããŠãã¯ãé¢æ°åŒã³åºããèšè¿°ããããªããã»ããµã«ãã£ãŠçæãããé¢æ°åŒã³åºããååŸã§ããŸãããããã¯ãããŸããïŒãŸããCã«ã¯åªããããªããã»ããµããããŸããïŒ ãå¹³åããããŸããïŒã ãã®æçš¿ã®èªè
ã®1人ãCèšèªã®æšæºããªããã»ããµãæ¬åœã«ãã¯ãèšèªã§ãããšèããŠããå ŽåãDECãã·ã³ã®ã¢ã»ã³ããªèšèªãã¯ãããã»ããµã®èª¬æã«ç²Ÿéããããšã匷ããå§ãããŸããããããã°ããã®äž»é¡ã«ã€ããŠããã«è©³ããè°è«ããããšãå¯èœã«ãªããŸãã ãããããã®é åºã§ã®ã¿ã§ãããã³ãŒãçæã®ä»ã®éçºãããæ段ãšã®ç¥ãåããæé€ããŸããã ããã«ããããããããã®ãããªã¢ãããŒãã¯è¡šçŸæ段ãéãããŠããããå©çšã§ããªããããç¬èªã®ããªããã»ããµãäœæããããšã¯ãããŸããã ãã®æ²èŠ³çãªæ³šæäºé
ã«ã€ããŠã¯ãçŽæ¥ãã©ã¡ãŒã¿ãŒè»¢éã§åæåé¢æ°ã䜿çšãããªãã·ã§ã³ã®èª¬æãç· ãããããŸãã
å¥ã®ãªãã·ã§ã³ã¯ãç¹å®ã®å¶åŸ¡æ§é ã䜿çšãããã®æ§é ã®ãã£ãŒã«ãã®å€ãèšå®ããããã»ã¹ïŒããã©ã«ãã§èšå®ãããŠãããã®ãå«ãïŒãåæåããã»ã¹èªäœããåé¢ããããšã§ãã äœãç§ãã¡ã«ãã®ãããªåé¢ãäžããŸããïŒ ãŸã第äžã«ãããã©ã«ãå€ãšã¯ç°ãªããã©ã¡ãŒã¿ãŒã®ã¿ãå€æŽããåŸ
æã®æ©äŒã§ãã
ãã¡ãããåæã«ããããã®å€ãéåžžã«ããæ³åããŠèŠããŠããå¿
èŠããããŸããã2ã³ãã³ãã³ã³ãã€ã©ã¯éæäžå¯èœãªçæ³ã®ãŸãŸã§ãã ããããããªãã¯ãã®äžçã®ãã¹ãŠã«ãéãæããªããã°ãªããŸããããããŠãã®ãããªæ©äŒã®ããã«ãç§ãã¡ã¯ãããã®éåžžã«ããã©ã«ãå€ãä¿èšŒããå¿
èŠæ§ãæ¯æããªããã°ãªããŸãããé¢æ°ãžã®çŽæ¥åŒã³åºãã䜿çšãããšããäœããã®æ¹æ³ã§ã³ã³ãã€ã©ã«ãã£ãŠä¿èšŒãããŸããã
ãã¡ãããããã©ã«ãå€ãèšå®ããããã®é¢æ°ãäœæãã䜿çšããäºå®ã®å¶åŸ¡æ§é ã«å¯ŸããŠãããåŒã³åºãå Žåãåé¡ã¯ãããŸããã ãããŠããããããã®ãå¿ãããïŒ æè¯ã®å ŽåãæåŸ
ãããã®ãšã¯å°ãç°ãªããäžçšåºŠã®æ·±å»åºŠã®å ŽåãæåŸ
ãããã®ããŸã£ããåŸããããéåžžã«æªãå Žåãæ©åšãæå·ããã»ã©å€ãã¯åŸãããŸããããææªã®å Žåã¯ãã¹ãŠåŸãããŸãäžèšã®çªç¶ãã€ãŸãããŸãã§ç¹°ãè¿ãã®å°ãªãç¶æ³ã§ãã ããã¯ãã¿ã¹ã¯ã決ããŠæ±ºããŠãã§ãããããªãããã«ããããã§ãã
ç¹°ãè¿ããŸãããC ++ã䜿çšããå Žåãã³ã³ã¹ãã©ã¯ã¿ã¯ç§ãã¡ã®é¡æã«å¯Ÿããèªç¶ãªçãã§ãããã¹ããŒããã€ã³ã¿ããã蟌ããšããœãªã¥ãŒã·ã§ã³ã¯çæ³ã«è¿ããªããŸãããããã¯ãµã ã©ã€ã®æ¹æ³ã§ãããããçŽç²ãªCã®ãã¬ãŒã ã¯ãŒã¯ã®ãŸãŸã§ãïŒã»ã°ã¡ã³ããŒã·ã§ã³é害é£ç¶ãã¹ïŒã
å¶åŸ¡æ§é ã®äœ¿çšã«é¢é£ãã1ã€ã®åé¡ãã€ãŸãæ§é èªäœã®åœ¢åŒãšãã®ã³ã³ããŒãã³ãã®å€æŽæ¹æ³ã«å¯Ÿããæ
床ã決å®ããŸãã
ãŸã第äžã«ãç§ã¯å人çã«ãäžè¬ã«ã©ã€ãã©ãªã®å
éšæ§é ãç¹ã«ãã®ã©ã€ãã©ãªã®å¶åŸ¡æ§é ã«é¢ããæ
å ±ããŠãŒã¶ãŒã«æäŸããããšã«å察ããããšã宣èšããŸãã ãã®æ¯ãèãã®éžè±ã®çç±ã¯ãåªãããéå»ã®ãããOOPã®ååããã¯ã»ã©é ããã®ã§ãããã³ã³ãã¥ãŒã¿ãŒã倧ããé ãæ代ã«çœ®ããããããååããŒãã«ã®å€§å°ã®RAMãã³ã³ãã€ã«ãæ¬åœã«é
ãããå¯èœæ§ããããŸããã ãããã£ãŠãã«ãã»ã«åãšã€ã³ã¿ãŒãã§ã€ã¹ã®æŠå¿µã¯ãå
éšæµæãªãã§ãã³ã³ãã€ã«æ®µéã§ã¡ã¢ãªãç¯çŽããããšãšã¯ãŸã£ããç°ãªãçç±ã§äœæãããŸããããç§ã¯éåžžã«å·éã«ç§ã®æ代ã«åãå
¥ããŸããã
ã¡ãªã¿ã«ãVMKã§æããããã³ãŒã¹ã«åºã¥ããŠãæ°åŠè
ã®ããã®ããã°ã©ãã³ã°ããšããæ¬ããå§ãããŸãïŒãã€ãŠãæäœæ¹æ³ã®èŠ³ç¹ãããã®çšèªã䜿ããã«OOPã®åçãå®å
šã«èª¬æããŠããŸãïŒã
ãããŠãç§ã®è¡åã¯éžè±ã§ãããäž»æµããã®éžè±ã§ããããšããSTMãTIãå«ãæåãªãœãããŠã§ã¢ããã±ãŒãžã®ãœãŒã¹ã®èª¿æ»ã«ãã£ãŠç¢ºèªãããŠããŸãã ç解ã§ããªãèæ
®äºé
ã®ããããããã®ããã±ãŒãžã®äœæè
ã¯ãããããŒãã¡ã€ã«ã®å
¥ãåã«ãªã£ãå
å«ãšåå
å«ã«å¯Ÿããä¿è·ã䜿çšããããšã«ãã£ãŠéæããããã¹ãŠã«ã€ããŠãã¹ãŠãç¥ã£ãŠããå¿
èŠããããšèããŠããŸãã ã€ãŸããçªç¶IRPSã¢ãžã¥ãŒã«ãUSBãã¹ãå¶åŸ¡ã¬ãžã¹ã¿å
ã®ãããã®ååžãèŠã€ããããªãå ŽåããèŠãã¿ã衰匱ããããã«ã¯...æ»ã¬ãããšã«ãªããŸãã
æèµ·ããããããã¯ã«é¢ããå°ããªäœè«-hãã¡ã€ã«ã§ã®includeãã£ã¬ã¯ãã£ãã®äœ¿çšã¯æªã§ãããšæ¬åœã«èããŸãããŸããããããŒãã¡ã€ã«ã®å
é ã«æ¡ä»¶ä»ããã¯ããé
眮ããŠãå«ç
ã«ãã害ãæžããæ¹æ³ã®ãã³ããšããŠåå
å«ãé²ãããšããå§ãããŸãã æ£ããã·ã³ãã«ãªè§£æ±ºç-å«ç
ããªã-ã¯æšå¥šäºé
ã®äœè
ã«ãã£ãŠèæ
®ãããŠããŸãããã€ãŸãããœãããŠã§ã¢ããã±ãŒãžã®ã¢ãŒããã¯ãã£ãæ€èšããã¢ãžã¥ãŒã«ã®é¢ä¿ã決å®ãããã®éå±€ã®å¹³åãæ§ç¯ããããšãæ瀺ããŠããŸãïŒå¹³å以äžãŸãã¯ããç¥ãããŠããäŒæ¥ã®è£œåã«ã€ããŠè©±ããŠããïŒããã°ã©ããŒçµã¿èŸŒã¿ã·ã¹ãã ã¯å®çŸ©äžæ©èœããŠããŸããããã®ãããç§ãã¡ã¯æ²ãã£ãå©ãæã«ãã害ãæå°éã«æããããšã«ã€ããŠã®ã¿è©±ãããšãã§ããŸãã
ãããã©ãã»ã©çå®ãã¯ããããŸããããå人çã«ã¯ããã®ãããªåã蟌ã¿ããããŒãã¡ã€ã«ã«ã¯ãäœæè
ã®åªããïŒä¿¡é Œæ§ãé«ã䟿å©ãªïŒã³ãŒããæžãèœåã«çåãæãããããã®ããããŸãã ããããããã¯å人çãªæèŠã§ãããé »ç¹ãªäŒè©±ã§è¡šæããã圌ããèšãããã«ããããããç§ã¯ããããã®ããã«å¯èœã§ãã£ãããšãç¥ããŸããã§ãããã
ã ãã圌ãã¯ïŒSTMãšTIïŒåœŒããæãããã«ãç§ã¯ãããªããç¥ã£ãŠããã»ã©ç ããªããããŸãã¯å¥ã®èšãåãã§ãããªããç¥ããªãããšã¯ããªããå¿é
ãããããšã¯ã§ããªãããšããååãå®ãç¶ããŸãã ãããã£ãŠãã©ã€ãã©ãªã®ãŠãŒã¶ãŒã¯ãã®å
éšæ§é ã«é¢ããFIGæ
å ±ããããããªãã£ããšä¿¡ããŠããŸãããCå
ã§ã¯ãããæäŸãã矩åããããŸãïŒãããŠTurbo Pascalã§ã¯ãŠãããã³ã³ã»ããã§ã©ãã ãã¯ãŒã«ã§ããããå®çŸäžå¯èœã®å€¢ã¯äœã§ããïŒ C ++ã«ã¯å«ãŸããªãããš17ïŒã ã ããã©ããã§
Typedef struct { UARTSpeedT UARTSpeed; ⊠} UARTConfigT;
ãããŠãã®å€èŠ³ã¯å
±ç£äž»çŸ©åŽåè
ã®åå©ãšåããããé¿ããããªãã ãããã誰ãç§ãã¡ã«æ³¥æ²Œãžã®éã«æ²¿ã£ãŠå¥ã®äžæ©ãèžã¿åºããã¹ã¿ã€ã«ã§å¶åŸ¡æ
å ±ã®å€ãèšå®ããããšã匷å¶ããŸãã
UARTConfigT UARTConfig; UARTConfig.UARTSpeed=UARTSpeed9600;
ãŠãŒã¶ãŒã¯ç§ãã¡ã®ç¹å®ã®åéã«å
šãèå³ããªããå¿
èŠãªããšãèµ·ãããšããèªä¿¡ã ããå¿
èŠã ããã§ãã ãããã£ãŠã次ã®ã³ãŒããã©ã°ã¡ã³ãã«ç€ºãããã«ã1ã€ãŸãã¯å¥ã®SET-teraã®äœ¿çšãæãŸãããšæãããå¥ã®é¢æ°ãŸãã¯ã¡ã³ããŒé¢æ°ãšããŠã®å®è£
ã¯å¥œã¿ã®åé¡ã®ãŸãŸã§ãã
void UARTSetSpeed(UARTConfigT *UARTConfig, UARTSpeedT UARTSpeed); UARTSetSpeed(&UartConfig, UARTSpeed9600);
é¢æ°ã®åœåã¹ã¿ã€ã«ãã©ãã»ã©éãããaã³ç³ãäžããŸãããååã«20æåãè¿œå ããããšã§30åéã®ãããã°ãç¯çŽã§ããã°ãåã¡ãŸããã
ãã®ã¢ãããŒãã¯ãOOPã®ååã«åŸãããšã«å ããŠãå®çšçãªäŸ¡å€ããããŸã-C ++ã䜿çšããå ŽåïŒãã ãã䜿çšããªãå Žåãå¿ããªãã§ãã ããïŒïŒã1ã€ã®ãªãŒããŒããŒãé¢æ°ãèšè¿°ããã¹ã¿ã€ã«ã§ããŸããŸãªãã©ã¡ãŒã¿ãŒãèšå®ããããšãã§ããŸã
void UARTSetParam(UARTConfigT *UARTConfig, UARTSpeedT UartSpeed); void UARTSetParam(UARTConfigT *UARTConfig, UARTParityT UartParity);
ãªã©ãååãèšæ¶ããããã«å¿
èŠãªæ©èœã®æ°ãæžããããšã«ããããŠãŒã¶ãŒã®è³ãžã®è² è·ãæžããããšãã§ããŸãã
ãã¡ããããDarZaNeByãïŒHeinleinã倧åã«ããŠãã人ãžã®ç¹å¥ãªæšæ¶ïŒãšã»ãã¿ãŒãžã®ã¢ã¯ã»ã¹ã«ã¯ããã£ãŒã«ãã«å€ãçŽæ¥å²ãåœãŠãããããå®è¡ã«æéãããããã³ãŒããä¿åããããã«ããå€ãã®ã¡ã¢ãªãå¿
èŠã§ãïŒã€ã³ã©ã€ã³é¢æ°ã®å Žåããã®ã¹ããŒãã¡ã³ããšçãããïŒãããããç§ã®èŠ³ç¹ãããå©ç¹ã¯åããŸãã
ãã1ã€ã®èå³æ·±ãåŽé¢ã¯ããŠãŒã¶ãŒãã³ã³ãããŒã«æ§é ãå¿
èŠãšãããããã«ã€ããŠïŒåœŒãèããããšã¯äœã§ãïŒç¥ããªããšããããšã§ãããã®ããããŠãŒã¶ãŒã«ã¯èŠããªãããã«ãããšããã§ããããããã«ããããã®äœ¿çšæ¹æ³ãŸãã¯å¿åã€ã³ã¹ã¿ã³ã¹ã«ç¹å®ã®å¶éã課ããããŸãããããã«ã€ããŠã¯åŸã§è©³ãã説æããŸãã
ãããã£ãŠãåã
ã®ãã£ãŒã«ãã®å€ãèšå®ããæ¹æ³ã§ã¯ãæ瀺çã«æå®ãããŠããªããã£ãŒã«ãã®å€ã«é¢ããŠçåãçããããã«å¿ããŠããã©ã«ãã§èšå®ãããŸãã ããã§ã¯ã2ã€ã®åŽé¢ãåºå¥ããå¿
èŠããããŸãããã£ãŒã«ãã«ãŽããååšããªãããšãä¿èšŒããããšãšãæ§é äœã®ä»¥åã®äœ¿çšã§æ®ã£ãå€ã§ãã ãŸããåæåãããå€æ°ã䜿çšããŠæåã®å€æ°ãåŠçã§ããå Žåãåæåé¢æ°ã®æ瀺çãã€çŽæ¥çãªåŒã³åºããè¡ããªã2çªç®ã®å€æ°ã¯ããã¶ã€ããŒïŒç§ãã¡ã«ã¯ãªãïŒã§ã解決ã§ããŸããã
åæåæåã«é¢ããŠã¯ãããã¯å¶åŸ¡ãããŠããã®ã§ååãšããŠæ£ãã蚱容ãããæ§é ã®å®£èšç¹ã§ã®çŽæ¥åæåããŸãã¯ãã®ãŒãåãä¿èšŒããã°ããŒãã«å€æ°ã®é åã«æ§é ãé
眮ãããã®ããããã§ããããã®æ¹æ³ã¯ååãšããŠåãå
¥ããããªããšèããŠããŸãããã¯å¶åŸ¡äžèœã§ãããããã©ã«ãå€ã«å€§ããªå¶éã課ããŠããããããããã¯0ã«çãããªããã°ãªããŸããããããã«ããŠããåå©çšã®åé¡ã¯ãã®ãããªææ³ã解決ããŸããã 瀟äŒåã¯è¯ãã¹ã¿ã€ã«ã®ãã¢ã³ã¹ãã¬ãŒã·ã§ã³ãšããŠã®ã¿èŠãããšãã§ããŸããã解決çãšããŠã§ã¯ãããŸããã
ã¹ãºã¡ã®é€ã«ä»ã®ãã¹ãŠãæ··ããåŸãã©ã®ãããªè§£æ±ºçãåãå
¥ãããããšæããŸããïŒ ãã®ãœãªã¥ãŒã·ã§ã³ã¯è€éã§ããã€ãŸããããã©ã«ãå€ãæäŸããããšãã§ãããã©ã¡ãŒã¿ãŒãéžæçã«å€æŽããããšãã§ããŸãããŠãŒã¶ãŒãšã©ãŒãæé€ããè¡äžã³ã¬ã¹ãããŒã«ãäžãããã®å
æ¬çãªãœãªã¥ãŒã·ã§ã³ã®å
žåã§ããããã«ãã¯ããã«æçšã§å¿
èŠãªããšãè¡ããŸãã ãããŠããã®éèŠãªç¹æ§ã®ãã1ã€ã¯ãçŽç²ãªCã§èšè¿°ãããŠããŸããã€ãŸããæŠééã¯æå·ãåããŸããã§ããã
çµå±ã®ãšãããæ¥æ¬ã®éŒã®è²§åŒ±ãªæ§è³ªãšãåãžã®åã®å€å
žçãªãã§ã³ã·ã³ã°ã®äžå¯èœæ§ã«ã€ããŠè©±ãããšãã§ããŸãããäžæã§æŠãã解決ããããšã¯éåžžã«çŸããã§ãããŸããéããåãåŒãæããè¡ã®æ»Žãæ¯ãèœãšããŠåäžã®åãã§è¿ãããšã§çµãããŸãéè·¯äžã®äžéãªçžæã æ¹è©å®¶ã«é¢ããŠã¯ãæè¿ããDon Juanã®ã€ã³ããã³ãã«ããæ¹è©ã¯å®¢èŠ³çã«å
¬å¹³ã«ãªãåŸãããããã§ãäžå¿«ãªæå³åããæã£ãŠããããšããçŽ æŽããããã¬ãŒãºãèªã¿ãŸããã
æ£çŽãªãšãããç§ã¯ãã®ç¬éã«æçš¿ãåæ¢ããèªè
ãå
šãæžæããšå€±æã«è¿œã蟌ã¿ãããšæã£ãŠããŸãããããã§ããããªããã¹ããè¡ããéåžžã«çŸãã説æããã解決çãåä»ã§äžäŸ¿ã§ããããšãå€æãããšããäºå®ããå¥ã®çš®é¡ã®å€±æãåŸãããšãã§ããŸãã
ããã«ãããŸãã
UARTConfigT UARTConfigInit(void) { UARTConfigT UARTConfig; UARTConfig.UARTSpeed=UARTSpeed9600; return UARTConfig; };
ãããã£ãŠãCã§ã¯ãé
åãé€ãä»»æã®åãè¿ãããšãã§ããé
åãå«ãæ§é äœãè¿ãããšãã§ããŸããããã«ã¯å°ãé©ããããŸãããKerniganãšRichieã«ã¯ãã®ãããªè§£æ±ºçã®çç±ããã£ãããã§ãã ããããæªãããšã¯èµ·ããåŸãŸããããã®ãããªè§£æ±ºçã¯çµ¶å¯Ÿã«ä¿¡é Œã§ããèšèªæšæºã«æºæ ããŠããŸãã ããããããã¯åæåæé ã«ãããŸããããéèŠãªãã©ã¡ãŒã¿ãŒã®ã¿ã¹ã¯ãã©ã®ããã«å®è¡ããŸããïŒ äžéå€æ°ã䜿çšãããªãã·ã§ã³ã¯ããŠãŒã¶ãŒã®ãšã©ãŒã®äŸå€ãä¿èšŒããã次ã®ã¹ã¿ã€ã«ã§ã«ã¹ã±ãŒã䜿çšãäœæããããã§ã¯ãªããããinãã§åŽäžãããŸãã
UARTConfigT UARTConfigSpeed(UARTSpeedT UARTSpeed,UARTConfigT UARTConfig) { UARTConfig.UARTSpeed=UARTSpeed; return UARTConfig; };
ãã©ã¡ãŒã¿ãŒãèšå®ããé åºã«æ³šæããŠã¿ãŸãããããã®ãããªãœãªã¥ãŒã·ã§ã³ã®å©ç¹ã¯æ¬¡ã®ãšããã§ãã
UARTConfigSpeed(UARTSpeed4800,UARTConfigParity(UARTParityEven,UARTConfigInit()))
ããã§ããã©ã¡ãŒã¿å€ã¯é¢æ°åã®çŽåŸã«ç¶ããŸããé¢æ°åã¯ã次ã®åŒã«æ¯ã¹ãŠèŠããããªã£ãŠããŸã
UARTConfigSpeed(UARTConfigParity(UARTConfigInit(),UARTParityEven),UARTSpeed4800));
å®éãTurboVisionã§ããã°ã©ãã³ã°ãã人ã¯ãæåŸã«ããããã®éãæ¬åŒ§ããããã®å¿ããããªãã¹ã¿ã€ã«ãèªèããŠããŸãããã1è¡ã®åŒãäœæããå¿
èŠã¯ãªãã代æ¿æ¡ã¯ãã§ã«æªå€¢ã®ããã«èŠããŸã
UARTConfigSpeed(UARTSpeed4800, UARTConfigParity(UARTParityEven, UARTConfigInit() ) )
ããããããã¯ãã§ã«å¥œã¿ã®åé¡ã§ãããå®çŸ©ã«ãã£ãŠè°è«ããããšã¯ã§ããŸãã-å³ã¯è°è«ãããŠããŸããã
ãã®ãªãã·ã§ã³ã®å©ç¹-å¶åŸ¡æ§é ã®åæåãã¹ãããããå¯èœæ§ãæé€ãããŠãŒã¶ãŒããã®æ§é ã«ç²ŸéããŠããªãããšãæé€ããŸããå¿åã§ãããããé¢æ°ãã©ã¡ãŒã¿ãŒã®å¯Ÿå¿ããã§ãã¯ããŸãïŒåæåã®ããïŒãæ£ããããŸããããæ§é ã䜿çšããã®ãå¿ããŠããŸããïŒééããç¯ãã®ã¯äººéã®æ§è³ªã§ããããšãèŠããŠããŸãïŒã ãã¹ãŠã®æäœããŸã IRPSã®å®éã®èšå®ã«ã€ãªãã£ãŠããªããšããäºå®ãèŠå€±ãããŸã æ©èœãå¿
èŠã§ã
int UARTConfigUse(UARTConfigT UARTConfig) { return DO_something();
æçµãã©ãŒã ã®äŸã¯æ¬¡ã®ããã«ãªããŸã
UARTConfigUse( UARTConfigSpeed(UARTSpeed4800, UARTConfigParity(UARTParityEven, UARTConfigInit() ) ) )
ã±ãŒãã®ãã§ãªãŒãšããŠãæåŸã®ééãã®å¯èœæ§ãå¶åŸ¡ã§ããããšã瀺ããŸã-æ®å¿µãªããããã®å¯èœæ§ã¯æšæºèšèªããŒã«ã«ã¯é©çšããããGCCãã¡ããªãŒã«ã®ã¿ååšããŸã-åæåãšèšå®ãæ©èœããæ»ãå€ãç¡èŠããããšã«é¢ããèŠå__attribute __ïŒïŒwarn_unused_resultïŒïŒãšèšè¿°ããå¿
èŠããããŸãã
ãã®æ¹æ³ãããªãã®ããã«ç¹ã«æ©èœãããã©ããã¯ãã³ã³ãã€ã©ã®éçºè
ã«äŸåããŸããããšãã°ãKEILã§æ©èœããŸããããIARã§ã¯æ©èœããŸããïŒIARãéæšå¥šã«ããããã§ã¯ãããŸããããã¯ããšããã€ãã®äžéã³ã³ãã€ã«æå€æ°ã«åºã¥ããŠããã®åé¡ã«å¯Ÿããä»ã®è§£æ±ºçããããŸãããæ®å¿µãªãããçµæãä¿èšŒããŸãããè¡šçŸåãšä¿¡é Œæ§ã®åé¡ããã¹ãŠè§£æ±ºããã®ã«ãäžãããããã¥ãŒãã³ã°æ¹æ³ãçæ³çã§ãããšå人çã«èããããšãã§ããªãã®ã¯ãªãã§ããïŒå®è¡ã³ã¹ãã®ç¹ã§å¹çãäœãããã ãã«ãç°¡åã«èšãã°ãæéã®çµéã«äŒŽãäŸå€çãªå€§é£ãã®ããã§ããéåå§åã®çµæãè¿ãé¢æ°ã«é¢é£ããŠããã®æçš¿ã«å¯Ÿãããšãã°ã©ãã§æèµ·ããã質åã«çããæãæ¥ãŸãããçµå±ã®ãšãããã³ã³ãã€ã©ãŒã®èŠåã衚瀺ããããããå
éšå€æ°ãžã®ãã€ã³ã¿ãŒãè¿ãããšãã§ããŸããïŒèŠåããªãã«ãªã£ãŠããå Žåã¯ãããããããšãã§ããŸãïŒãã³ã³ãã€ã©ã¯ãã®åé¡ãã©ã®ããã«è§£æ±ºããŸããïŒç§ã¯ãããã©ãããã¹ããããããªããç§ã¯CèšèªæšæºãèªãŸãªãã£ãïŒãããããã ãããããèªããããšãæ¥ããŠããªãïŒãç§ã¯å®è£
ã®è©³çŽ°ãããã«èšè¿°ãããŠãããã©ããã¯åãããªã次ã®ã¡ã«ããºã ããããŸããéããªããã£ãåãè¿ãé¢æ°ãåŒã³åºãé¢æ°ïŒã¡ã€ã³ãå«ãïŒãå
¥åãããšããã®åã®å€æ°ãæ ŒçŽããã®ã«ååãªã¹ããŒã¹ãã¹ã¿ãã¯ã«å²ãåœãŠãããŸãã次ã«ãåŒã³åºãããåæåé¢æ°ã¯ãæ»ãã¢ãã¬ã¹ã®äžã§ã¹ã¿ãã¯ã«å
éšå€æ°ã®ãããããšã®ã³ããŒãå®è¡ããäœæ¥ã®å®äºåŸãè¿ãããçµæã®å€ã¯ã¹ã¿ãã¯ã®æäžéšã«ãããŸãããã©ã¡ãŒã¿å€ãå€æŽããããã®é¢æ°ãåŒã³åºãåã«ããã®å€ã¯ã¹ã¿ãã¯ã«ã³ããŒãããåŒæ°ãšããŠæž¡ãããŸããçµæã¯ãããåäœã§ã¹ã¿ãã¯ããå²ãåœãŠãããã¡ã¢ãªé åã«å床ã³ããŒããããããããã©ã¡ãŒã¿å€ãå€æŽãã次ã®æ©èœã®ããã«ã¢ã¯ã»ã¹ã§ããŸããã€ãŸããç¹å®ã®ããŒã¿ïŒããã³éåžžã«å€§ããªãµã€ãºã«ãªãå¯èœæ§ãããïŒã¯ãå²ãåœãŠãããã¡ã¢ãªé åïŒãšããã§ãã¹ã¿ãã¯äžïŒãšã¹ã¿ãã¯ã®æäžéšãšã®éã§çµ¶ãããã©ãã°ãããŸãããã¡ãããããã¯é«éãªäœæ¥ã«ã¯å¯äžããŸãããã©ãããã°é¢æ°ã®é床ãäžããããšãã§ããŸãã-æ»ãå€ã®åãå€æŽããå¹ççã«ã³ããŒããããã€ã³ã¿ãŒãè¿ããŸãããããããã®åŸãåæåé¢æ°ã®çµæãšããŠããã€ã³ã¿ãŒã¯äœããæã瀺ãå¿
èŠããããäžé©åãªååž°ã«é¥ãå±éºããããŸãã useé¢æ°ã§ã®äžæçãªãªããžã§ã¯ãã®äœæãšãã®åŸã®åé€ã¯çŽ æŽãããããšã§ãããå®æçãªçç±ã§åçãªããžã§ã¯ãã䜿çšããããšã¯ã§ããŸããïŒéçã®ã¿ãããŒãã³ã¢ã®ã¿ïŒãå¥åŠãªããšã«ãå
éšå€æ°ãžã®ãã€ã³ã¿ãŒãè¿ãããšã¯ããã¹ãŠã®æ§æé¢æ°ãåããµã€ãºã®ãã©ã¡ãŒã¿ãŒã§æ©èœããå Žåã¯æ©èœããŸããïŒã¹ã¿ãã¯ã®äžéšã®æ
å ±ã¯æãªãããŸããïŒãããã§ããµãŒãã«ãã³ã¹ã®å°è±¡ãæ®ããŸãïŒã€ãŸãããµãŒãã«ã§ã¯ãªãããµãŒãã«ïŒ ãããã¯éåžžã«å±éºãªããªãã¯ã§ãïŒãäžæãèš±å¯ãããå Žåãç¹ã«ã¹ãªã«ããã®ãããªæ±ºå®ã§ããªããåŸ
ã£ãŠããŸããããŒã«ã«æ§é ã䜿çšããããšã¯å¯èœã§ããããã®ååã衚瀺ããããŠãŒã¶ãŒã®å£ããããè©ã«ãããæ°ã«ãªããŸãããããã£ãŠãã©ã®ããã«éåœã«æµæããŠããã°ããŒãã«ãªã¬ããã³ã¹æ§é ãšãããžã®ãã€ã³ã¿ãŒã¯ãå¯äžã®èš±å®¹ã§ããä¿¡é Œã§ãããªãã·ã§ã³ã§ãããšæãããŸãããã€ã³ã¿ãå€æŽãããªãå Žåããªãé¢æ°ããé¢æ°ã«æž¡ãã®ããå°ããŸããããããããã¯åæåé¢æ°ã®åŒã³åºããä¿èšŒããå¯äžã®æ¹æ³ã§ããããã€ã³ã¿ãŒã§ã¯ãªããæ§é ãšã¯é¢ä¿ã®ãªãäœããããšãã°ä»»æã®æŽæ°ãæž¡ãããšãã§ããŸããããã®æ¹æ³ã§ã¯ããŠãŒã¶ãŒã«åæåé¢æ°ãåŒã³åºãããåã«å¯ŸããŠãçµæã®ã¿ã€ããå€æŽãããªãããã«ãäœæ¥ã®èšç»ã«äœ¿çšããŸããäžèšã®èæ
®äºé
ãèæ
®ããŠã次ã®ãœãªã¥ãŒã·ã§ã³å€æŽãååŸããŸãã typedef UARTConfigT *UARTConfigPT; UARTConfigPT UARTConfigInit(void) { static UARTConfigT UARTConfig; UARTConfig.UARTSpeed=UARTSpeed9600; return &UARTConfig; }; UARTConfigPT UARTConfigSpeed(UARTSpeedT UARTSpeed,UARTConfigPT UARTConfigP) { UARTConfigP->UARTSpeed=UARTSpeed; return UARTConfigP; }; int UARTConfigUse(UARTConfigPT UARTConfigP) { return DO_something();
ãã ããã¢ããªã±ãŒã·ã§ã³ã¯å€æŽãããŸãããããã©ãŒãã³ã¹ã¯å€§å¹
ã«åäžããŸãããã®ããã®æéã¯å°éã®ã¡ã¢ãªã§ãããå¶åŸ¡æ§é çšã«æ°žä¹
ã«äºçŽãããŠãããããŒããŠã§ã¢ã®åæååŸã¯äžèŠã§ããåæã«ãæ©åšã®åäœã¢ãŒããæ¬åœã«è¿
éã«å€æŽããå¿
èŠãããå Žåããã®ãããªãœãªã¥ãŒã·ã§ã³ãé©çšããå¯èœæ§ãè°è«ã®å¯Ÿè±¡ã«ãªããŸãããäžè¬çãªæšæºïŒãŠãããŒãµã«ã§ããããã£ãŠéå¹ççãªïŒã©ã€ãã©ãªã䜿çšããå¯èœæ§ã¯å€§ããªåé¡ã§ããæããšããã§ãé«éã§ã¡ã¢ãªããªãŒã®çæ³çãªãœãªã¥ãŒã·ã§ã³ã¯ãåæåé¢æ°ã«ãã£ãŠè¿ãããæ§é äœãžã®ãã€ã³ã¿ãååŸãããããåŒã³åºãã§ãã§ãŒã³ã«æ²¿ã£ãŠæž¡ãããšã§ãããã³ã³ãã€ã©ã¯æ®é
·ã«ç§ã®ç©ºæ³ã®ç¿Œãå£ããæŒç®åïŒãLåŒã«ã®ã¿é©çšå¯èœã§ããããšã宣èšããŸã äžè¬ã«ãç§ã¯ãããäœãæå³ããã®ãç解ããŠããŸããããªã圌ãããã®ããã«ç§ãšäžç·ã«ããã®ãç解ããŠããŸãããæ®é
·ããã®ãããªåçŽãªãããã¯ã«é¢ããæçš¿ã«ã¯å°ãªãããããšãå€æããŸããããéžè±ã¯å€ãã®å Žæãå ããŸãããããã¯ææ
®æ·±ãèªè
ã«åã³ãäžããæãå°æ¬ãããäžè¬äººã楜ããŸããã³ã¡ã³ããè°è«ã®æšé²åã«ãªããšæããŸãã