Forum Discussion
Altera_Forum
Honored Contributor
14 years agoHere it is:
JTAG lines connected to pins P1.16,17,18,19
# define TDO_PIN (1<<18) // out
# define TMS_PIN (1<<17) // out
# define TDI_PIN (1<<16) // in
# define TCK_PIN (1<<19) // out
# define JTAG_PINS_MASK (TDO_PIN|TMS_PIN|TDI_PIN|TCK_PIN)
/***************************************************************//**
* Init processor pins.
******************************************************************/
int InitPorts(void)
{
printf("Init JTAG ports.\n");
IO1CLR = 0x02000000;//(unsigned int)(1<<25); // p1.25 led ON
// JTAG
IO1CLR = (JTAG_PINS_MASK);
IO1DIR |= ( (TDO_PIN)|(TMS_PIN)| (TCK_PIN) ); // out
IO1DIR &=~( (TDI_PIN) ); // in
return 0;
}
/***************************************************************//**
* DeInit processor pins.
******************************************************************/
int DeInitPorts(void)
{
printf("De Init JTAG ports.\n");
IO1SET = 0x02000000;//(unsigned int)(1<<25); // p1.25 led OFF
// JTAG
IO1CLR = (JTAG_PINS_MASK);
IO1DIR &=~(JTAG_PINS_MASK); // all in :)
return 0;
}
/******************************************************************/
/* ReadPort (int port input is ignored)
/******************************************************************/
int ReadPort(int port)
{
int data = 0;
data = (IO1PIN & (TDI_PIN))?0x00:0x80; // inversed - nTDO = 0x00 or 0x80
return (data & 0xff);
}
/******************************************************************/
/* WritePort
/******************************************************************/
void WritePort(int port,int data,int buffer_enable)
{
unsigned int pins_to_clr=0,pins_to_set=0;
pins_to_set |= ((port==0)&&(data&0x01)) ? (TCK_PIN) : (0);
pins_to_set |= ((port==0)&&(data&0x02)) ? (TMS_PIN) : (0);
pins_to_set |= ((port==0)&&(data&0x40)) ? (TDO_PIN) : (0);
pins_to_clr = (~pins_to_set)&(JTAG_PINS_MASK);
IO1SET = pins_to_set;
IO1CLR = pins_to_clr;
# define PORTS_DEBUG_PRINT 0
# if PORTS_DEBUG_PRINT
if((port==0) && (data & 0x01)) {printf("\t TCK=1");}else{printf("\t TCK=0");}
if((port==0) && (data & 0x02)) {printf("\t TMS=1");}else{printf("\t TMS=0");}
if((port==0) && (data & 0x40)) {printf("\t nTDO=1");}else{printf("\t nTDO=0");}
# endif
}