ã³ã³ãã³ãïŒå ¬éããã³æªå ¬éã®èšäºïŒïŒ
ããŒã1.äžè¬æ å ±
ããŒã2. RTOS MAXã®ã«ãŒãã«ïŒãã®èšäºïŒ
ããŒã3.æãåçŽãªããã°ã©ã ã®æ§é
ããŒã4.æçšãªçè«
ããŒã5.æåã®ã¢ããªã±ãŒã·ã§ã³
ããŒã6.ã¹ã¬ããåæããŒã«
ããŒã7.ã¿ã¹ã¯éã§ããŒã¿ã亀æããæ段
ããŒã8.å²ã蟌ã¿ã®åŠç
ææŠãã
ãã§ã«è¿°ã¹ãããã«ãMACS RTOSã®ã¿ã¹ã¯ã¯ãæ±çšOSã®ãããŒã«é¡äŒŒããŠããŸãã åæã«ãã·ã¹ãã ã§ïŒãã¡ããå©çšå¯èœãªãªãœãŒã¹å ã§ïŒä»»æã®æ°ã®ã¿ã¹ã¯ãå®è¡ã§ããŸãã æ±çšOSã§ã¯ãããã¯çè«åãæ¢ããŠç·Žç¿ã«ç§»ãããšãã§ããŸããããªã¢ã«ã¿ã€ã OSã®å Žåãããã°ã©ããŒã¯ãã¹ãŠãæ£ããè¡ã£ãããšã確èªããå¿ èŠããããã¿ã¹ã¯ã¯å¿ èŠãªã ãã®ããã»ããµãŒæéãåãåãããšãä¿èšŒãããŸãã ãããŠããã¹ãŠãæ£ããè¡ãã«ã¯ãäœããã®çè«ãç¥ãå¿ èŠããããŸãã ãããã£ãŠãã¿ã¹ã¯ã®äœæ¥ããã詳现ã«æ€èšããŸãã
ãã«ãã¿ã¹ã¯ã®çš®é¡
MAX MAX RTOSã§ã¯ãä»ã®ã»ãšãã©ã®ãªã¢ã«ã¿ã€ã ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšåæ§ã«ã3ã€ã®ç°ãªãã¿ã€ãã®ãã«ãã¿ã¹ã¯ãå¯èœã§ãïŒæ··éãå調ãæ··åã ãªããããªã«ïŒ å®éãç°ãªãã·ã¹ãã ã§ã¯ç°ãªãã¿ã€ãã䜿çšããæ¹ã䟿å©ã§ãã ãããã£ãŠãæã䟿å©ãªåœ¢åŒã®éžæã¯ãç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ããã°ã©ã ã®éçºè ã«å§ããããŠããŸãã
ããªãšã³ããã£ããã«ãã¿ã¹ã¯
ãã®ã¿ã€ãã¯ãå€ãã®ããã°ã©ã ã§æãããç¥ãããŠããŸã;ããã«ãããªãšã³ããã£ããã«ãã¿ã¹ã¯ã¯ãæ±çšãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§äœ¿çšããããã®ãšäŒŒãŠããŸãã ã¹ã±ãžã¥ãŒã©ãŒã¯åã¿ã¹ã¯ã«åºå®ã¿ã€ã ã¯ã©ã³ã¿ã ïŒããã©ã«ãã§1000 Hzã§ããMAKS_TICK_RATE_HZå®æ°ã䜿çšããŠèšå®ãããŸããã€ãŸããããã©ã«ãã§ã¯ã©ã³ã¿ã ã¯1ããªç§ã§ãïŒãå®è¡ãã次ã®ã¿ã¹ã¯ãå®è¡ããŸãã 以äžã§ã¿ã¹ã¯ãåæããåçãæ€èšããŸããããã§ã¯ãã·ã¹ãã ã¿ã€ããŒã«åŸã£ãŠã¿ã¹ã¯ãé çªã«å®è¡ãããããšã«æ³šæããŠãã ããã äžè¬ã«ããã®ã¹ããŒã ã¯ãããŒããŠã§ã¢ã®æŠããå§ãŸããŸã§ãããªãèŠæ ãããããªããŸãïŒæ±çšãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§äœ¿çšãããã®ã¯åœç¶ã®ããšã§ãïŒã
æ©åšãæäœããéã®ããªãšã³ããã£ããã«ãã¿ã¹ã¯ã®åé¡
ãã€ã¯ãã³ã³ãããŒã©ãŒã®äž»ãªã¿ã¹ã¯ã®1ã€ã¯ãæ©åšã®æäœã§ãã ãããŠããã®æ©èœã¯ããã°ã©ããŒã«å€ãã®è²¬ä»»ãè² ãããŸãã åãSPIãã¹ããç°ãªãCSã©ã€ã³ã§åºåãããè€æ°ã®ããã€ã¹ã«å¯Ÿå¿ããŠããããšãå€æããå ŽåããããŸãã ããããã€ã¹ã§ã®äœæ¥ãå®äºãããŸã§ãå¥ã®ããã€ã¹ã§ã®äœæ¥ãéå§ããããšã¯ã§ããŸããã

å³ 1.è€æ°ã®ããã€ã¹ã§åäžã®SPIãã¹ã䜿çšããäŸ
I2Cãã¹ã¯å ã ãå€ãã®ããã€ã¹ãæ¥ç¶ããããã«èšèšãããŸããã
ã¿ã€ãã³ã°å³ã«ååé«ã粟床ã§èããããšãå¿ èŠãªå ŽåããããŸãã ã¿ã€ã ã¹ã©ã€ã¹ãçµäºãããšããã€ã¢ã°ã©ã ãæªãã§ããŸããŸãã
ããããããªãšã³ããã£ããã«ãã¿ã¹ã¯ã§ã¯ãã¹ã±ãžã¥ãŒã©ã¯å®¹èµŠããããŸããã ã¿ã¹ã¯ãåãæ¿ããããã®ã¿ã€ããŒããã€æ©èœãããã¯èª°ã«ãããããªããããäžèšã®å Žåã¯åæã¡ã«ããºã ã䜿çšããå¿ èŠããããŸãã ç¹å®ã®ã¹ããŒã ã§ã¯ãããã€ãã®åæããªããã£ããå°å ¥ããã ãã§ååã§ãã ããããããã°ã©ããŒã¯åæã«ã€ããŠãããããã°ã©ã ã«ã€ããŠèããããšãäœåãªããããããšãå€æãããããããŸããã ãããŠããã®å Žåãååçµåãæ¯æããŠå å¶ãã«ãã¿ã¹ã¯ãæŸæ£ããæ¹ãè¯ãã§ãã
å調ãã«ãã¿ã¹ã¯
å調ãã«ãã¿ã¹ã¯ã§ã¯ãåãæ¿ãã¯ã¿ã€ããŒã§ã¯ãªããã¿ã¹ã¯èªäœããã®ã³ãã³ãã«ãã£ãŠå®è¡ãããŸãã ãã®ã¿ã€ã ã¯ã©ã³ã¿ã ã§è¡ãããããšã«ãªã£ãŠãããã¹ãŠãå®äºãããšã圌女èªèº«ãã¿ã¹ã¯ã¹ã€ããã³ã°é¢æ°YieldïŒïŒãåŒã³åºããŸãã ãã®é¢æ°ã®åŒã³åºãã¯ã次ã®ã¿ã¹ã¯ã«å¶åŸ¡ã移ãæéã§ããããšãã¹ã±ãžã¥ãŒã©ã«éç¥ããŸãã ãã®çµæãã¿ã¹ã¯ã¯ãããèªäœãã·ã¹ãã ã«åãåããããŸã§å®è¡ãäžæãããªããšããä¿èšŒããããŸãã ããããèšããŸã§ããªããã³ã€ã³ã®è£åŽã¯ããã°ã©ããŒã«ãšã£ãŠå€§ããªè²¬ä»»ã§ãã ã¿ã¹ã¯ãããã»ããµãé床ã«å æããªãããã«ããå¿ èŠãããã®ã¯ãã¢ããªã±ãŒã·ã§ã³ããã°ã©ãã§ãã ã¿ã¹ã¯ãã·ã¹ãã å šäœãããªãŒãºãããããšãæžãããšãæ £ç¿ã§ãããç§ã®æèŠã§ã¯ãããã¯ããã«è¯ãã§ãã æ©åšã¯åäœãããããªããã®ã©ã¡ããã§ãã ãµãã·ã¹ãã ã®1ã€ã«é害ãçºçããå Žå-æ©åšãå®å šã§ãªããªããšãçµæã¯ã²ã©ããªããŸãã ãã®ãããããã€ã¹ãå®å šã«æ éããå Žåã§ãããšã©ãŒãèŠã€ããããã®ä¿¡å·ãšããŠæ©èœããŸãã ããã«ãããããããããªãšã³ããã£ããã«ãã¿ã¹ã¯ã®å Žåã1ã€ã®ã¿ã¹ã¯ããã³ã°ããŠãå šäœãšããŠäœæ¥ãäžæãããããšã¯ãªããå調çãªã¿ã¹ã¯ã®å Žåãã¿ã¹ã¯ã¯åã«ä»ã®ã¿ã¹ã¯ãå¶åŸ¡ããŸããã
ãŸããå調åãã«ãã¿ã¹ã¯ã䜿çšããŠãã·ã³ã°ã«ã¿ã¹ã¯ã·ã¹ãã ããã¢ããªã±ãŒã·ã§ã³ããã°ãã移æ€ã§ããŸãã 3Dããªã³ã¿ãŒïŒå®éã«ã¯CNCãã·ã³ïŒçšã®Marlinããã¡ãŒã ãŠã§ã¢ãã®æçãèããŠã¿ãŸãããã
void loop() { if(buflen < (BUFSIZE-1)) get_command(); #ifdef SDSUPPORT card.checkautostart(false); #endif if(buflen) { ... process_commands(); //SDSUPPORT buflen = (buflen-1); bufindr = (bufindr + 1)%BUFSIZE; } //check heater every n milliseconds manage_heater(); manage_inactivity(); checkHitEndstops(); lcd_update(); }
loopïŒïŒé¢æ°ã¯ãArduinoã©ã³ã¿ã€ã ã«ãã£ãŠç¡éã«ãŒãã§åŒã³åºãããŸãã åæ§ã®ã«ãŒãã¯ãã¿ã¹ã¯ãåãæ¿ããã¹ã±ãžã¥ãŒã©ã«é¡äŒŒããŠããŸãã ãã¹ãŠãå®éã®ã¹ã±ãžã¥ãŒã©ãŒã«ããçŽããšãloopïŒïŒé¢æ°ãæšãŠãŠãç¡éã«ãŒãã§ã¹ãã³ããã¿ã¹ã¯ã®åœ¢ã§ã³ã³ããŒãã³ããèšèšãã次ã®å埩ã®åã«YieldïŒïŒãåŒã³åºãããšãã§ããŸãã ããã«ãããã¿ã¹ã¯ãæ©åšãä»ããŠçžäºã«ç«¶åããªãããã«ãªããçžäºã«èªå°ã¿ã€ã ã¢ãŠããäœæãããŸãã ãããŠãå°æ¥çã«ã¯ãã·ã¹ãã ãé©å¿ããã«ã€ããŠãããªãšã³ããã£ããã«ãã¿ã¹ã¯ãžã®åãæ¿ããè©Šã¿ãããšãã§ããŸãã
æ··åãã«ãã¿ã¹ã¯
æåŸã®å¯èœãªãªãã·ã§ã³ãã·ã¹ãã ãããªãšã³ããã£ããã«ãã¿ã¹ã¯ã¢ãŒãã§åäœããŸãããã¿ã¹ã¯ã®äžéšïŒãŸãã¯äžéšïŒãYieldïŒïŒé¢æ°ãåŒã³åºããŸãã ç¹ã«ãã¿ã¹ã¯ãå¶åŸ¡ãåãåã£ããããã®ããŒã¿ã®æºåããŸã æŽã£ãŠããªãããšãããã£ãå Žåã 次ã«ããªãœãŒã¹ãå æããªãããã«ã圌女ã¯YieldïŒïŒé¢æ°ãåŒã³åºããŠå¥ã®ã¿ã¹ã¯ã«å¶åŸ¡ãæž¡ãããšãã§ããŸãã ãã ããMAX MAX RTOSã®çŸåšã®ããŒãžã§ã³ã§ã¯ãããã¯èš±å®¹ã§ããŸããã泚æããŠäœ¿çšããå¿ èŠããããŸãã ã€ã³ãã¯ããé«ããããã«ãèµ€ã§åŒ·èª¿ãããçç±ã
çŸåšã®MAX MAXã§ã¯ãæ··åãã«ãã¿ã¹ã¯ã泚æããŠäœ¿çšããå¿ èŠãããããšã«æ³šæããŠãã ããã å®éã«ã¯ãåºå®åšæ³¢æ°ã§åäœããã¿ã€ããŒã§ããªãšã³ããã£ãã¿ã¹ã¯ã®åãæ¿ããçºçããŸãã 匷å¶çãªã¿ã¹ã¯ã®åãæ¿ãã¯ããã®ã¿ã€ããŒã«ã¯åœ±é¿ããŸããã ã¿ã¹ã¯Aãåžžã«700ÎŒs以å ã«å®è¡ãããåŸãYieldïŒïŒé¢æ°ã䜿çšããŠã¹ã±ãžã¥ãŒã©ã«å¶åŸ¡ã転éãããšããŸãã ã¹ã±ãžã¥ãŒã©ãŒã¯ã¿ã¹ã¯Bãå®è¡ããŸãããããã300ãã€ã¯ãç§åŸãã¿ã€ããŒããã®å²ã蟌ã¿ãçºçããã¹ã±ãžã¥ãŒã©ãŒã¯æ¬¡ã®ã¿ã¹ã¯Bã«å¶åŸ¡ã転éããŸããå¶åŸ¡è»¢éã¯é 次çºçãããããã¿ã¹ã¯Bã¯æ°žä¹ ã«æå¶ãããŸãã 圌女ã«ã¯åžžã«å£ã£ãæéã®éåãäžããããã¿ã¹ã¯Aã®éåã®æ®ããäžããããŸãã
ã¿ã¹ã¯ã®ç¶æ
ãã«ãã¿ã¹ã¯ã®çš®é¡ã«ç²Ÿéããã®ã§ãã¿ã¹ã¯ãšããã«è¿ãå¶åŸ¡ã転éããããžãã¯ãæ€èšã§ããŸãã ã¿ã¹ã¯ã®ç¶æ ãšãããã®éã®é·ç§»ã®ã°ã©ããå³ã«ç€ºããŸãã 2ã

å³ 2.åé¡ã®ç¶æ ãšãããã®éã®é·ç§»ã®ã°ã©ã
èµ°ã | æãå¿«é©ãªç¶æ ã ã¿ã¹ã¯ã¯å®äºããŠããŸãã ãã®ç¶æ ã§ã¯ãåç¬éã«1ã€ã®ã¿ã¹ã¯ããååšã§ããŸããã |
æºåãã§ã㊠| ã¿ã¹ã¯ãã¿ã€ã ã¹ã©ã€ã¹ã䜿ãæããããããèªäœã§YieldïŒïŒé¢æ°ãåŒã³åºããšãã¿ã¹ã¯ã¯ãã®ç¶æ ã«å ¥ããã¹ã±ãžã¥ãŒã©ãåã³èšå®ãããŸã§ãã®ç¶æ ã®ãŸãŸã«ãªããŸãã |
ãããã¯ããã | ããžãŒç¶æ
ã®ãªãœãŒã¹ãèŠæ±ããå Žåãã¿ã¹ã¯ã¯ãã®ç¶æ
ã«ãªããŸãã åæããªããã£ãïŒãã¥ãŒããã¯ã¹ãŸãã¯ã»ããã©ïŒãã€ãã³ãã®æåŸ
ããã¥ãŒããã®ã¡ãã»ãŒãžã®æåŸ
ãå¯èœã§ãã ãªãœãŒã¹ã解æŸããããŸã§ãã¿ã¹ã¯ã¯ããã»ããµãµã€ã¯ã«ãç¡é§ã«ããããšãªãããã¯ç¶æ
ã«ãªããŸãã ããã¯ã¿ã¹ã¯ã«ãšã£ãŠéåžžã«éèŠãªç¶æ
ã§ããå®äºããã¿ã¹ã¯ã®æ°ãå°ãªãã»ã©ãæ®ãã®ããã»ããµæéã¯é·ããªãããã§ãã ãµã€ã¯ã«ã§äœãã®æåŸ
ãæŽçããã®ã§ã¯ãªããã¿ã¹ã¯ããããã¯ããŠãã¹ã±ãžã¥ãŒã©ãŒãåŒã³åºãããã¹ãã§ã¯ãªãããšãã¹ã±ãžã¥ãŒã©ãŒã«ç¥ãããããšã匷ããå§ãããŸãã
ãªãœãŒã¹ã解æŸããããšãç¶æ³ã«å¿ããŠãã¿ã¹ã¯ã¯ããã«å®è¡ã«é²ãããèšç»ã®æºåç¶æ ã«ãªããŸãã åŸè ã¯ãäžåºŠã«è€æ°ã®ã¿ã¹ã¯ãåŸ æ©ããŠãããªãœãŒã¹ã解æŸãããå ŽåïŒçµå±ãå®è¡ã§ããã®ã¯1ã€ã®ã¿ïŒããŸãã¯åªå 床ã®é«ãã¿ã¹ã¯ãçŸåšå®è¡ãããŠããå Žåã§ãã |
éã¢ã¯ãã£ã | äœææããŸãã¯äœæ¥ã®çµäºæã«ã¿ã¹ã¯ãé²ãç¶æ ã ã€ãŸããã¿ã¹ã¯ãã¹ã±ãžã¥ãŒã©ã«ãŸã æ¥ç¶ãããŠããªãå ŽåããŸãã¯éã«ãã¹ã±ãžã¥ãŒã©ãããã§ã«åæãããŠããå Žåã§ãã ã¿ã¹ã¯ãšã¯é¢ä¿ã®ãªãè£å©ç¶æ ã |
ã¿ã¹ã¯ã®åªå 床
åã¿ã¹ã¯ã«ã¯ç¬èªã®åªå é äœããããŸãã
åªå 床ã¯ãã¿ã¹ã¯ã®äžå¯æ¬ ã§éåžžã«éèŠãªããããã£ã§ãã äžè¬ã«ãæ°å€ã«åªå é äœãä»ããããšãã§ããŸãã ãããã第äžã«ãæ±çšãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§åªå é äœãä»ããã®ãäžè¬çã§ãïŒããã§ã¯çã«ããªã£ãŠããŸãããååãšããŠã¯ããŸãããå¯èœæ§ããããŸãïŒã第äºã«ããªããžã§ã¯ãæåã®ã¢ãããŒãã¯é¡ååãšå¯æ¥ã«é¢é£ããŠããŸãã ããã€ãã®æœè±¡çãªæ°åã¯ç°¡åã«æ··åãããå¯èœæ§ããããååãä»ãããšãã«ç¹å®ã®ã¿ã€ãã®ãåªå 床ãã«é¢é£ä»ããããšãã§ããŸãã
ãããã£ãŠãäŒçµ±ãå®ãããã«ããããŠå³å¯ãªã¿ã€ãã³ã°ã確å®ã«ããããã«ãMAX MAX RTOSã§ã¯æ¬¡ã®ã¿ã¹ã¯ã®åªå é äœãåºå¥ãããŸãã
enum Priority { PriorityIdle, ///< ( IDLE) PriorityLow, ///< PriorityBelowNormal, ///< PriorityNormal, ///< ( ) PriorityAboveNormal, ///< PriorityHigh, ///< PriorityRealtime, ///< ( ) PriorityMax = MAKS_MAX_TASK_PRIORITY };
ã¿ã¹ã¯åãæ¿ãæé
æ±çšãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ã€ããŠèª¬æããå Žåããã®ã»ã¯ã·ã§ã³ã¯éåžžãµã€ãºãéåžžã«å€§ãããã¡ã«ããºã ã¯ããŒãžã§ã³ããšã«å€ãããããèè ã¯ã¡ã«ããºã ã«ã€ããŠç°¡åã«èª¬æãããšä»ãå ããŠããŸãã ããã¯ãæ±çšãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããã¹ãŠã®ããã»ã¹ã®ãã¹ãŠã®ã¹ã¬ããã®åäœãä¿èšŒããããšãããšããäºå®ã«ãããã®ã§ãã ãªã¢ã«ã¿ã€ã OSã®å Žåããã¹ãŠãã·ã³ãã«ã§ãã ã¿ã¹ã¯ã¯ã©ãŠã³ãããã³ã¢ã«ãŽãªãºã ã䜿çšããŠåãæ¿ããããŸããå³ãå³ã«ç€ºããŸãã 3.ãã®ã¢ã«ãŽãªãºã ã®æ¬è³ªã¯ããªã¹ãã®ã¿ã¹ã¯ãé çªã«å®è¡ãããæåŸã«éãããšãOSããªã¹ãã®å é ã«åãæ¿ããããšã§ãã ãªã¹ãå ã§ãå®è¡ããã¿ã¹ã¯ãéžæãããšããªã¹ãã®æ¬¡ã®ã¿ã¹ã¯ãååŸãããŸãã æºåå®äºç¶æ ã®å Žåãå®è¡ãããŸãã ãããã¯ãããå Žå-次ã®ã¿ã¹ã¯ã«é²ã¿ãŸãã

å³ 3.ã©ãŠã³ãããã³ã¢ã«ãŽãªãºã ã䜿çšããã¿ã¹ã¯ã®åãæ¿ã
æãåªå 床ã®é«ãã¿ã¹ã¯ãå®è¡ãããããšã«æ³šæããŠãã ãããã€ãŸããå®éã®ã·ã¹ãã ã§ã¯è€æ°ã®ãªã¹ããååšããå¯èœæ§ããããŸãã ããšãã°ãPriorityNormalåªå 床ãæã€ã¿ã¹ã¯ã®ãªã¹ããšãPriorityHighåªå 床ãæã€ãªã¹ãã ããã«ããã¹ãŠã®ã¿ã¹ã¯ãåŸ æ©ç¶æ ã«ãªãå Žåãã¹ã±ãžã¥ãŒã©ã¯åžžã«åªå 床ã®é«ããªã¹ãã®ã¿ã¹ã¯ã®ã¿ãå®è¡ããŸãã

å³ 4.ã¿ã¹ã¯1ã6ïŒåªå 床ãé«ãïŒã®å®è¡ãšã¿ã¹ã¯7ã12ã®å®å šãªããŠã³ã¿ã€ã ã®äŸïŒä»äºã®åªå 床ã¯äœãïŒ
ãã ããããã¯ãäžéšã®ã¿ã¹ã¯ãç¡èŠãããããšãæå³ãããã®ã§ã¯ãããŸãããæ£ããèšèšãããããã°ã©ã ã§ã¯ãæéã¯ã©ã³ã¿ã ããã¹ãŠã®ã¿ã¹ã¯ã«è¡ããŸãã åªå 床ã®é«ãã¿ã¹ã¯ã¯ãã§ããã ãé »ç¹ã«ãããã¯ç¶æ ã«ãªãããã«èšèšããå¿ èŠããããŸã-ãªãœãŒã¹ïŒã»ããã©ããã¥ãŒããã®ããŒã¿ãªã©ïŒãåŸ æ©ããŸãã

å³ 5.åªå 床ã®é«ãã¿ã¹ã¯ã¯ãã¹ãŠãããã¯ããããããã¿ã¹ã¯7ã12ïŒåªå 床ãäœãïŒã®å®è¡äŸ
éåžžã®åªå 床ãæã€ã¿ã¹ã¯ã¯äž»åã§ãã 圌ãã¯çµ¶ããå埩çãªã¢ã¯ã·ã§ã³ãå®è¡ããŸãïŒé ãæ©åšãç£èŠããå¶åŸ¡ã¢ã¯ã·ã§ã³ã®å ¥åãæäŸããçµæã衚瀺ããŸãã
éåžžãããäœãåªå 床ãæã€ã¿ã¹ã¯ã¯ãéåžžã®åªå 床ãæã€ã¿ã¹ã¯ã§ããããã¹ãŠãããã¯ç¶æ ã«ãªãå¯èœæ§ãä¿èšŒãããŠããå Žåãããã°ã©ã ã«å ¥åã§ããŸãïŒã€ãŸããYieldé¢æ°ã®åçŽãªåŒã³åºãã§ã¯åœ¹ã«ç«ããªãããããªãœãŒã¹ãåŸ ã€ããé¢æ°ãåŒã³åºãå¿ èŠããããŸãé 延ïŒãã ããçŸåšã®åªå é äœãæã€ãã¹ãŠã®ã¿ã¹ã¯ãã¹ãªãŒãç¶æ ã«ãªãããã«ããŠãã ããïŒã
åªå 床ã®é«ãã¿ã¹ã¯ã®é©çšã®å ·äœäŸã以äžã«ç€ºããŸãã ãé«éãæ©åšãåŠçããããã«èšèšãããŠããŸãã ãããŸã§ã®éãããã€ãã®åºæ¬çãªã«ãŒã«ãèŠããŠããã°ååã§ãã
- æãåªå 床ã®é«ãããã¯ãããŠããªãã¿ã¹ã¯ãå®è¡ãããŸãã
- ã¿ã¹ã¯ã¯æ¬¡ã ã«åã§éžæãããŸãïŒã©ãŠã³ãããã³ã¢ã«ãŽãªãºã ïŒã
- ããã°ã©ãã¯ãåªå 床ã®é«ãã¿ã¹ã¯ãåºæ¬çã«ããã¯ç¶æ ã«ããããšã確èªããå¿ èŠããããŸãã ããããªããšãåªå 床ã®äœãã¿ã¹ã¯ãå®è¡ãããããšã¯ãããŸããã
çé»åæ©èœ
ãã¹ãŠã®ã¿ã¹ã¯ãããã¯ãããç¶æ ã«ããå Žåãããã»ããµã¯äœããããå¿ èŠããããŸããããã§ãªãå Žåã¯ãã¹ãªãŒãç¶æ ã«ããå¿ èŠããããŸãã ã·ã¹ãã ã«ã¯ç¹å¥ãªããªããã»ããµå®æ°ããããåäœã®ãããããéžæã§ããŸãã
MAKS_SLEEP_ON_IDLE
ãã®å®æ°ã1ã®å€ã§å®çŸ©ãããŠããå Žåãã¹ã±ãžã¥ãŒã©ãŒã¯åªå 床ã¬ãã«ã§ã¢ã¯ãã£ããªã¿ã¹ã¯ãèŠã€ããããªããããããã»ããµãŒãã¹ãªãŒãç¶æ ã«ããæ¶è²»é»åãåæžããŸãã å²ã蟌ã¿èŠæ±ïŒã·ã¹ãã ã¿ã€ããŒãå«ãïŒãå°çãããšç®èŠããŸãã å®çŸ©å€ããŒãã®å Žåããã®ãããªå Žåãåäžã®ã¿ã¹ã¯ãå®è¡ããããªãã¬ãŒãã£ã³ã°ã·ã¹ãã èªäœã«ãã£ãŠåŒ·å¶çã«èµ·åãããå¯èœãªéãäœãåªå 床ãèšå®ãããŸãã
for(;;) { #if MAKS_DEBUG ++ IdleTaskCnt; #endif }
éåžžããã³ç¹æš©ã¿ã¹ã¯ã¢ãŒã
MAX MAX RTOSãå®è¡ã§ããçŸåšã®æ©åšã¯ãã¡ã¢ãªä»®æ³åããµããŒãããŠããŸããããä¿è·ã®äžéšã®èŠçŽ ããµããŒãããŠããŸãã ããã«ãããããã°ã©ã ã®ããã€ãã®ãšã©ãŒããã£ããã§ããŸãã ãã«ãã€ã³ã¿ãŒã«ããã¢ã¯ã»ã¹ã®è©Šè¡ãèšé²ããããã«ããã«ã¢ãã¬ã¹ã®é åã®ã¡ã¢ãªãä¿è·ããã®ãäžè¬çã§ãïŒããšãã°ãã¡ã¢ãªãããŒãžã£ãŒãã¡ã¢ãªãå²ãåœãŠãªãã£ãããã«ãã€ã³ã¿ãŒãè¿ãããã§ãã¯ããã«ããã°ã©ã ã䜿çšãéå§ãããªã©ïŒã
ããã«ãNVICããŒããŠã§ã¢ãžã®ã¢ã¯ã»ã¹ããããã¯ããããšã«ããããŠãŒã¶ãŒããã°ã©ã ãå²ã蟌ã¿åªå 床ãå€æŽããã®ãé²ãããšãã§ããŸãã
éåžžãæç®ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãã·ã¥ããå Žåã«ã¡ã¢ãªä¿è·ã«ããã·ã¹ãã ãåäœããç¶ããããšãã§ãããšæžãããŠããŸãããæ©åšã®åäœããµããŒãããããšã«åæããŸããã ããã©ãããããã®ãããªé害ãä¿®æ£ããå Žåã¯ãã§ããã ãæ©ãæ©åšããªãç¶æ ã«ç§»è¡ããåé¡ãéç¥ããå¿ èŠããããŸãã ãã¹ãŠã®å¥åº·ç¶æã®ãã³ãã¯ãæ±çšOSã«ã€ããŠã®ãã®ã§ãããšããã ãã§ãã ãœãªãã£ã¢ãé£ã³åºããŸãã-圌ãã¯é±å±±åŽåè ãç«ã¡äžããŸãããã倧ããªéãã¯ãããŸããã æ©åšã®å Žåãã·ã¹ãã ã¯1ã€ã®ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŸãã å¥ã®å®è¡ã¯äžå¯èœã§ãã ãããŠããµãã·ã¹ãã ã®ããããã®æ éã¯ãã·ã¹ãã ã®æ©æ¢°çãŸãã¯é»æ°çéšåããã©ãã©ã«ãªããšããäºå®ã«ã€ãªããå¯èœæ§ããããŸãã ãã®ãããã§ããã ãæ©ããã¹ãŠãå®å šãªç¶æ ã«ç§»è¡ããåé¡ã«ã€ããŠéçºè ã«éç¥ããå¿ èŠããããŸãã
ããããæåãªãžã§ãŒã¯ãèšãããã«ã飲ã人ã¯å°ãªãããå¿ èŠããããšèšã人ãããã°ããã£ãšé£²ãå¿ èŠããããšèšã人ãããŸããããã¹ãŠãåæãããšããããšã§ããããªãã¯é£²ãå¿ èŠããããŸãã ãŸããããã§ã¯ãããããç®çã®ããã«ãããè¡ããïŒãã¹ãŠã®ã³ã¹ãã§çåå¯èœæ§ã確ä¿ããããå®å šãªã·ã£ããããŠã³ãä¿èšŒããŸãïŒãã¡ã¢ãªãä¿è·ããããšã¯éåžžã«äŸ¿å©ã§ãã
ãããã£ãŠããã®ä¿è·ãæäŸããããã«ãã¢ããªã±ãŒã·ã§ã³ãéåžžã®åäœã«ããããšãã§ããŸãã åæã«ãOSã¯ç¹æš©ã¢ãŒãã§åäœããŸãã
ãã ããMAX MAX RTOSã®äžã§å®è¡ãããã¢ããªã±ãŒã·ã§ã³ã¯éåžžã«åçŽã§ãããããç¹æš©ã¢ãŒãã§å®è¡ããããšãã§ããŸãã ãã®å Žåãã¢ããªã±ãŒã·ã§ã³ããã°ã©ãã¯ã·ã¹ãã ãšåãããã«äœ¿çšã§ããŸãããæ©åšã¯äžæ£ãªã¢ã¯ã·ã§ã³ã远跡ããŸããã
ãŸããã¿ã¹ã¯è¿œå é¢æ°Task :: AddïŒïŒã®åŒæ°ã§ãããæå®ããããšã«ãããç¹æš©ã¢ã¯ã»ã¹ã§åã ã®ã¿ã¹ã¯ãå®è¡ã§ããŸãã ããã«ãæ¡ä»¶ä»ãã³ã³ãã€ã«ãªãã·ã§ã³MAKS_PROFILING_ENABLEDã1ã«èšå®ãããšããã¹ãŠã®ã¿ã¹ã¯ãç¹æš©ã¢ãŒãã§åäœããŸãã
次ã®èšäºã§ã¯ãMaxã§å®è¡ãããæãåçŽãªããã°ã©ã ã®æ§é ã玹ä»ããŸãã