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.

173 lines
5.8 KiB

2 weeks ago
#include "gatectrl.h"
static uint8_t s_ch = 1;
1 week ago
#define PORT_BIT_SETCLR(PORT, MASK, ON) \
do { \
if (ON) { (PORT) |= (uint8_t)(MASK); } \
else { (PORT) &= (uint8_t)~(MASK); } \
} while (0)
void Gate_SetByNum(uint8_t ch, uint8_t hash_on, uint8_t anaout_on, uint8_t check_on)
2 weeks ago
{
1 week ago
switch (ch)
{
case 1: /* HASH P15.3, ANAOUT P6.4, CHECK P15.4 */
PORT_BIT_SETCLR(P15, 0x08, hash_on); // P15.3
PORT_BIT_SETCLR(P6, 0x10, anaout_on); // P6.4
PORT_BIT_SETCLR(P15, 0x10, check_on); // P15.4
break;
case 2: /* P15.2, P6.5, P15.5 */
PORT_BIT_SETCLR(P15, 0x04, hash_on); // P15.2
PORT_BIT_SETCLR(P6, 0x20, anaout_on); // P6.5
PORT_BIT_SETCLR(P15, 0x20, check_on); // P15.5
break;
case 3: /* P15.1, P6.6, P0.0 */
PORT_BIT_SETCLR(P15, 0x02, hash_on); // P15.1
PORT_BIT_SETCLR(P6, 0x40, anaout_on); // P6.6
PORT_BIT_SETCLR(P0, 0x01, check_on); // P0.0
break;
case 4: /* P15.0, P6.7, P15.6 */
PORT_BIT_SETCLR(P15, 0x01, hash_on); // P15.0
PORT_BIT_SETCLR(P6, 0x80, anaout_on); // P6.7
PORT_BIT_SETCLR(P15, 0x40, check_on); // P15.6
break;
case 5: /* P12.0, P4.4, P3.0 */
PORT_BIT_SETCLR(P12, 0x01, hash_on); // P12.0
PORT_BIT_SETCLR(P4, 0x10, anaout_on); // P4.4
PORT_BIT_SETCLR(P3, 0x01, check_on); // P3.0
break;
case 6: /* P12.5, P4.3, P3.2 */
PORT_BIT_SETCLR(P12, 0x20, hash_on); // P12.5
PORT_BIT_SETCLR(P4, 0x08, anaout_on); // P4.3
PORT_BIT_SETCLR(P3, 0x04, check_on); // P3.2
break;
case 7: /* P0.1, P4.2, P0.3 */
PORT_BIT_SETCLR(P0, 0x02, hash_on); // P0.1
PORT_BIT_SETCLR(P4, 0x04, anaout_on); // P4.2
PORT_BIT_SETCLR(P0, 0x08, check_on); // P0.3
break;
case 8: /* P12.6, P4.1, P7.0 */
PORT_BIT_SETCLR(P12, 0x40, hash_on); // P12.6
PORT_BIT_SETCLR(P4, 0x02, anaout_on); // P4.1
PORT_BIT_SETCLR(P7, 0x01, check_on); // P7.0
break;
case 9: /* P12.7, P5.0, P7.1 */
PORT_BIT_SETCLR(P12, 0x80, hash_on); // P12.7
PORT_BIT_SETCLR(P5, 0x01, anaout_on); // P5.0
PORT_BIT_SETCLR(P7, 0x02, check_on); // P7.1
break;
case 10: /* P0.2, P5.1, P10.4 */
PORT_BIT_SETCLR(P0, 0x04, hash_on); // P0.2
PORT_BIT_SETCLR(P5, 0x02, anaout_on); // P5.1
PORT_BIT_SETCLR(P10, 0x10, check_on); // P10.4
break;
case 11: /* P10.3, P5.2, P10.5 */
PORT_BIT_SETCLR(P10, 0x08, hash_on); // P10.3
PORT_BIT_SETCLR(P5, 0x04, anaout_on); // P5.2
PORT_BIT_SETCLR(P10, 0x20, check_on); // P10.5
break;
case 12: /* P10.2, P6.0, P10.6 */
PORT_BIT_SETCLR(P10, 0x04, hash_on); // P10.2
PORT_BIT_SETCLR(P6, 0x01, anaout_on); // P6.0
PORT_BIT_SETCLR(P10, 0x40, check_on); // P10.6
break;
case 13: /* P10.1, P6.1, P10.7 */
PORT_BIT_SETCLR(P10, 0x02, hash_on); // P10.1
PORT_BIT_SETCLR(P6, 0x02, anaout_on); // P6.1
PORT_BIT_SETCLR(P10, 0x80, check_on); // P10.7
break;
case 14: /* P10.0, P7.2, P5.7 */
PORT_BIT_SETCLR(P10, 0x01, hash_on); // P10.0
PORT_BIT_SETCLR(P7, 0x04, anaout_on); // P7.2
PORT_BIT_SETCLR(P5, 0x80, check_on); // P5.7
break;
case 15: /* P9.7, P7.3, P5.6 */
PORT_BIT_SETCLR(P9, 0x80, hash_on); // P9.7
PORT_BIT_SETCLR(P7, 0x08, anaout_on); // P7.3
PORT_BIT_SETCLR(P5, 0x40, check_on); // P5.6
break;
case 16: /* P9.6, P7.5, P5.5 */
PORT_BIT_SETCLR(P9, 0x40, hash_on); // P9.6
PORT_BIT_SETCLR(P7, 0x20, anaout_on); // P7.5
PORT_BIT_SETCLR(P5, 0x20, check_on); // P5.5
break;
case 17: /* P9.5, P7.4, P5.4 */
PORT_BIT_SETCLR(P9, 0x20, hash_on); // P9.5
PORT_BIT_SETCLR(P7, 0x10, anaout_on); // P7.4
PORT_BIT_SETCLR(P5, 0x10, check_on); // P5.4
break;
case 18: /* P9.4, P7.6, P1.0 */
PORT_BIT_SETCLR(P9, 0x10, hash_on); // P9.4
PORT_BIT_SETCLR(P7, 0x40, anaout_on); // P7.6
PORT_BIT_SETCLR(P1, 0x01, check_on); // P1.0
break;
case 19: /* P9.3, P7.7, P1.3 */
PORT_BIT_SETCLR(P9, 0x08, hash_on); // P9.3
PORT_BIT_SETCLR(P7, 0x80, anaout_on); // P7.7
PORT_BIT_SETCLR(P1, 0x08, check_on); // P1.3
break;
case 20: /* P9.2, P13.0, P1.4 */
PORT_BIT_SETCLR(P9, 0x04, hash_on); // P9.2
PORT_BIT_SETCLR(P13, 0x01, anaout_on); // P13.0
PORT_BIT_SETCLR(P1, 0x10, check_on); // P1.4
break;
default:
break;
}
2 weeks ago
}
1 week ago
void Cal_Init(void)
2 weeks ago
{
1 week ago
uint8_t i;
2 weeks ago
1 week ago
// P4.7 = 0, P15.7 = 0 (�ٸ� ��Ʈ ����!)
PORT_BIT_SETCLR(P4, 0x80, 0);
PORT_BIT_SETCLR(P15, 0x80, 0);
2 weeks ago
1 week ago
for (i = 1; i <= 20; i++) {
Gate_SetByNum(i, 0, 0, 1); // hash=0, anaout=0, check=1
}
2 weeks ago
}
1 week ago
void Eol_Init(void)
2 weeks ago
{
1 week ago
uint8_t i;
2 weeks ago
1 week ago
// P4.7 = 1, P15.7 = 0 (�ٸ� ��Ʈ ����!)
PORT_BIT_SETCLR(P4, 0x80, 1);
PORT_BIT_SETCLR(P15, 0x80, 0);
2 weeks ago
1 week ago
for (i = 1; i <= 20; i++) {
Gate_SetByNum(i, 0, 0, 1); // hash=0, anaout=0, check=1
}
2 weeks ago
}
void GateCtrl_SelectChannel(uint8_t ch)
{
if (ch < 1 || ch > 20) return;
s_ch = ch;
}