|
|
SLTASK (Simple
& Lightweight Task Manager)
ÀÚü °³¹ßÇÑ ¼øÂ÷Àû 󸮿¡ ÀûÇÕÇÑ ´Ü¼øÇÏ°í °¡º¿î
ŽºÅ© °ü¸® ÇÁ·Î±×·¥ÀÇ ¸íĪÀÔ´Ï´Ù.
¿¹¸¦µé¾î À½½Ä¹° ¾²·¹±â 󸮱âÀÇ
°æ¿ì ¸î °³ÀÇ ¸ðÅÍ, È÷ÅÍ, ¼Ö·¹³ëÀ̵å, »óÅ ǥ½Ã¿ë LED µî ¸¹Àº
Ãâ·Â°ú ¹öư, ¸®¹ÌÆ® ¼¾¼, ¶Ñ²±, ¼¶ø µî ¸¹Àº ÀÔ·Â Á¶°ÇÀÌ ÀÖ½À´Ï´Ù. ƯÈ÷ Ãâ·ÂÀº
´Ü¼øÇÏ°Ô on, off ¸¸ ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ¸î ÃÊ °£°ÝÀ¸·Î ¸ðÅ͸¦ Á¤È¸Àü,
¿ªÈ¸ÀüÇÏ¸é¼ µ¿½Ã¿¡ ¸î Ãʰ£ ¼Ö·¹³ëÀ̵带 on, off ÇÏ´Â µî ½Ã°£¿¡
µû¶ó ¸¹Àº Ãâ·ÂÀ» °¢°¢ ½Ã³ª¸®¿À¿¡ µû¶ó on, off Á¦¾îÇÏ´Â ÀÛ¾÷ÀÌ ÇÊ¿äÇÕ´Ï´Ù.
ÀÌ »Ó¸¸ ¾Æ´Ï¶ó »óÅ¿¡ µû¶ó °¢°¢ on, off Á¦¾î ½Ã°£ÀÌ ´Þ¶ó Áý´Ï´Ù.
¸ÞÀÎ ¸ðÅÍ: Á¤È¸Àü 30ÃÊ -- 2ÃÊ Á¤Áö
-- ¿ªÈ¸Àü 30 ÃÊ -- 2ÃÊ Á¤Áö ¹Ýº¹ µð½ºÅ© ¸ðÅÍ: 10ÃÊ Á¤È¸Àü --
10ÃÊ ¿ªÈ¸Àü ¹èÃâ ¸ðÅÍ: 10ÃÊ Á¤È¸Àü -- 10ÃÊ ¿ªÈ¸Àü ¼Ö·¹³ëÀ̵å:
on 20ÃÊ -- off 10ÃÊ -- on 20ÃÊ -- off 10ÃÊ ... RED LED: 1ÃÊ ¸¶´Ù
±ô¹ÚÀÓ GREEN LED: 2Ãʰ£ on -- 1Ãʰ£ off ¹Ýº¹ ¶Ñ²± ¹× ¼¶ø
¿¸² °¨Áö¿Í ó¸®
±âÁ¸ ÇÁ·Î±×·¡¹Ö ¹æ¹ýÀ¸·Î´Â ¸¹Àº
Á¶°Ç flag¸¦ µÎ°í ¸¹Àº Ãâ·ÂÀ» ½Ã°£¿¡ µû¶ó ÀÏÀÏÈ÷ °ü¸®ÇØ¾ß ÇϹǷΠÇÁ·Î±×·¥ÀÌ º¹ÀâÇØ
Áö¸ç, µð½ºÅ©°¡ Á¦´ë·Î ¿¸®Áö ¾Ê´Â µîÀÇ ¿¡·¯ Á¶°Ç±îÁö ó¸®ÇÏ·Á¸é
´õ´õ¿í º¹ÀâÇØ Áý´Ï´Ù. ±×¿¡ µû¶ó ¹ö±× ¹ß»ý °¡´É¼ºÀÌ ³ô¾ÆÁö°í ³ªÁß¿¡
±â´É ¼öÁ¤ÀÌ ½±Áö ¾Ê¾Æ
À¯Áö º¸¼ö ºñ¿ëÀÌ ´Ã¾î³³´Ï´Ù.
ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇÏ·Á¸é RTOS¸¦
»ç¿ëÇÒ ¼öµµ ÀÖÁö¸¸ ÀÌ ¶ÇÇÑ Å½ºÅ© °ü¸®°¡ ¾î·Æ°í ŽºÅ©°¡ °¢ÀÚ µ¹¾Æ°¡±â
¶§¹®¿¡ À¯±âÀûÀÎ µ¿ÀÛÀ» ÆÄ¾ÇÇϱ⠾î·Á¿ì¸ç ÀÚ¿øÀÌ ºÎÁ·ÇÑ Àú°¡ÀÇ MCU¿¡´Â Àû¿ëÇÏ±â ¾î·Æ½À´Ï´Ù.
µû¶ó¼ ¼øÂ÷Àû 󸮿¡ ÀûÇÕÇÑ Å½ºÅ© °ü¸®ÀÚÀÇ °³¹ß Çʿ伺ÀÌ »ý±é´Ï´Ù.
Ư ¡
- ´Ü¼øÇÑ ±¸Á¶·Î ÀÌÇØÇϱ⠽±°í
À¯Áö º¸¼ö°¡ ¿ëÀÌÇÕ´Ï´Ù.
- Á¶°Ç flag°¡ ÇÊ¿ä ¾øÀ¸¸ç Àüü
Äڵ尡 ÇÑ ´«¿¡ µé¾î¿À±â ¶§¹®¿¡ ¸íÈ®ÇÏ°í ¹ö±×ÀÇ ¿©Áö¸¦ ÁÙ¿©ÁÝ´Ï´Ù.
- ºñ¼±Á¡Çü ¸ÖƼ ŽºÅ·À»
Áö¿øÇÕ´Ï´Ù.
- ¼øÂ÷Àû ½ÇÇàÀ̹ǷΠµð¹ö±ëÀÌ
½±½À´Ï´Ù.
- delay ÇÔ¼ö°¡ ÇÊ¿ä¾ø´Â ±¸Á¶ÀÔ´Ï´Ù.
- °´Ã¼ ÁöÇâÇü ±¸Á¶·Î ±â´ÉÀÇ Ãß°¡
»èÁ¦°¡ ½±½À´Ï´Ù.
- ¸î ¹é¿ø ´ëÀÇ Àú·ÅÇÑ Àú»ç¾ç
MCU¿¡µµ
Àû¿ëÇÒ ¼ö ÀÖ´Â °¡º¿î ±¸Á¶ÀÔ´Ï´Ù.
- ´ÜÁö ±âÁØ Å¸À̸Ӹ¸ Æ÷ÆÃÇϸé
´Ù¸¥ MCU¿¡ ¹Ù·Î Àû¿ë °¡´ÉÇÒ ¸¸Å Æ÷ÆÃÀÌ ½±½À´Ï´Ù.
Àû¿ë ºÐ¾ß
À½½Ä¹° 󸮱â, Àü±â¹ä¼Ü,
º¸ÀÏ·¯ µî state machine°ú ¼øÂ÷Àû ó¸®ÀÇ °¡Àü Á¦Ç° °³¹ß
//------------------------------ // Define all states //------------------------------ enum states
{ ST01_BOOTUP, ST02_POWER_OFF, ST03_POWER_ON, ST04_COVER_OPEN, ST05_WASHING, ST06_CUTTING, ST07_DEHYDRATE, ST08_EXITING, ST09_DRAWER_OPEN, ST10_MANUAL_WASH, MAX_STATES } current_state;
//------------------------------ // Define all inputs //------------------------------ enum events
{ EVT1_POWERKEY, EVT2_COVER_OPEN, EVT3_COVER_CLOSE, EVT4_DRAWER_OPEN, EVT5_DRAWER_CLOSE, EVT6_MANUALWASH_KEY, MAX_EVENTS } new_event;
void (* const state_table[MAX_STATES]) (void) = { st01_bootup_run, // ST01_BOOTUP st02_poweroff_run, // ST02_POWER_OFF st03_poweron_run, // ST03_POWER_ON st04_coveropen_run, // ST04_COVER_OPEN st05_washing_run, // ST05_WASHING st06_cutting_run, // ST06_CUTTING st07_dehydrate_run, // ST07_DEHYDRATE st08_exiting_run, // ST08_EXITING st09_draweropen_run, // ST09_DRAWER_OPEN st10_manualwash_run, // ST10_MANUAL_WASH };
int main(void) { current_state = ST01_BOOTUP;
while(1) { // change state if((current_state >= 0) && (current_state < MAX_STATES)) {
state_table[current_state](); // call the action procedure } else {
// invalid state current_state = ST01_BOOTUP; } } }

FirmwareStudio.zip
(114KB)
[ÀÔ·Â] - Àü¿ø
Ű - ¼öµ¿¼¼Ã´ Ű - Ä¿¹ö - ¼¶ø
[¼¾¼] - µð½ºÅ© ¸ðÅÍ CW ¸®¹ÌÆ®
¼¾¼ - µð½ºÅ© ¸ðÅÍ CCW ¸®¹ÌÆ®
¼¾¼ - ¸ÞÀÎ ¸ðÅÍ °úºÎÇÏ °¨Áö - ¹èÃâ ¸ðÅÍ
CW ¸®¹ÌÆ® ¼¾¼ - ¹èÃâ ¸ðÅÍ
CCW ¸®¹ÌÆ® ¼¾¼ - È÷ÅÍ ¿Âµµ °¨Áö - È÷ÅÍÆÒ È¸Àü °¨Áö
[Ãâ·Â] - Red LED - Green
LED - Blue LED -
¿öÅÍ ¼Ö·¹³ëÀ̵å - µð½ºÅ© ¸ðÅÍ CW ȸÀü - µð½ºÅ© ¸ðÅÍ CCW ȸÀü -
¸ÞÀÎ ¸ðÅÍ CW ȸÀü - ¸ÞÀÎ ¸ðÅÍ CCW ȸÀü - ¹èÃâ ¸ðÅÍ CW
ȸÀü - ¹èÃâ ¸ðÅÍ CCW ȸÀü -
¸ÞÀÎ ÆÒ - È÷ÅÍ ÆÒ - Ä𸵠ÆÒ - È÷ÅÍ -
¹öÀú
|