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.
172 lines
5.8 KiB
172 lines
5.8 KiB
#include "gatectrl.h"
|
|
|
|
static uint8_t s_ch = 1;
|
|
|
|
#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)
|
|
{
|
|
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;
|
|
}
|
|
}
|
|
|
|
void Cal_Init(void)
|
|
{
|
|
uint8_t i;
|
|
|
|
// P4.7 = 0, P15.7 = 0 (�ٸ� ��Ʈ ����!)
|
|
PORT_BIT_SETCLR(P4, 0x80, 0);
|
|
PORT_BIT_SETCLR(P15, 0x80, 0);
|
|
|
|
for (i = 1; i <= 20; i++) {
|
|
Gate_SetByNum(i, 0, 0, 1); // hash=0, anaout=0, check=1
|
|
}
|
|
}
|
|
|
|
void Eol_Init(void)
|
|
{
|
|
uint8_t i;
|
|
|
|
// P4.7 = 1, P15.7 = 0 (�ٸ� ��Ʈ ����!)
|
|
PORT_BIT_SETCLR(P4, 0x80, 1);
|
|
PORT_BIT_SETCLR(P15, 0x80, 0);
|
|
|
|
for (i = 1; i <= 20; i++) {
|
|
Gate_SetByNum(i, 0, 0, 1); // hash=0, anaout=0, check=1
|
|
}
|
|
}
|
|
|
|
void GateCtrl_SelectChannel(uint8_t ch)
|
|
{
|
|
if (ch < 1 || ch > 20) return;
|
|
s_ch = ch;
|
|
}
|
|
|
|
|
|
|