äžäžéã®æ
ã¯ãæåã®ã¹ãããããå§ãŸããŸãã
åæ
åã®æçš¿ã®èª¿æ»çµæã«ãããšãç§ã®èšäºãèªãã§ãã人ã®å€§éšåãçµã¿èŸŒã¿ã·ã¹ãã ã®ããã°ã©ãã³ã°ã®ã³ãŒã¹ãåè¬ãããããšãæããã«ãªã£ãã®ã§ã次ã®ããã¹ããå
¥éè¬çŸ©ãšèããããšãææ¡ããŸãã å¥ã®ãããã»ã©å€§ããã¯ãªãããããªãã®éšåã®èªè
ãèªåã§åæ§ã®ã³ãŒã¹ãèªãæ©äŒã宣èšããã®ã§ãåå ããŠãã ãããHabréã§ããªãã®è¬çŸ©ãèŠãããšããããŸããã
MKã®ããŒããŠã§ã¢åæåã¢ãžã¥ãŒã«ãæ§ç¯ããæ¹æ³ã«é¢ããæè¿ã®ïŒç§ããããæžãå§ãããšãã圌ã¯æ¬åœã«æè¿ã§ããïŒæçš¿ïŒã¡ãªã¿ã«ããã®ãããã¯ã«èå³ããã人ã¯ãã³ã¡ã³ããå¿
ã確èªããŠãã ãããæ®å¿µãªãããå®å
šã«çŽ æŽããã解決çã¯ãããŸããããã®åçš¿ã®äœçœã«åãŸãïŒç§ã¯STMãã€ã¯ãã³ã³ãããŒã©ã®UARTã®æ©èœã«æ¬¡ã®æçš¿ãæ§ããããšãçŽæããŸããã ããã«ããããããããã®çŽæãæŸæ£ããããšãªããç¹å®ã®èª¿æŽãè¡ããŸã-é©åãªãœãããŠã§ã¢ããã±ãŒãžéçºã®ãããã¯ã«é¢ããäžé£ã®æçš¿ãäœæããïŒããšãã°ãMODBUSãããã³ã«ã®å®è£
ãæ¡çšãããŸãïŒããã®ãã¬ãŒã ã¯ãŒã¯å
ã«äžèšã®ãããã¯ã«å°å¿µããéšåããããŸãã
ç§ãã¡ã¯æ£ããéçºãç 究ããã®ã§ãåäŸãå¿
èŠã«ãªããŸããä»ã®äººã®ééãã瀺ãããšã»ã©ç°¡åã§ã¯ãªããããåè¿°ã®ãããã³ã«ãã€ãŸãFREEMODBUSã®ããç¥ãããå®è£
ãåºçºç¹ãšããŠæ¡çšãããŸãã æ©èœã®åé¡ãæ€èšããã«ããã®ãœãããŠã§ã¢è£œåã®ã¹ã¿ã€ã«ã¯ç§ã«ã¯çæ³çã§ã¯ãªãããã§ãããã©ã®ããã«æ¹åã§ãããã瀺ããŠã¿ãŸãã
äºå®ãããŠããäžé£ã®æçš¿ã®ç®çã¯ãçµã¿èŸŒã¿ããã€ã¹çšã®ãœãããŠã§ã¢ã·ã¹ãã ã®èšèšæ¹æ³ãèæ
®ãã¹ãèæ
®äºé
ãé©çšãã¹ãåºæ¬çãªææ³ãçµæã瀺ãããšã§ãã ãã¬ãŒã³ããŒã·ã§ã³ã§ã¯ããã®ããã¹ãã®èªè
ãçµã¿èŸŒã¿ãœãããŠã§ã¢éçºã®åéã§åãããã«å¿
èŠãªç¹å®ã®ç¥èãæã£ãŠãããšããæé»ã«æ瀺ãããŠããäºå®ããé²ã¿ãŸããç§ã®ä»äºã¯ã圌ããã®ç¥èãäœç³»åããŠãå¯èœãªéãæé«ã®å質ã®çµæãåŸãããšã§ãã
ãããã£ãŠããã¬ãŒã³ããŒã·ã§ã³ã¯å¿
ãããååã«å³å¯ã§ãããšã¯éãããå€ãã®å Žåãåé¡ãæå®ãããã®éèŠæ§ã蚌æãããåé¡ã®å¯èœãªè§£æ±ºçã䞻匵ããŠè¡šç€ºããã ãã§ãã ããã«ãããããããåŸãããçµæã¯ç¢ºãã«çå®ã§ãããããã«ãæ¥åžžã®å®è·µã§éåžžã«é©çšå¯èœã§ãã çè«çãªèå¯èªäœã¯ããã®çè«ã®å
·äœçãªäœ¿çšäŸã»ã©èå³æ·±ããã®ã§ã¯ãªãïŒããã«ãèªã¿æžããé£ããïŒã®ã§ã芪æãªãèªè
ã¯ãåè¿°ã®ã©ã€ãã©ãªã«åºã¥ããŠã©ã€ãã©ãªãèšèšããããšã«åŸäºããŸãã
ã©ã€ãã©ãªãã€ãŸãç§ãã¡ãä»åŸäœ¿çšããããšãæå³ããŠããªã補åãäœæããå Žåãã©ã®æ©èœãèæ
®ããå¿
èŠããããŸããã ãŸããååã®ç®ãèŠãã®ãæ¥ãããããªãããã«ãç¹å¥ãªæ³šæãæã£ãŠæžãããã¹ãã§ãã ãåäŸåãã®æ¬ãæžãæ¹æ³ã¯ïŒ 倧人ã ãã§ãªããããã ããåªããŠããŸããã ãã¡ãããããã£ã¬ã¯ããã£ã¬ã¯ããããã¯ã·ã§ã³ãã¹ã¿ã€ã«ã¯æè¿ãç¹å®ã®ãµãŒã¯ã«ã§äººæ°ãåããŠããŸãããããªããšç§ã¯ãäžæçãªå©çã®ããã«ä¿¡é Œæ§ã®ããè¹ãé¢ãããµã€ã¬ã³ã®åŒã³åºãã«å±ããããšã¯ãããŸããã ããã«ãã³ãŒãã®æãéèŠãªèªè
ïŒããããããã¯ç€Ÿé·ã§ã¯ãããŸããïŒãã€ãŸãèªåèªèº«ã«ã€ããŠãå¿ããŠã¯ãªããŸããã ããªãããã§äœ¿çšããã®ã ãã...ãã®ãããªè¡šçŸã¯ãç§ãã¡ãæããããã¯ããã«é »ç¹ã«çºé³ãããŸããæåããã©ã€ãã©ãªïŒããã³ä»ã®æ¹æ³ïŒãååŸããå€ãã®ãŠãŒã¶ãŒããéèŠãããå Žåããããä¿®æ£ããå¿
èŠãããå Žåãããããã§ãããããŠç§ã¯ãã·ã¢èªã®è±å¯ãªèªåœãç¹ã«éèŠç¯çãªéšåãé©çšããã«ãããããããšæããŸãã ãããããããã¯äžè¬çãªèæ
®äºé
ã§ããããã¹ãŠã®éçºã«åœãŠã¯ãŸãå¿
èŠããããŸãããããåžžã«è¡ãããããã§ã¯ãªãã®ã¯æ®å¿µã§ãã ãããã£ãŠãå®éã®ã³ãŒãã®èšè¿°ãé²ããåã«ãããã«äŒŽãéèŠãªç¶æ³ãå€æããå¿
èŠããããŸãã
å€æ°ïŒææªã®å Žåã¯ã¢ããïŒã䜿çšããéžæããèšèªã§ïŒäžè¬çã«ã¯ãéžæããªãã£ããããPascalãã¡ããªãŒã®èšèªã§ã¯ãªããã©ãã«è¡ãã°ãããããããªãïŒ Cã¯çµã¿èŸŒã¿ã·ã¹ãã ã®ããã°ã©ãã³ã°ã«ãããäž»èŠãªèšèªã§ããããæµãåããªãå Žåã¯ãããããå°ããŠãã ãããïŒå€æ°ã¯é¡ååãããŠããã®ã§ããŸãã¯åã«ã€ããŠè©±ããŸãããã
ã«ãã³å
ã®çºèšã«é¢ããå¿
èŠãªèª¬æã¯ãç§ã¯ãŸã£ããCèšèªã®å
åºãªæµã§ã¯ãªããæµã§ã¯ãªããšããããšã§ãããããã°ã©ããšããŠã®ç§ã®éçºã¯PascalèšèªïŒäžè¬çã«ãæ£çŽã«èšããšããã·ã³ã®ANPã®èšèªããã€ãªã-ããããããã®çŽ æŽãããæ什ã¯ãå°å
¥ããšãçµäºã-ããããããã·ã¢èªã®æ什ã¯ä»¥åã®ããã«è¯ãã¢ã€ãã¢ã§ã¯ãªãããšã«æ°ã¥ããŸããããããŠFortranã§ã¯ããããã®èšèªã«ã€ããŠããŸãã«ãå€ãã®èªè
ãããªãããšãæããŠããŸã圌ãã¯ç¥ã£ãŠããããç§ã¯çŸæç¹ã§ã¯ããããæšèŠããã€ããã¯ãªããããã¹ã«ã«ã® ç§ã¯ãŸã£ãããããè¡ãããšã¯ã§ããŸããïŒããã®ã·ãŒãªã³ã°çŸè±¡ãèµ·ãããCãæäŸããããŒãã®é·ããå人çã«ç¢ºä¿¡ãããšããããã¯ç§ã«ãšã£ãŠäžå¿«ã§ããïŒãããŠããã¯ãã¹ã«ã«ãããªããæ¯ããŠãããµããŒããããã¯ããã«é·ãã§ããµããŒããªãã§ç¬ç«ããŠç§»åããŸãïŒã ããããããã§ããCã第äžèšèªãšããŠãããªãã¯ããªãã®åäŸã®ããã«ãã®ãããªæ©è¡æå°ãããããšæããŸããïŒ
åæãšå®çŸ©
ããã§ãç§ãã¡ã®çŸãã€ãŸãã¿ã€ãã«æ»ã£ãŠãããªãã¯é©ããããããããŸããããæ¬åœã«è©±ãããšããããŸãã ãŸãããã¡ã€ã«ãéããŸã...ããã«ãèè
ãã©ã€ãã©ãªã§ç©æ¥µçã«äœ¿çšããããšãèšç»ããŠãããŠãŒã¶ãŒã¿ã€ãã®ã¢ããŠã³ã¹ã«åºäŒããŸãããããã«äžéšã®å·çãæ°ã«å
¥ããªããªããŸãã ãã®å ŽåãããŒã«åã®å°å
¥ã«ã€ããŠèª¬æããŠããŸãã ããã¯ããã®èšèã®åãå
¥ããããŠããæå³ã®èª€ãã§ã¯ãããŸããããç§ã®ããã°ã©ãã³ã°ãã©ãã€ã ã®ãã¬ãŒã ã¯ãŒã¯ã®å€§ããªèª€ãã§ãã ãã«ãªäººã¯ã³ã³ãã€ã©ãæžããšæãã®ã§ãèšèªã䜿çšãããšããç¹ã§ãèªåãããã¯ããã«é«åºŠã ãšèããã¹ãã§ã¯ãããŸããã è«çå®æ°ãå®çŸ©ããå€å
žçãªå®è£
ãšcharåã®äœ¿çšããã®ãã¡ã€ã«ã«èšèŒãããŠããŸããåæåã«ããå®è£
ãšã¯å¯Ÿç
§çã§ãã
typedef enum {False=0,True=1} Boolean; Boolean IsOk=True; ...; if (IsOk==False) ...;
ç§ãã¡ã¯ææ¡ãããå®è£
ããã詳现ã«æ€èšããŠããããæäŸãããã¹ãŠã®å©ç¹ãç解ããæ¬ ç¹ããªãããšã確èªããŸãããã®åŸãå®çŸ©ã«åºã¥ããŠæåã®å®è£
ãäžåºŠå¿ããŠããŸãããã®é©çšããŸãšããªç€ŸäŒã®èš±å®¹ã§ããªãçŸè±¡ã«åž°ããŸãã ãããŒãã£ãŒã«ã¯äžåãªéå¯ãããã誰ããæ¯ãåããŠããªããéé£ããããŒã«ã®é
ã«ãã誰ããã«ã¯ãã«ãèœãšãããšãããããŸããã
ãã®ããããŸããåæåãäœæãããç®ç-å²ãåœãŠã®æ··åšã蚱容ãããªãããããããå®è¡ããããšãããšãã³ã³ãã€ã©ã®èŠåã衚瀺ãããŸãã ãã¡ãããå€æ°å
šäœãè«çå€ã«å²ãåœãŠãããšã«ã¯äœã®åé¡ããªããšèª°ããèšãã§ãããããããã¯åçã§ãããäžè¬ã«èŠåã¯ãšã©ãŒãšã¯ç°ãªããŸããããããç¡èŠã§ããŸããç§ãã¡ã¯äººéã§ã¯ãããŸãã-ä»æ¥ã圌ã¯åæåãæ··åããææ¥ãã€ã³ã¿ãäžããæåŸæ¥ã¯ãã€ã³ã¿ãããŒã«ã«å€æ°ã«æ»ããšããèŠåãç¡èŠããå°æããŠã¢ã€ãã«ã³ãŒããèŠãŠããæšæ¥ã¯ãã¹ãŠããŸããããŸããããããã Eã³ã³ãã€ã©ã°ãªããããšINETAã«è¡ãã«ã¯neglyuchnyã³ã³ãã€ã©ãæ±ããããã«ã¯æ»ããŸãããã现éšã«ã³ãŒããç¡èŠããç¬ç¹ã®ã¹ã¿ã€ã«ã§ããããæžãããŠç解ããå¿
èŠããããŸãã æ inessãšé倱ãé€ããŠåæåãæ··åããèšãèš³ã¯ãªãããããã¹ãŠããã®é åºã§çºçãããªã¹ããããæåã®ãã®ã«ãã¹ãŠæ¬æãæã£ãŠãããã®2ã€ã®æ§è³ªãæã£ãŠããŸãïŒçµå±ã圌女ã¯åã«çãŸããã®ã§ãäžè¬çã«ã¯é²æ©ãšã³ãžã³ã§ãïŒã³ãŒããåè¡ããããããã°ã©ããŒã®æé«ã®ç¹æ§ã«åž°ããããšãã§ããŸãã
ãšããã§ãç§ã¯ã³ãŒããŒã«ç°åžžãªã»ã©ç±ãããããã£ã©ã¯ã¿ãŒãããããšãããã«èŠåããããšæããŸãããç§ã®æçš¿ã§ã¯ãã®æ¬ ç¹ãã§ããã ãé ããŠããŸãããè¡ãŸã¿ãã®ããã¢ãšåŒã¶ããšã¯ããªãå¯èœã§ããç§ã¯ãã£ã©ã¯ã¿ãŒããæªããªã家ã«ããã€ãã®å€§ããªå
äžãæã£ãŠããŸãæåãªæ ç»ã®ã¹ãã£ãŒãã³ã»ã»ã¬ãŒã«ã¯ãå®éã®IPã¢ãã¬ã¹ãèšç®ããããã³ãŒããããããæœåºãããããæè¡ã«ãããŠãç§ã¯åçã§ã¯ãããŸããã
次ã®ãã©ã¹ã¯ãã³ã³ãã€ã©ãå®è£
ã«å¿
èŠãªããªããã£ãåãéžæããããšã§ããå€ãæ ŒçŽããã®ã«8ãããã§ååãªå Žåãåæåã¯å¿
ãããæŽæ°ãšããŠæ ŒçŽãããŸããã ç§ã«ãšã£ãŠãIARã¯ãè«çåïŒåæåïŒã®å€æ°ã1ãã€ãã«é
眮ããããšã§ãããå®çŸããŸããã äžè¬çã«ãè«çåãçŽæ¥æ±ºå®ããå Žåã¯ãcharåã§ã¯ãªãat_least8_tãŸãã¯fast8_tã䜿çšããå¿
èŠããããŸããæåŸã®2ã€ã¯ãã€ããšäžèŽããå¿
èŠã¯ãããŸãããããã€ããšäžèŽããå¿
èŠã¯ãããŸããã ããã«ãããšãã°ãã¡ã¢ãªå
ã®ã¢ãã¬ã¹æå®å¯èœãªããããªã©ãè«çå€æ°ãããé©åãªå Žæã«é
眮ã§ããã³ã³ãã€ã©å®è£
ãé€å€ããŸãããããã¯ãèªäœã®å®çŸ©ãããã¡ã¢ãªãšé床ã®äž¡æ¹ã§ééããªãå¹ççã§ãã
æ瀺çãªæ¯èŒ
æ¯èŒæŒç®åãæžãããŠããè¡ã«æ³šæãæããŸãããããçå®ãšã¯äœãïŒããšãã確ç«ãããæ
£è¡ãšã¯å¯Ÿç
§çã«ãæ確ã«æžãããæ¯èŒã§ãªãã·ã§ã³ãæåºãšããŠäž»åŒµããŸãã ãã®ãªãã·ã§ã³ã¯å¿
èŠãªæ¡ä»¶ãæ確ã«ç€ºããŠãããæšæž¬ã®äœå°ããªããããããŒãã§ã¯ãããŸãããã ãŸããçŸä»£ã®ã³ã³ãã€ã©ã®99ïŒ
ãèæ
®ãããšïŒããã¹ãŠããèšè¿°ããŸãããäœãèµ·ãããããããŸããïŒããŒããšã®æ¯èŒãèŠããšããã®å®è£
ã®ã³ãŒãã¯çæãããŸããïŒãŸãã¯ããŸã£ããåãã«ãªããŸãïŒ ifïŒïŒãšã©ãŒïŒæ¡ä»¶ã§ã®æ¯èŒã®æ¬ åŠã«ã€ããŠã¯ãå¹çãäœäžããããšã¯ãããŸãããçµè«ãšããŠãNoErrã®ãããªååã®å€æ°ãé¿ããããšããã1ã€ã®èæ
®äºé
ã§ãïŒå€æ°ã®ååã¯ãæ ŒçŽãããŠããå€ã®æå³ãšäžèŽããå¿
èŠããããŸãããããªãã¯çããæã£ãŠããªããããã§ãªããã°ç§ãã¡ã¯å€§ããªåé¡ãæ±ããŠããŸãïŒ ãªã©ã®å¯èœèª€è§£ãšæ··ä¹±åŒæº¶è§£
if (NoErr==False)
ãåã³ä»»æã®æ段ã«ãã£ãŠåé¿ãããã¹ãã§ããããã®æå³ã§ISOKå€æ°ã奜ãŸããã§ãã
ã¹ããŒãã¡ã³ã圢åŒã§æ¡ä»¶ãèšè¿°ããããšãæãŸããã§ããã€ãŸãã
(IsOk == False)
(IsOk |= True)
ãããæãŸããã®ã§ããã
~(IsOk == True)
ãªãã·ã§ã³ã¯æãæµ®ãã¶ããšãããããŸããã ïŒãããŒãªã³ã°ãããŠãããããããŸããããç§ã«ã¯åŸ®åŠãããŸãããåè«ãèšãã®ã¯äžé©åã§ãïŒããªã¢ã³ã
State|= !!ErrNumber << 5
ãéåžžã®è¡šçŸ
if (ErrNumber! = 0) State = State | (1 << StateErrorBitNumber)
if (ErrNumber! = 0) State = State | (1 << StateErrorBitNumber)
ã ãããçå®ã§ãããç§ã®ã³ã³ãã€ã©ã®ã³ãŒããçããéããåäœããªãã£ããšããŠãããã®å¹çã¯ãåæ§ã®èšèªæ§é ããã®1åéã®å°æã®äŸ¡å€ãããããŸããã§ããã
ãããããçµã¿èŸŒã¿ãœãããŠã§ã¢ã®åéã§åããŠãã人ã¯ãè°è«å
šäœã®äºéå転ã®çµæãç解ããå¿
èŠããããŸãããããã«ããããããããªãªã³ããã¯ãã€ã³ã¿ãã¥ãŒã®ããã«ãã®ãããªæ§é ãä¿åããŸããããå®éã®äœæ¥ã§ã¯ããããåé¿ããŸãã ç°¡åãªçç±-èªè
ãç¥çããºã«ã解ãèœåãè©äŸ¡ããããã®ã³ãŒããæžããŠããããã§ã¯ãããŸããïŒããã¯åœæ¥çã«ãããŸãããŸããç§ã®å察æèŠãåŒãã§ãã ããããããŠãããã°ã©ã ã³ãŒãã§ã¯ãç§ã¯å人çã«ãã®ãããªè¡åãäžé©åã§ãããšèããŠããŸãïŒèª°ããç§ã®è¡åã«åããŠèªåèªèº«ãæã£ãŠããã®ã§ãééã£ãæèŠãããå Žåã¯ãã³ã¡ã³ããŸãã¯å¿çã§åççã«è¿°ã¹ãããšãã§ããŸã ããã¯ããã§ãããããªãã¡ãIïŒã¯ãééã£ãŠããå¯èœæ§ããããŸãã
ããŠããã1ã€çºèš-Cèšèªæšæºã§ã¯ããã®ãã©ã°ã¡ã³ãã®ïŒäžèšã®ã³ãŒãã®äœæè
ã®èŠ³ç¹ããïŒæ£ããåäœã®ä¿èšŒã¯ãªãããšãããã§æããŠãããŸãã ãããæ¬åœãã©ããã¯ããããŸãããããšã«ãã泚æããæ¹ãè¯ãã§ãã
ããããã£ãŒã«ã
ãšããã§ãããããã£ãŒã«ãã«é¢ããŠã ç§ã®å察æèŠãèªãã 人ã¯ç¥ã£ãŠããŸãããããŠæ®ãã®ããã«ããäžåºŠç¹°ãè¿ããŸã-ããªããã³ã³ãã€ã©ã§åèªã®ãã€ãé åºãå¶åŸ¡ã§ãããªããããããã£ãŒã«ãã¯ã¬ãžã¹ã¿ãšéåžžã®äž¡æ¹ã§åã
ã®ããããšããããã£ãŒã«ããæ±ãæ¬åœã«æ¥œããæ¹æ³ã§ã
if (ErrNumber! = 0) State.ErrorBit = 1
åã®æ®µèœã§äžãããããã®ãããããã«æ確ãªã®ã§ããã®æ©äŒã䜿çšããããšã匷ããå§ãããŸãã åäŸã®é ã«å®æäžã®èæ
®äºé
ãå¿ççãã©ãŠããåãåã£ãå Žåã䞡芪ãæžãããã¡ã€ã«ãäºæããéããŠãããã«ãã®éããããã¯ããã¯ãèŠããšããããããã£ãŒã«ãã䜿çšããããšãèš±å¯ãããããããã¹ã¯ã奜ãå Žåãç§ã¯åŒ·ãæšå¥šããŸã-æäœãé ããããã¯ãã¯ãã®èåŸã«ãããåå¥ã«ã§ã¯ãªããåŸå±å®æ°ãçžäºã«å®çŸ©ããŸãã
ç§ã®åæã®æçš¿ã§ã¯ããã®åé¡ãèæ
®ããŸãããã³ã¡ã³ãã«ã¯ã
#define StateBitNumber (12)
#define StateBitMask (1 << StateBitNumber)
ãããªçµåå®æ°ã®åŸæ¥ã®å®çŸ©ãšãšãã«èš±å¯ãããã¯ããããããŸãã
#define StateBitNumber (12)
#define StateBitMask (1 << StateBitNumber)
#define StateBitNumber (12)
#define StateBitMask (1 << StateBitNumber)
ã¯ã
#define StateBitMask (0x00004000)
#define StateBitNumber (BITNUMBER(StateBitMask))
ã¹ã¿ã€ã«ã§å察ã䜿çšããŸã
#define StateBitMask (0x00004000)
#define StateBitNumber (BITNUMBER(StateBitMask))
#define StateBitMask (0x00004000)
#define StateBitNumber (BITNUMBER(StateBitMask))
ã æåŸã®ãã¯ãã®ç¬èªã®å®è£
ãèãåºããããŸãã¯èŠãããšãã§ããŸãã ãããŠãç¥ã®ããã«ããããã®å®æ°ã®å°é¢æ°ã®ã¿ã䜿çšããŠãã ããã
*(uint *) 0x20008000 = *(uint*) 0x20008000 & 0xffff0fff | 0x00004000
*(uint *) 0x20008000 = *(uint*) 0x20008000 & 0xffff0fff | 0x00004000
ãããã«ãåãå®æ°ãæã€é¡äŒŒã®è¡šçŸãããã¹ãã«äœåºŠããããŸããã倧ããªå
äžã«ã€ããŠã¯ãã§ã«èŠããŠããŸãã
ã¬ãžã¹ã¿å
ã®ããããã£ãŒã«ãã¯æ±ºããŠè«çåã§ã¯ãããŸãããã1ãããã®é·ãã§ã¯ãããæŽæ°ã¯ãã®åãæŽæ°ãšæ±ºããŠç°ã«ããŸããããããã»ã¹ç¶æ
ã¯ãŒãïŒå€æ°å
ïŒã§ã¯ãŸãããã®ãããªæ§é -ãããé·1ã®è«çã¿ã€ããèš±å¯ããŸãããŸããelseãã©ã³ãã«ã€ããŠãå¿ããªãã§ãã ãããããã¯ããã®äŸã§ã¯ããªãæèçã«èŠéããŸããããã®ãããæ¹å€ãããæŒç®åã«å®å
šã«å¯Ÿå¿ãã察å¿ããã³ã³ããã¹ãã§æ£ããå ŽåããããŸãã åæã«ã
ProcessOK = (Boolean) (((ReadOk==True) || (WriteOK==True)) && (ErrNum ==0))
ãããªãã®ãæžãæš©å©ãå¶éããŸããããªãã¬ãŒã¿ãŒã¯ãäœãèµ·ãã£ãŠããã®ããæ確ã«ç解ããèµ·ããããçµæã«å¯ŸããŠè²¬ä»»ãè² ã決æãè¡šæããŸããã
å€æ°å
å¥ã®éèŠã§ã¯ãªãããç¹å®ã®ãµãŒã¯ã«ã§ã¯ãç©è°ãéžãç¶æ³ãããªãã¡å€æ°ã®ååã¯ãååšããéã圱é¿ãåããŸãã ç§ã®äŸãããããããã«ãç§ã¯ãã®ç¹ã«é¢ããŠç¹å®ã®å¥œã¿ãæã£ãŠããŸãããç§ã¯ãããã決ããŠåŒ·èŠããŸãããäžç·ä»ãã®ã¹ã¿ã€ã«ã¯æªããããŸããïŒãããããç§ã¯ããã䜿çšããªãããããšã«ããããã¯ããããæªãã§ãïŒããã³ã¬ãªãŒã®è¡šèšã¯éåžžã«äžè¬çã§ãåºãããã®å©ç¹ãããããããªããžã§ã¯ããšå±æ§ã®é åºã¯ã©ã®ãããªæ¹æ³ã§ãå¯èœã§ãããã®ãããå¯äžã®æšå¥šäºé
ã¯ãåãåœåã¹ã¿ã€ã«ãå³å®ããIsOK6ã®ãããªååãé¿ããããšã§ãã
å人çãŸãã¯çµç¹å
ã§ãå€æ°ã®ã³ãŒãã£ã³ã°ããã³åœåã®åœ¢åŒãéå
¬åŒãŸãã¯æ£åŒã«ç¢ºç«ãããŠããå Žåã¯ãæšæºã§ã¯ãªããŠãæšæºãããåªããŠãããããåªããŠããŸãã ho声ãããŒãœãã©ã€ãºã«è³ããŸã§ãå€æ°ã®çã«æ£ããåœåã®ãããã¯ã«ã€ããŠç¡éã«è°è«ããããšãã§ããŸãã®ã§ãç§ã¯ããªããããããããšïŒç¹å®ã®ã«ãŒã«ã«åŸããŸãïŒãããäžåºŠèšããŸãããããŠç§ã¯ãã¯ãããã¹ãŠã®æ¬åœã®ä¿¡ããåµå²ãã®æ¯æè
ã§ãEMUããã䟿å©ãªæåŸããããšããæåãªåŒçšã®ç§ã®æ¹èšã匷調ãããŠããŸããããã®ãããªä¿®æ£ããªãªããŒããå
æŠããæããã©ããã¯å®å
šã«ã¯ããããŸããã
å®éãåæåã®é·æãšçæã¯ãç§ã®å¥åŠãªæ³ååã®éé¿ã«ç¶ããŠèª°ããå¿ããŠããªãå Žåãèæ
®ããã®ã§ããã®åé¡ã«æ»ããŸãããã ææ¡ãããå®è£
ã®å©ç¹ã調ã¹ãç®ã«èŠãããã€ãã¹ããªãããšã確信ããŸããããããã¯èµ·ããããäœããæªåããã¯ãã§ããã ãèªè
ã¯ãã§ã«ãã©ã®é»ãåŸ
ã£ãŠããŸã-ãŸããããã«ããããã£ããããŸããã åæåãè«çåŒãšããŠè§£éããæ©èœã倱ããŸãããããã¯ãããã©ã«ãã§ã¯çµã¿èŸŒã¿æŽæ°åã®Cã§è¡šãããŸãããå®å
šã«å€±ãããããšã¯ãããŸããã§ãããããã®ãããªè©Šã¿ã«ã¯ã³ã³ãã€ã©ãŒã®èŠåã䌎ããããç¡èŠããªãããšã«åæããŸããã
ã¯ããç§ãã¡ã¯
if (~NoErr || !NoSuccess && NoRetry) ...
ãããªé
åçãªè¡šçŸãæžãããšãã§ããŸãã
if (~NoErr || !NoSuccess && NoRetry) ...
ããã¯ãå幎ã®äŒæ©ã®åŸã«èè
ã«ééããªãæ°åã®äžå¿«ãªæéãæäŸããæ®ãã«ã€ããŠè©±ãããšã¯äœããããŸããããç§ãä¿¡ããŠãæ倱ã¯ââããã»ã©å€§ãããããŸããã ãããŠã誰ããç解ã§ãã圢åŒã§è«çæ¡ä»¶ãè¡šçŸããã«ã¯ãããšãã°
if (IsOk==True) || ((Success==True) && (Rerty==False))) ...
if (IsOk==True) || ((Success==True) && (Rerty==False))) ...
ããã§ã¯ããã¹ãŠãã·ã³ãã«ã§æ確ã§ããããã®æ§é ã«2ãã€ã¯ãç§ãããå Žåã§ããå人çã«ã¯ããããªãã®ã§ãããã ãã®äŸ¡å€ããããŸãã è³¢ã人ã®äžäººãèšã£ãããã«ãç§ãã¡ã¯ã³ã³ãã€ã©ã®ããã§ã¯ãªããä»ã®äººã®ããã«ããã°ã©ã ãæžããŠããŸãã
ããŠãå
ã»ã©è¿°ã¹ãããã«ã誰ãåãã£ã¹ãããã£ã³ã»ã«ããŠããŸãããç§ã¯ãããæ®éçãªæªãšã¯èããŠããŸããããŸããæé»ã®ãã£ã¹ããé¿ããå¥åº·ã®ããã«ããã䜿çšããŸããããã¯æ¬åœã«æªã§ãã çµå±ããã£ã¹ãæŒç®åãæžããå ŽåãçµæãšããŠåŸããããã®ãç解ããæŽæ°ãã€ããå²ãåœãŠããšäžäœããããç Žæ£ãããé¢æ°ã«ã¢ã¯ã»ã¹ãããšãã«å®æ°å€æ°ãžã®ãã€ã³ã¿ãŒã䜿çšããããšãç解ããŠããããšãã³ã³ãã€ã©ã«ç€ºããããšãç解ãããŸããä»®ãã©ã¡ãŒã¿ãŒãå€æ°ãžã®ãã€ã³ã¿ãŒã§ããå Žåãäžéšã®ã©ã³ã¿ã€ã ç°å¢ã§äŸå€ãçºçããå¯èœæ§ããããŸããïŒ ããªãã¯ãããç解ããŠããªãã£ãã®ã§ãïŒè¿·æãªïŒèŠåãåãé€ãããã«åãã£ã¹ããèšå®ããŸãã-ãããã¯ããªãã®åé¡ã§ããã³ã³ãã€ã©ã¯ããªããååã«è²¬ä»»ããããã°ã©ãã§ããã圌ã倱æãããªãããã«ããªãã®åæ©ãæãäžããŸãããããªãã
èªåãæ確ã«è¡šçŸãã
ãããã£ãŠãå¯èœãªéãåçŽãªã³ãŒãïŒããç¥ãããŠããKISSã«ãŒã«ïŒãæžãããšããå§ãããŸããããã¯ãåžžã«ããã®ãã©ã€ãã®èª€ã£ãç解ããéåããŸãïŒãã©ãã¯ããã¯ã¹ã®æåŸã®ã¬ã³ãŒãã¯ãã©ãããã°ãããããšæãããæèŠããããŸãïŒå€ãã®å Žåãç¿æ
£ããå€ããŠããŸãã åã®æçš¿ãžã®ã³ã¡ã³ãã§ç§ã«å§ããããã21äžçŽããããšããè¯ãæ¬ãèªã¿ãŸããããéåžžã«éŠŽæã¿ã®ããå Žæã§ãã
static int Data=0; if (!Data) ...
static int Data=0; if (!Data) ...
; åçŽã§ç解ããããæ¡ä»¶ïŒããŒã¿== 0ïŒããã®åœ¢åŒã§æžãããŠããç®çã«ã€ããŠè³ªåããããŸããããç§ãã¡ãå€è³ªããããšã«æ±ºããããïŒãDataïŒ1ïŒãšæžãããšãã§ããŸãïŒãã®è¡šçŸã¯ãã£ãšã¯ãŒã«ã§ãã¿ã€ãå
šäœã®æ¯ãèããæ·±ãç解ããŸãããããã¯ããã°ã©ã ãæžãäž»ãªç®æšã§ã-ããªãã®ç¥èãèªç€ºããããã«ïŒãããããããªãã¯äœãä»ã®ãã®ãæãã€ãããšãã§ããŸãã ããã¹ããå
¥åãããšãã«2æåãä¿åãããã¡ã€ã«ãä¿åãããšãã«ãã£ã¹ã¯å®¹éãç¯çŽããããã§ããïŒ ãã¡ããã3ã€ã®ãªãã·ã§ã³ã¯ãã¹ãŠåãããã«æ©èœããCã§ã¯åå
šäœãæ¡ä»¶ãšããŠè§£éã§ããŸãããããã§ãããªãã§ããïŒ èªè
ïŒãŠãŒã¶ãŒïŒãCæ§æèŠåã®ç¥èã確èªããå¿
èŠã¯ãããŸãããç¹°ãè¿ããŸãããã€ã³ã¿ãã¥ãŒã¯ããŠããŸããã
ããã©ãŒãã³ã¹ã«ã€ããŠç§ã«è©±ãå§ããªãã§ãã ãããäºåã«ãããç解ããããããŒãžã§ã³ã®ã³ãŒãã¯ãäž¡æ¹ã®ç°åžžãªïŒãã®å®çŸ©ã䞻匵ããïŒã¡ãœããã®ã³ãŒãã«éããªããšèšãããšãã§ããŸãã ã¡ãªã¿ã«ãæåã®2ã€ã®ãªãã·ã§ã³ã§ã¯ã³ãŒãã¯ãŸã£ããåãã§ããããšãå€æããŸãããã3çªç®ã®ãªãã·ã§ã³ã¯ã³ãŒãã®äœæè
ã®æ·±ãç¥èã瀺ãããã«èšèšãããŠãããåœç¶é·ããªããŸããã
ãã·ã³ã«äŸåããªãã¿ã€ã
ããã°ã©ã ã®ããã¹ããããã«èª¿ã¹ãŠãå¥ã®ç¥ç§çãªå Žæãã€ãŸããUCHARåãšUINTåã®å®çŸ©ã«åºäŒããŸãã ãªãç¥ç§çãªå Žæã§ããïŒ ç¬¬äžã«ããããã®ã¿ã€ãããŸã£ããå°å
¥ãããªãçç±ãæ確ã§ã¯ãªããååããäœãç¶ããŸããïŒæå³ã®ããèå¥åã«åæããŸãããïŒïŒã第äºã«ãããã¹ãã¯ããããæšæºã¿ã€ãã®åãªããšã€ãªã¢ã¹ã§ããããšã瀺ãã第äžã«ãæšæºã¿ã€ããæ¡çšãããçç±ãããã³ãµã€ãºãæ瀺çã«ç€ºãããŠããçµã¿èŸŒã¿ããã°ã©ãã³ã°ã§ã®äœ¿çšãæ瀺çã«æšå¥šãããŠããªãã¿ã€ãã å
¥åããæåæ°ãå°ãªãããããšããã ãã§ããïŒ
ãããããªãããã®æ±ºå®ã¯ãŸã ååšããæš©å©ãæã£ãŠããŸãããããããããã·ã³ç¬ç«åãå®çŸ©ããè©Šã¿ã§ãã£ããªãïŒãããŠãããã¯ãç§ã®æçŽã®æåã®è¡ã§ãè¡ãããã¹ãã§ãã®ã§ãç§ã¯å¿ããããæã¿ãŸãïŒãããã¯æããã«å€±æããŸããã ãã·ã³ã«äŸåããªãåã®æ£ããååã®åé¡ã¯å¥ã®holivarã®ãããã¯ã§ããTIããã®äŸã§äœ¿çšããããããªã¹ãã®å®çŸ©ãã€ãŸãu8ãs16ãªã©ã¯å人çã«ã¯å¥œãã§ãããå¥ã®ãªãã·ã§ã³ã奜ããããããŸããã
ãšããã§ã奜å¥å¿readerçãªèªè
ã«ãšã£ãŠèå³æ·±ã質åã¯ããããã®åãèšèªå®è£
ã®ãµã€ãºã®æ瀺çãªæ瀺ã§ã©ã®ãããæ£ç¢ºã«å®çŸ©ãããŠããããšããããšã§ãã ãã°ããèããŠãããªãã·ã§ã³ãææ¡ããã³ã³ãã€ã©ã®stdint.hãã¡ã€ã«ã³ãŒãã確èªããããšããå§ãããŸãã å人çã«ã¯ã__ INT8_T__ã®ãããªåŒã®IARãšã€ãªã¢ã¹ãèŠã€ããŸãããããã¯ããã«åæããããšã¯ã§ãããæããã«ã³ã³ãã€ã©ãŒèªäœã«å®è£
ããå¿
èŠããããŸãã Cèšèªæšæºãèªãã§ãã人ïŒç§ãèªåã®ç¡ç¥ãèªç€ºããæ¹æ³ãåç
§ããŠãã ãããããã¯åããŠã§ã¯ãããŸããïŒã¯ã³ã¡ã³ãã§ç§ãä¿®æ£ã§ããŸããããããã®ãã¯ãã¯sizeofæŒç®åã®å Žåã®ããã«ãå
éšå®è£
ã§ããããã§ãç§ããã€ãŠæ¢ããããèŠã€ããããªãã£ã人ã¯ãåæ§ã®è¡šçŸã«åããŠäŒãã ã ããããKeilã§ã¯ããããã®åã¯æšæºåãä»ããŠçŽæ¥å®è£
ãããŠãããããã©ã®ããã«å®éã«ããã¹ããããŸãã¯å®è£
ã¯å®å
šã«ã³ã³ãã€ã©ã¡ãŒã«ãŒã«å§ããããŠããã®ã§ã¯ãªãã§ããããïŒ
奜å¥å¿readerçãªèªè
ã«å¯Ÿããå¥ã®è³ªåã¯ããµã€ãºãæ瀺çã«æå®ããå¿
èŠãããå Žåãã©ã®ã¿ã€ãã䜿çšã§ããã©ã®ã¿ã€ãã䜿çšããå¿
èŠãããããšããããšã§ãã äžæ¹ã§ã¯ãã±ãŒã¹ïŒuïŒint8_tã䜿çšããããšããå§ãããŸãããã®å®è£
ã¯ãªãã·ã§ã³ã§ãããfastint8_tã¯ãé·ããäžããå¶éãããŠãããã¿ã€ãatleast8_tã®ããã«å³å¯ã«èšå®ãããŠããŸããã ãã¡ãããçµéšäžãæ瀺çã«ãµã€ãºã瀺ããã¹ãŠã®ã¿ã€ãã®ã¿ã€ãããå®éã«ã¢ã¯ã»ã¹å¯èœãªãã¹ãŠã®ã³ã³ãã€ã©ãŒã«å®è£
ãããŠããããšã瀺ãããŠããŸãïŒå察ã®ã±ãŒã¹ã¯ããããŸããããèªè
ã¯å人çãªçµéšãäžè¬åãããšããç§ã®æ¬²æ±ã«ãã§ã«æ°ä»ããŠããããã§ããïŒãå¢ã®2ã¡ãŒãã«ãããæºã®ã¡ãŒãã«ã äžæ¹ãæåŸã®2ã€ã®ã¿ã€ãã¯æ£ç¢ºãªé·ããä¿èšŒãããã®ã§ã¯ãããŸããããçãæŽæ°ãšã¿ãªããããã€ããšäžèŽããŸããã
ç§ã®è§£æ±ºçã¯ãsizeofïŒcharïŒ== 1ãæšæºã§å³å¯ã«åºå®ãããŠãããããæ¬åœã«ãã€ããå¿
èŠãªå Žåãcharåã¯æ£ããã§ããã16ãããã®æŽæ°ã«ã¯fast16_tã䜿çšããå¿
èŠããããŸããããããäœãä¿èšŒããŸããã ãããã£ãŠãæ£ãããœãªã¥ãŒã·ã§ã³ã¯ããã€ãã®ã»ããã®åœ¢åŒã§æ
å ±ãã±ãããèšè¿°ãããã€ãã®é
åã䜿çšããŠæ瀺çã«èŠå®ãããæäœã«ãã£ãŠãããŸããŸãªã¿ã€ãã®å
éšå€æ°ãžã®å€æããã³ãã®éã®å€æã§ãã
笊å·ãªãã®å
ããã«ç¬Šå·ãªãæ°åã®ãããã¯ã«è§ŠããŠãã ããã äœããã®çç±ã§ãå€éšããã€ã¹ã®ã¬ãžã¹ã¿ã決å®ããããã«ïŒããã³ããŒã¿è»¢éãã±ããã®æ§é ãèšè¿°ãããšãã«ïŒç¬Šå·ãªãã®åã䜿çšããããšããæ
£è¡ãéçºãããŸããã
笊å·ä»ããšç¬Šå·ãªãã®åã®éãã¯>ãš<operationsã®å®è£
ã®ã¿ã§ãããããå
é ã®ãããã¯ç¬Šå·ä»ãã®åã笊å·ãªãã®åã®ãã£ãªãŒãããã¯åæãããŸããããããã®æŒç®ã¯å®è¡ããŸããããŸããåå€æã«ãããããªéãããããããã«ããããã©ãŒãã³ã¹ããããã«å€åããŸãïŒå°ãªããšãARMã¹ããŒã³ã®å ŽåïŒããŸããæ¹åãç°ãªããŸããåæã«ã笊å·ãªãã®åã®äœ¿çšã¯ãäœåãªuæåãèšè¿°ããå¿
èŠãããããšãé€ããŠããã€ãã¹ã®çµæã«ã€ãªãããŸãããããã¯ããã£ã¹ã¯ã¹ããŒã¹ãç¯çŽãããšããçŸä»£ã®ããã°ã©ãã³ã°ã®äž»ãªãã©ãã€ã ã«æºæ ããŠããŸãããããšãã°ããã±ããå
ã®ããŒã¿ã®é·ããªã©ã笊å·ãªãã®å€ãšããŠè§£éãããæ
å ±ãå®éã«å«ããã£ãŒã«ãã®å Žåãå®çŸ©ã«ãã£ãŠè² ã«ãªãããšã¯ãããŸããã笊å·ãªãã®åã䜿çšãããšãåŒïŒLen> 0ïŒãšïŒLenïŒ= 0ïŒãåçã«ããããšãã§ããŸãããã䟿å©ãªãã®ã䜿çšããŸããããã®ãããªæ
å ±ãå«ãŸãªããã£ãŒã«ãã®å Žåã笊å·ãªãã®åã¯ãªãã·ã§ã³ã§ããããŠãæåŸã®çºèš-ãããã®ã¿ã€ãã倧æåã§æžãããŠããçç±ã¯æããã§ã¯ãããŸããããã®ãããªåœåãæšå¥šãããŠãããã¯ãããªãããããããããããããéå»ã®éºç£ãå®éã«å®çŸ©ããããã«ã¹ã¿ã ã¿ã€ãã«çœ®ãæãããããã¯ãããããŸããã誰ã«ãããããªãããç§ã«ãšã£ãŠã¯å€§æåã ãã§æ§æãããååãç®ãåŒãããã®ã¹ã¿ã€ã«ã¯ãµããŒãããŠããªããããåç¥ã®ããã«ãè²ã¯ãã¹ãŠå³ãéãããç¹°ãè¿ããŸãããæ£åœãªå察æèŠãæã£ãŠããããšãã³ã¡ã³ãããŠãã ããããã¡ã€ã«æ§é
ãã¡ã€ã«ã«ã€ããŠå°ã説æããŸããç§ã¯ããªãã®ããšãç¥ããŸãããããããŸã§ïŒåæ°å¹Žä»¥äžãããŸãããïŒã¢ãžã¥ãŒã«ã®æ§é ãšããããå®è£
ãããã¡ã€ã«ã眮ãããŠããå Žæã®èª¬æãèšèŒãããããã¹ããã¡ã€ã«ããããžã§ã¯ãã®ã«ãŒããã£ã¬ã¯ããªã§èŠã€ããããªãã®ã¯çããããšã§ãããããããããããŒãã¡ã€ã«ã¯INCã§å§ãŸãååã®ãã£ã¬ã¯ããªãšSRCãã£ã¬ã¯ããªã®ãœãŒã¹ã«ããããšãç解ããŠããŸãããããã«ã¯æ¢ã«SOURCEãªã©ã®ãªãã·ã§ã³ããããŸãããè¥ãé ã¯ãã®ãããªãã¡ã€ã«ã®ååšãå¿
é ãšèããããŠããã®ã§ããã®çç±ã¯ããããŸããç§ã¯ç·Žç¿ãæåŠãããã®ãœãããŠã§ã¢ããã±ãŒãžã®äœæè
ãšãããéçºãããã©ã€ã»ã³ã¹ã®çš®é¡ãéç¥ããããã¹ããã¡ã€ã«ããç§ã¯ãããå®å
šã«äžé©åã§ãããšèããŸããJack Gansleyãããã°ã§æžããããã«ããããã°ã©ã ããã¹ãã®åé ã«ãã©ã€ã»ã³ã¹ã®èŠä»¶ã«é¢ãã2ããŒãžã®èª¬æããããã³ã¡ã³ããã»ãŒçµäºããŠããã®ã§ãèè
ã®è³æ Œã«ã€ããŠçåããããŸããããã®è¡šçŸã¯ãåé¡ã®è£œåãå®å
šã«å°ãã ãèšåããŠããŸãããããŠãDoxygenãä¿é²ãããµã€ã¬ã³ãããªãã«ã³ã¡ã³ããæžãããšãä¿¡ããªãã§ãã ããã圌ã¯ãã¡ã€ã«ã®æ§é ãšæ§æã®èª¬æãæ¬åœã«æºåã§ããŸããç¹ã«ããªãã圌ãå©ããã°ãã³ã¡ã³ãã¯ããªãã ãã®ä»äºã§ãããããŠãã³ã¡ã³ãã«ã€ããŠè©±ãå§ããã®ã§ãç§ã®ã¢ããã€ã¹ã¯ãã³ã¡ã³ãã次ã®ã¹ã¿ã€ã«ã§æžãã¹ãã§ã¯ãªããšããããšã§ããCounter ++; //
ãããã¯åè«ã§ã¯ãããŸããããã®ãããªã³ã¡ã³ãã¯ãå€ãã®å Žåãèè
ãããããå
¬éããããšãæ¥ããããããªãããã°ã©ã ã§èŠãããŸããæè¿ããã³ã¡ã³ãã¯èªè
ãæãããŠã¯ãªããªãããšããè¯ãè¡šçŸãèªã¿ãŸããã確ãã«ããã®çŸè±¡ã¯Arduinoç°å¢ã®ç¹åŸŽã§ãããããã§ãããã®ãããªã³ã¡ã³ãã¯ååšããªããšãããããæªãã®ã§ãããããå®éã«ã¯ãã³ã¡ã³ãã¯ãªãããŸã£ããåãæäœããããã«ç°ãªãããã°ã©ãã³ã°èšèªã§æžãããŠããããã®çš®ã®ã³ã¡ã³ããããã°ã©ã ã®ããžãã¯ãç解ããã®ã«åœ¹ç«ã€ã³ãŒãã®èªè
ãšäºæ³ããã人ãããå ŽåïŒãããŠãããã³ã¡ã³ãã®äž»ãªç®çã§ãïŒç§ã圌ãã«ã¢ããã€ã¹ã§ããã®ã¯ã掻åã®çš®é¡ãå€æŽãã粟ç¥çèœåãéåžžã«æ確ã«è¶
ããèŠä»¶ã®ããé åã«é¢äžããªãããšã§ããããã«å¿
èŠãªèª¬æãããããšæããŸã-ç§ã¯ãã®æ¹åã®ãã©ãã¯ãŒã決ããŠç¡èŠããŸãããArduinoã«ã¯æ¬åœã«è¯ããããžã§ã¯ãããããããã¯ããèªäœã®çŽ æŽãããã·ã¹ãã ã§ããããã¯ããªãæŽå²çã«èµ·ãã£ãã®ã§ãããŸãçµéšã®ãã人ãã¡ã¯ãæå®ãããäŸã«äŒŒãããã°ã©ã ãæžãã¹ã¿ã€ã«ãèªåèªèº«ã«èš±å¯ããåå¿è
ããã°ã©ããšæ
£ç¿çã«åŒãã§ããŸããããªãã®çã¿ã䌎ãå°æãšãããã«å¯Ÿããå¯äžã®å¯èœãªçãã¯ãããã°ã©ãã³ã°å
šè¬ãç¹ã«Cèšèªã«é¢ããæ¬ãèªããšããææ¡ã§ããããããããŒãã¡ã€ã«
ããããŒãã¡ã€ã«ã«ã€ããŠãã1ã€ããŸãã¯2ã€ã§ãããŸãããã¡ã€ã«ã«ä¿åããã®ã§ã¯ãªããçªå·ãä¿åããªãã§ãã ãããã¢ãžã¥ãŒã«ãå
éšå®æ°ãŸãã¯ãŠãŒã¶ãŒãå¿
èŠãšããªãä»ã®ãšã³ãã£ãã£ãå¿
èŠãšãããããããã®åçŽã§äŸ¿å©ãªå€æŽã®å¯èœæ§ãä¿æãããå ŽåïŒãã ãããã®ãããªãªããžã§ã¯ãã®èª¬æã¯ããã°ã©ã ããã¹ãã®å
é ã«ãããå¥ã®ãã¡ã€ã«ã«ãªããããå€æŽã¯è€éã«ãªããŸãããäžèŽãããã®ã¯ä¿åããŸããïŒãã¢ãžã¥ãŒã«ã€ã³ã¿ãŒãã§ã€ã¹ã®èª¬æãããå
±éã®ããããŒãã¡ã€ã«ã«ãã©ãã°ããªãã§ãã ãããããããå Žåã«ã¢ãžã¥ãŒã«ããšã«ããããŒãã¡ã€ã«ã1ã€ã ãæã€ãšããã«ãŒã«ã¯ãããŸããããŸãã誰ãããããè¡ããšããäºå®ã¯ãããªãã«ãšã£ãŠæ£åœãªçç±ã«ã¯ãªããŸããããŠãŒã¶ãŒã¯å¿
èŠãªãã®ãç¥ãã ãã§å€ãã®çç±ããããŸãããéèŠãªæ
å ±ãå«ãå°ããªãã¡ã€ã«ã¯5ããŒãžã®ã·ãŒããããèªã¿ããããæåã®2ããŒãžã§ã©ã€ã»ã³ã¹ã®è©³çŽ°ãããããŸã補åã次ã®3ã€ã¯ã䜿çšããªãå
éšå®æ°ãšãªããžã§ã¯ããå®çŸ©ããæåŸã®ããŒãžã®çµããã«ããŠãŒã¶ãŒãå¿
èŠãšãã3ã€ã®é¢æ°ã®ãããã¿ã€ããå€ç¬ã«æœãã§ããŸããä»ã®å Žåã«ã¯ãè€æ°ã®ããããŒãã¡ã€ã«ã圹ç«ã€å ŽåããããŸããããã€ãã®ã¢ã¯ãã£ãã«äœ¿çšãããå€æ°ãå«ãããã±ãŒãžãããå Žåã®äŸãèŠãŠã¿ãŸããããããšãã°ãå€ãã®ã¢ãžã¥ãŒã«ãèªã¿åãããšãã§ããããå€æŽã§ããã®ã¯ããå°æ°ã®ãšã©ãŒã³ãŒãã§ãããã¡ããããŠãŒã¶ãŒã®æ
éããæåŸ
ããŠããã«ã¢ã¯ã»ã¹ããããšã¯ããç¡è¬ã§ãããããã²ãã¿ãŒã¯èªç¶ãªè§£æ±ºçã®ããã«èŠããã®ã§ã2ã€ã®ããããŒãã¡ã€ã«ãäœæããŸãã1ã€ã¯å
éšäœ¿çšãç®çãšãã2ã€ç®ã¯èªã¿åãé¢æ°ã®ã·ã°ããã£ãšãŠãŒã¶ãŒã®ã¿ããããšããã®å€æ°ã®ååšãç¥ã£ãŠããã ããªã®ã§ãæ¬åœã«æãã§ãå€æ°ãå°ç¡ãã«ããããšã¯ã§ããŸããã第äºã«ãæ·»ä»ãããããããŒãã¡ã€ã«ãèæŠãéå§ãããªã¹ã¯ããããšãç§ã¯æ¬¡ã®ããšã宣èšããŸã-ãããã®è§£æ±ºã¯ãã¢ãžã¥ãŒã«ãæ¥ç¶ããããã®çã«å¹æçãªã¡ã«ããºã ãäœæããããšãããããããšã«ãã£ãŠåŒãèµ·ããããèšèªéçºè
ã®ééãããŸãã¯ãããæŸèæã§ãããã¯ããçŸæç¹ã§ã¯ãCèšèªã¯ãã¹ããããããããŒã䜿çšããŠããŸãããå¿
é ã§ã¯ãããŸããããããã¯ugã解決çã§ãããã ããããŸãçŸããã¯ãããŸãããããã®ãœãªã¥ãŒã·ã§ã³ã§ã¯ãã©ã€ãã©ãªå
ã®åã¢ãžã¥ãŒã«ãããã±ãŒãžå
šäœã«ã®ã¿å«ãŸãããã¹ãŠã®ããããŒãã¡ã€ã«ãå«ãã°ããŒãã«ããããŒãå«ãããšã§å§ãŸãå Žåãã¢ã³ã¹ã¿ãŒãçæããå¿
èŠã¯ãããŸããã STMã®ã©ã€ãã©ãªããã®ã¢ãããŒãã®äŸãšããŠæ©èœãããã®ãœãªã¥ãŒã·ã§ã³ã¯ãã¹ãŠã®ãªãªãŒã¹ã§ä¿æãããŠãããšããäºå®ã«åºã¥ããŠããããäŒç€Ÿã®äž»èŠãªäœçœ®ã§ãããã¡ããåæã«ãåããããŒã«ã¯ç¹°ãè¿ãã€ã³ã¯ã«ãŒãã«å¯Ÿããä¿è·ãè£
åãããŠãããã³ã³ãã€ã©ãŒã¯ãã®ãããªããã°ã¬ãããå·éã«æ¶åããŸããããã®ãããªè§£æ±ºçã¯ãããã±ãŒãžå
ã®ã¢ãžã¥ãŒã«ã®çžäºæ¥ç¶ãéçºè
ã«ãã£ãŠèæ
®ãããŠããããããã±ãŒãžèªäœã®æ©èœéšåãå®è£
ããã®ã«ååãªè³æ Œããããã©ããçåã§ãã圌ãã¯ããã§æããŠãããŸãïŒãã¡ããããã®äººã¯ããã°ã©ããŒãšããŠéåžžã«è³æ Œãããã圌ã®æèŠã¯äŸ¡å€ããããŸããã圌ã¯ç§ã®æ«ã£åã§ããã圌ãæåã®å£°æãæžããç¬éããç§ãšè°è«ããŠããã®ã§ãããã¯ããçšåºŠé·åŒãç¬ç«ã®ãã¢ã ãšæããŸã-æªæ°ãã®ãããªè§£æ±ºçãè¡ãããšã¯ã§ããŸããããã«ãæã
ã¯ãæã
ã¯åœŒã®åäœã§ä»äºã«è¡ããããŠãããªããžã§ã¯ãã®ãã¹ãŠã®ããããå«ãŸãªãããšããæ倧ïŒããç§ã¯ãèšã£ãŠããªãããšçç±ããå®éã«ã¯ããªãã§ããããïŒãäžéšã§æ瀺çã«ãªã¹ãããå¿
èŠãããèšèªç¹å®ã®ã¢ãžã¥ãŒã«ããã€ã³ããŒãããããã¹ãŠã®ãšã³ãã£ãã£ã解決ããããã«ãç§ã¯ïŒç§ã ãã§ãªããèªåã®çµéšã®ã¿ã«äŸåããŠããŸãïŒãããã®èšèªã§äœæ¥ããŸãããããçããŠãå¥åº·ã§ãéœæ°ã§ãããã€ãŸãããã®ãããªèŠä»¶ã¯æ»å宣åã«çžåœããŸããããã¡ã€ã«ã®å
é ã«ã€ã³ã¯ã«ãŒãããããŒãã¡ã€ã«ã®ååãå«ãããŒãžïŒãŸãã¯2ã€ïŒãæ¬åœã«é
眮ããå¿
èŠãããå Žåãããããã¢ãžã¥ãŒã«ã倧ãããããããvoutãå解ããå¿
èŠããããŸããïŒãã®å Žåãç¡çãããã«ã2è¡ã®å®è¡ã§ã³ãŒããå«ã100500ã®å°ããªãã¡ã€ã«ãäœæããªãã®ãããã§ããããçå®ã¯ããã€ãã®ããã«ã䞡極端ã®éã«äœçœ®ããéåžžã«çŽ æŽãããç¹æ§ãæã£ãŠããŸã-åžžã«çãäžã«æšªãããïŒããªããããã«æžãããŠããããšãè¶
ããŠãã®ãã¬ãŒãºããäœããèªãã§ãããªããããªãã¯æ¥ãã¹ãã§ãïŒã¯ããåè¿°ã®ã¹ããŒã«ãŒã«åæããæºåãã§ããŠããŸããå€ãã®å Žæã§ãæ·»ä»ãããããããŒãã¡ã€ã«ã¯éåžžã«æçœã§ãããããã§ãããããã¯äŸ¿å©ã§ãããå¿
èŠã§ã¯ãããŸããããããªã²ãŒã¿ãŒããã¿ãŒã³ãå®è£
ããçµã¿èŸŒã¿ããã°ã©ãã³ã°ïŒããã³ãœãããŠã§ã¢éçºã®ãã®ã»ã¯ã·ã§ã³ã«ã€ããŠã®ã¿æžããŠããïŒãæåŸã ã£ãã®ã¯ãã€ã§ããïŒããŒã¯ãŒã
åæ§ã«éèŠãªãããã¯ã§ããããŒã¯ãŒãã«ã€ããŠèª¬æããŸãããããšã³ããããŒããšã«ãŽãŒãçæ
å ±æºãå€æ¬¡å
ã¡ãã»ãŒãžç©ºéãããããå€çŸ©æ§ããã«ã³ãéçšãªã©ãéåžžã«é
åçãªã¹ããŒãªãŒããã®é·ãåŒçšãèš±å¯ããŸãããããã®èšèã¯ãã¹ãŠã䞊ã¹ãããé åºã«é¢ä¿ãªãéåžžã«å°è±¡çã§ããããããæ£ããé åºã«äžŠã¹ããšãç¹å®ã®çè«çå
容ãåŸãããŸãããããŠãæ¬åœã®å°é家ã¯ã圌ãã®å©ããåããŠãæ¥åžžã®å®éçãªåé¡ã®è§£æ±ºçãèŠã€ããããšãã§ããŸããããããã£ãŠãããŒã¯ãŒããææ矩ã«äœ¿çšããŸããã€ãŸããvolatile â , ,
static â , ,
const â , ,
auto register â , , , .
ä»ã®ããŒã¯ãŒãã¯ããã»ã©éèŠã§ã¯ãããŸããããã³ã³ãã€ã©ãŒã®æ©èœãå¿ããŠããªãå Žåãã€ã³ã©ã€ã³ãã£ã¬ã¯ãã£ããé©åã«äœ¿çšããããšã§å®éã«ããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸããããã®åäœã®ã¡ã«ããºã ããããã£ãŠãã®äœ¿çšã®æå³ãå®éã«ç解ããŠããªããããçµã¿èŸŒã¿ãã£ã¬ã¯ãã£ãã匷ããå§ãããŸãããä»ã®ãã¹ãŠã®ãã£ã¬ã¯ãã£ãã¯ãéåžžã³ã³ãã€ã©ã«äŸåããä»ã®å®è£
ïŒGNUã³ã³ãã€ã©ã§æ°ã«å
¥ã£ãŠããwarm__unused_resultãã©ã°ããªã©ïŒã«ååšãããæ©èœãå€å°ç°ãªããããéåžžã«æ³šæããŠäœ¿çšããå¿
èŠããããŸããåãäžãããããã¯ã«ããã次ã®æ®µèœãã€ãŸãã©ã³ã¿ã€ã ãžã®ãã¥ãŒãã³ã°ã«ã¹ã ãŒãºã«é²ãããšãã§ããŸããã³ã³ãã€ã©ãŒã®ã»ããã¢ãã
ããã°ã©ãããã®çå€ãæ瀺ãããœãããŠã§ã¢ããã±ãŒãžã«åºæã®å¥ã®ã»ã¯ã·ã§ã³ã¯ãã¿ãŒã²ããã³ã³ãã€ã©ãžã®ãã¥ãŒãã³ã°ã§ããããã§çŸåšã³ã³ãã€ã«ãããŠããéåžžã®ããã°ã©ã ãšã¯ç°ãªããéçºäžã®æ±çšãœãããŠã§ã¢ããã±ãŒãžã¯ãç°ãªãããã°ã©ãã³ã°èšèªïŒå°ãªããšãCããã³C ++ïŒãç°ãªãã¢ãŒããã¯ãã£ãåãèšèªå
ã®ç°ãªãã³ã³ãã€ã©ãŒã§åäœããå¿
èŠããããŸãããŸããŸãªéãããããŸãïŒãããŸããŸãªããã°ã©ãã³ã°ç°å¢ïŒããã³ãããã«ã¯ããã«éãããããŸãïŒããã³ããŸããŸãªã¿ãŒã²ããMCïŒãŸããåŸè
ã¯ã³ãŒãã«åŒ±ã圱é¿ãçŽæ¥äžããŸãããã¢ãžã¥ãŒã«ã®æ§é ãèšèšãããšãã¯ãã®èŠä»¶ãèæ
®ãããšããã§ãããïŒããŸããèšèªã®èšå®ãå¿
èŠã§ãããã®ç¹å®ã®å Žæã§ãextern Cãã£ã¬ã¯ãã£ããšããŠè¡šãããC ++ããã°ã©ã ãCèšèªã®èŠåã«åŸã£ãŠãªããžã§ã¯ããã¡ã€ã«ã§èšèšãããé¢æ°ã䜿çšã§ããããã«ããŸããããã±ãŒãžãæž¡ãå Žåããã®ãã£ã¬ã¯ãã£ãã®äœ¿çšã¯çµ¶å¯Ÿã«å¿
èŠã§ããªããžã§ã¯ããã¡ã€ã«ãŸãã¯ã©ã€ãã©ãªã®åœ¢åŒã§ãããå®å
šãªã¢ã»ã³ããªã®ãœãŒã¹ã³ãŒãã䜿çšããå Žåã¯é€å€ã§ããŸããå®å
šã«çµã¿ç«ãŠããããããã®ãã£ã¬ã¯ãã£ãããªãã«ããããšããå§ãããŸãããããã§æ±ºããããšãã§ããŸããããããã¹ã¿ã€ã«ã«é¢ããåãªãçºèš-å
ã®äŸã§ã¯ããã®ãã£ã¬ã¯ãã£ãã¯æ¡ä»¶ä»ãã®çšèªã§çŽæ¥èšè¿°ãããŠãããå人çã«ã¯ããŸã奜ãã§ã¯ãããŸããããã®ãããªãã£ã¬ã¯ãã£ããåå¥ã®ã€ã³ã¯ã«ãŒããã¡ã€ã«ãšããŠèšèšããããšã奜ã¿ãŸãããŸãããã£ã¬ã¯ãã£ãã®å®è£
ãå¶åŸ¡ãããã®ã¢ãããŒããæšå¥šããŸãããŸãšã
èŠçŽãããšãã©ãã§ãåãã¹ã¿ã€ã«ã§è©±ãååã䜿çšããå¯èœã§ããã°åæåãäœæããå¿
èŠã«å¿ããŠããŒã¿ã®ãµã€ãºãæ瀺çã«ç€ºãããã·ã³ã«äŸåããªãåã䜿çšããããã±ãŒãžæ§é ãšã¢ãžã¥ãŒã«ã®é¢ä¿ãçèããããããŒãã¡ã€ã«ãæ
éã«ç®¡çããã³ãŒãã«ã³ã¡ã³ããä»ããè€éãªãã®ãé¿ããŸãç解ããã³/ãŸãã¯ãããŸããªè¡šçŸãšäœãèµ·ããããåç
§ããŠãã ãããPS
äžèšã®æšå¥šäºé
ã«åºã¥ããŠæ§ç¯ãããã³ãŒãã®æåã®éšåã¯ãGithãæçµçã«å¯ŸåŠãããšãã«ãGithab / tGarryC / Modbus /ã«é
眮ãããŸãã