*/
/* constant definitions */
-#define TRUE 1
-#define FALSE 0
-#define POWER_ON 1;
-#define POWER_OFF 0;
+#define GET_TDO 0x20
/* type definitions */
typedef unsigned char u8;
void fx2_init() {
+ /* syncdelay */
+ SYNCDELAY;
+
/* cpu init */
cpu_init();
/* ep1 init */
ep1_init();
+
+ /* jtag init */
+ jtag_init();
}
void main() {
- u8 buf;
+ u8 buf,set;
/* initialize the fx2 */
fx2_init();
while(1) {
if(!(EP1OUTCS&BUSY)) {
buf=EP1OUTBUF[0];
- buf&=0x1c;
- IOD|=buf;
- EP1OUTBC=1;
- }
- if(!(EP1INCS&BUSY)) {
- buf=IOD&0x01?1:0;
- EP1INBUF[0]=buf;
- EP1INBC=1;
+ if(buf!=GET_TDO) {
+ set=(IOD&(~0x1c))|(buf&0x1c);
+ IOD=set;
+ EP1OUTBC=1;
+ }
+ else {
+ while(EP1INCS&BUSY)
+ continue;
+ buf=IOD&0x01?1:0;
+ EP1INBUF[0]=buf;
+ EP1INBC=1;
+ }
}
}