#include "delay.h"\r
\r
//-----------------------------------------------------------------------------\r
+// comment out (undefine!) if you don't want PS, AS or OE signals\r
\r
#define HAVE_PS_MODE 1\r
#define HAVE_AS_MODE 1\r
#define HAVE_OE_LED 1\r
\r
+// comment in (define!) if you want outputs disabled when possible\r
+//#define HAVE_OENABLE 1\r
+\r
//-----------------------------------------------------------------------------\r
\r
/* JTAG TCK, AS/PS DCLK */\r
\r
-sbit at 0xA2 TCK; /* Port C.0 */\r
+sbit at 0xA2 TCK; /* Port C.2 */\r
#define bmTCKOE bmBIT2\r
#define SetTCK(x) do{TCK=(x);}while(0)\r
\r
/* JTAG TDI, AS ASDI, PS DATA0 */\r
\r
-sbit at 0xA0 TDI; /* Port C.2 */\r
+sbit at 0xA0 TDI; /* Port C.0 */\r
#define bmTDIOE bmBIT0\r
#define SetTDI(x) do{TDI=(x);}while(0)\r
\r
#define GetTDO(x) TDO\r
\r
/* JTAG ENABLE */\r
-sbit JTAG_EN = 0xA0+7;\r
+sbit JTAG_EN = 0xA7; /* Port C.7 */\r
#define bmJTAG_EN bmBIT7\r
\r
//-----------------------------------------------------------------------------\r
#else\r
\r
#define bmASDOOE 0\r
- #define GetASDO(x) 0\r
+ #define GetASDO(x) 1\r
\r
#endif\r
\r
/* The following code depends on your actual circuit design.\r
Make required changes _before_ you try the code! */\r
\r
+ // set the CPU clock to 48MHz, enable clock output to FPGA\r
+ CPUCS = bmCLKOE | bmCLKSPD1;\r
+\r
+ // put the system in FIFO mode by default\r
+ // internal clock source at 48Mhz, drive output pin, synchronous mode\r
+ // NOTE: Altera USB-Blaster does not work in another mode\r
+ IFCONFIG = bmIFCLKSRC | bm3048MHZ | bmIFCLKOE;\r
+ IFCONFIG |= bmASYNC | bmIFCFG1 | bmIFCFG0;\r
+\r
// set port C output enable (so we can handle the JTAG enable signal)\r
OEC = (1 << 7);\r
\r
// more than 100ma)\r
IOE = (1 << 6);\r
\r
- // set the CPU clock to 48MHz\r
- CPUCS = bmCLKSPD1;\r
-\r
// activate JTAG outputs on Port C\r
OEC = bmTDIOE | bmTCKOE | bmTMSOE | bmJTAG_EN;\r
-\r
- // put the system in FIFO mode by default\r
- // internal clock source at 48Mhz, drive output pin, synchronous mode\r
- // NOTE: Altera USB-Blaster does not work in another mode\r
- IFCONFIG = bmIFCLKSRC | bm3048MHZ | bmIFCLKOE;\r
- IFCONFIG |= bmASYNC | bmIFCFG1 | bmIFCFG0;\r
}\r
\r
void ProgIO_Set_State(unsigned char d)\r
* d.2 => nCE (only #ifdef HAVE_AS_MODE)\r
* d.3 => nCS (only #ifdef HAVE_AS_MODE)\r
* d.4 => TDI\r
- * d.6 => LED / Output Enable\r
+ * d.5 => LED / Output Enable\r
*/\r
\r
SetTCK((d & bmBIT0) ? 1 : 0);\r
\r
unsigned char ProgIO_Set_Get_State(unsigned char d)\r
{\r
- ProgIO_Set_State(d);\r
-\r
- /* Read state of input pins:\r
+ /* Set state of output pins (s.a.)\r
+ * then read state of input pins:\r
*\r
* TDO => d.0\r
* DATAOUT => d.1 (only #ifdef HAVE_AS_MODE)\r
*/\r
\r
+ ProgIO_Set_State(d);\r
return (GetASDO()<<1)|GetTDO();\r
}\r
\r