anaout.c에서 핀 맵핑을 지원하고 있습니다.
anaout.c
#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; } }
이것도 괜찮은 방식입니다. 다른 방식으로 ANAOUT과 SHARP(#)과 CHECK를 한방에 처리하는 것도 괜찮은 것 같습니다.
헤더 파일에서 20개의 dut대한 ANAOUT, SHARP, CHECK를 리스트로 선언하고 그걸 가져다가 사용하는 방식입니다
static const pin_t DUT_SHARP[DUT_COUNT] = { P153, P152, P151, ... }; static const pin_t DUT_ANAOUT[DUT_COUNT] = { P64, P65, P66, ... }; static const pin_t DUT_CHECK[DUT_COUNT] = { P154, P155, P00, ... };
이걸로 바꾸는 건 어떤지 의견 달아주세요!
No due date set.
This issue currently doesn't have any dependencies.
Deleting a branch is permanent. It CANNOT be undone. Continue?
anaout.c에서 핀 맵핑을 지원하고 있습니다.
anaout.c
이것도 괜찮은 방식입니다. 다른 방식으로 ANAOUT과 SHARP(#)과 CHECK를 한방에 처리하는 것도 괜찮은 것 같습니다.
헤더 파일에서 20개의 dut대한 ANAOUT, SHARP, CHECK를 리스트로 선언하고 그걸 가져다가 사용하는 방식입니다
이걸로 바꾸는 건 어떤지 의견 달아주세요!