#include "anaout.h" // ------------------------------------------------------- // Helper macros // ------------------------------------------------------- #define BIT(n) (1u << (n)) // ------------------------------------------------------- // ANAOUT mapping (»ç¿ëÀÚ Á¦°ø ±âÁØ) // ANAOUT_1 : P64 -> P6.4 // ANAOUT_2 : P65 -> P6.5 // ANAOUT_3 : P66 -> P6.6 // ANAOUT_4 : P67 -> P6.7 // // ANAOUT_5 : P44 -> P4.4 // ANAOUT_6 : P43 -> P4.3 // ANAOUT_7 : P42 -> P4.2 // ANAOUT_8 : P41 -> P4.1 // // ANAOUT_9 : P50 -> P5.0 // ANAOUT_10 : P51 -> P5.1 // ANAOUT_11 : P52 -> P5.2 // // ANAOUT_12 : P60 -> P6.0 // ANAOUT_13 : P61 -> P6.1 // // ANAOUT_14 : P72 -> P7.2 // ANAOUT_15 : P73 -> P7.3 // ANAOUT_16 : P75 -> P7.5 // ANAOUT_17 : P74 -> P7.4 // ANAOUT_18 : P76 -> P7.6 // ANAOUT_19 : P77 -> P7.7 // // ANAOUT_20 : P130 -> P13.0 // ------------------------------------------------------- // ±×·ìº° ¸¶½ºÅ©(ºü¸¥ AllLow/Init¿ë) #define P4_ANA_MASK (BIT(4) | BIT(3) | BIT(2) | BIT(1)) // P4.4~P4.1 #define P5_ANA_MASK (BIT(0) | BIT(1) | BIT(2)) // P5.0~P5.2 #define P6_ANA_MASK (BIT(7) | BIT(6) | BIT(5) | BIT(4) | BIT(1) | BIT(0)) // P6.7~P6.4 + P6.1~P6.0 #define P7_ANA_MASK (BIT(7) | BIT(6) | BIT(5) | BIT(4) | BIT(3) | BIT(2)) // P7.7~P7.2 #define P13_ANA_MASK (BIT(0)) // P13.0 void ANAOUT_AllLow(void) { // ÇØ´ç ºñÆ®¸¸ LOW·Î ³»¸² P4 &= (uint8_t)~(uint8_t)P4_ANA_MASK; P5 &= (uint8_t)~(uint8_t)P5_ANA_MASK; P6 &= (uint8_t)~(uint8_t)P6_ANA_MASK; P7 &= (uint8_t)~(uint8_t)P7_ANA_MASK; P13 &= (uint8_t)~(uint8_t)P13_ANA_MASK; } void ANAOUT_Init(void) { // Ãâ·Â ¼³Á¤: PM bit = 0 ÀÌ Ãâ·Â PM4 &= (uint8_t)~(uint8_t)P4_ANA_MASK; PM5 &= (uint8_t)~(uint8_t)P5_ANA_MASK; PM6 &= (uint8_t)~(uint8_t)P6_ANA_MASK; PM7 &= (uint8_t)~(uint8_t)P7_ANA_MASK; // Ãʱ⠻óÅÂ: ÀüºÎ LOW ANAOUT_AllLow(); } void ANAOUT_Select(uint8_t ch) { if (ch < ANAOUT_CH_MIN || ch > ANAOUT_CH_MAX) { ANAOUT_AllLow(); return; } ANAOUT_AllLow(); __nop(); __nop(); __nop(); __nop(); // break-before-make // 2) ¼±ÅÃµÈ Ã¤³Î¸¸ HIGH switch (ch) { case 1: P6 |= (uint8_t)BIT(4); break; // P64 case 2: P6 |= (uint8_t)BIT(5); break; // P65 case 3: P6 |= (uint8_t)BIT(6); break; // P66 case 4: P6 |= (uint8_t)BIT(7); break; // P67 case 5: P4 |= (uint8_t)BIT(4); break; // P44 case 6: P4 |= (uint8_t)BIT(3); break; // P43 case 7: P4 |= (uint8_t)BIT(2); break; // P42 case 8: P4 |= (uint8_t)BIT(1); break; // P41 case 9: P5 |= (uint8_t)BIT(0); break; // P50 case 10: P5 |= (uint8_t)BIT(1); break; // P51 case 11: P5 |= (uint8_t)BIT(2); break; // P52 case 12: P6 |= (uint8_t)BIT(0); break; // P60 case 13: P6 |= (uint8_t)BIT(1); break; // P61 case 14: P7 |= (uint8_t)BIT(2); break; // P72 case 15: P7 |= (uint8_t)BIT(3); break; // P73 case 16: P7 |= (uint8_t)BIT(5); break; // P75 case 17: P7 |= (uint8_t)BIT(4); break; // P74 case 18: P7 |= (uint8_t)BIT(6); break; // P76 case 19: P7 |= (uint8_t)BIT(7); break; // P77 case 20: P13 |= (uint8_t)BIT(0); break; // P130 default: // ¹üÀ§ ¹ÛÀ̸é Àüü LOW À¯Áö break; } }