You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
3.3 KiB
111 lines
3.3 KiB
|
12 hours ago
|
#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;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|