Initial check in

This commit is contained in:
2026-01-03 19:05:48 +01:00
commit 1254878a31
253 changed files with 30484 additions and 0 deletions
+191
View File
@@ -0,0 +1,191 @@
#ifndef TRI_H
#define TRI_H
// trinity specific (must be moved somewhere else)
#define bmCap0_I2C 0x01 // has I2C bus
#define bmCap0_SER 0x02 // has serial ports (2)
#define bmCap0_EPR 0x04 // has flash EEPROM
#define bmCap0_RAM 0x08 // has 32k SRAM
#define bmCap0_JTG 0x10 // has standard JTAG
#define bmCap1_LED 0x01
#define bmCap1_LCD 0x02
#define bmCap1_EXP 0x04
#define bmCap1_LXP 0x08
#define bmCap1_SDR 0x10
// ================================================================================================
// LCD stuff
// ================================================================================================
#ifdef LCD_7565
#include <lcd\lcd_7565r.h>
#endif
#ifdef LCD_44780
#include <lcd\lcd_44780.h>
#endif
// ================================================================================================
// USB interrupt hooks
// ================================================================================================
extern void (*sudav) (void);
extern void (*ep0ack) (void); // sudav used instead
extern void (*ep0out) (void); // sudav used instead
extern void (*ep0in ) (void); // sudav used instead
extern void (*ep1out) (void);
extern void (*ep1in ) (void);
extern void (*ep2inout) (void); // JTAG host->device
extern void (*ep4inout) (void); // JTAG device->host
extern void (*ep6inout) (void); // for slave fifo or gpif highspeed transfer
extern void (*ep8inout) (void); // for slave fifo or gpif highspeed transfer
extern bool (*DR_VendorCommand)();
// ================================================================================================
// global variables
// ================================================================================================
extern xdata BYTE devSerialNumber [8];
extern xdata BYTE devCapabilities [8];
extern xdata BYTE devIdentifier [8];
extern BYTE xdata sig[2];
extern BYTE xdata crc[2];
extern xdata DEVICE_DSCR xdata *pDscrDevice;
extern xdata DEVICEQUAL_DSCR xdata *pDscrDeviceQual;
extern xdata CONFIG_DSCR xdata *pDscrMainConfig;
extern xdata CONFIG_DSCR xdata *pDscrOthrConfig;
extern xdata CONFIG_DSCR xdata *pDscrFsConfig;
extern xdata CONFIG_DSCR xdata *pDscrHsConfig;
extern data STRING_DSCR xdata *pDscrString;
// ============================================================================
// ============================================================================
// ============================================================================
//
// IMPORTANT !!!!
//
// Keep this include file synchronized with jtag_state.s51 and Delphi
// sources !!!
//
// ============================================================================
// ============================================================================
// ============================================================================
// ============================================================================
// JTAG states (Lattice VME values)
// ============================================================================
#define TS_RESET 0
#define TS_IDLE 1
#define TS_IRPAUSE 2
#define TS_DRPAUSE 3
#define TS_IRSHIFT 4
#define TS_DRSHIFT 5
#define TS_DRCAPT 6
#define TS_IREXIT1 7
#define TS_DREXIT1 8
// ============================================================================
//
// ENDPOINT 0 request codes
//
// reserved by cypress:
// 0x00 - 0x0C
// 0xA0 - 0xAF
//
// ============================================================================
// ----------------------------------------------------------------------------
// JTAG commands 0xC0 - 0xCF
// ----------------------------------------------------------------------------
// interface commands
// -------------------------------
#define CMD_JTAG_INIT 0xC0 // initialize JTAG interface
#define CMD_JTAG_RESET 0xC1 // reset JTAG interface
#define CMD_JTAG_ENABLE 0xC2 // enable physical I/O
#define CMD_JTAG_STATUS 0xC3 // get JTAG status
// SVF,VME,... commands
// -------------------------------
#define CMD_JTAG_ENDIR 0xC8 //
#define CMD_JTAG_ENDDR 0xC9 //
#define CMD_JTAG_STATE 0xCA //
#define CMD_JTAG_TRST 0xCB //
// -------------------------------
#define CMD_JTAG_TEST 0xCF //
// ----------------------------------------------------------------------------
// Trinity configuration commands 0xE0 - 0xE7
// ----------------------------------------------------------------------------
#define CMD_TRI_CAPS 0xE0 // get/set trinity board capabilities
#define CMD_TRI_SERIAL 0xE1 // get/set trinity board serial
#define CMD_TRI_IDENTIFIER 0xE2 // get/set trinity board identifier
// ----------------------------------------------------------------------------
// Trinity base peripheral commands 0xD0 - 0xDF
// ----------------------------------------------------------------------------
#define CMD_TRI_IIC 0xD0 // IIC read/write
#define CMD_TRI_SER 0xD8 // serial read/write
// ----------------------------------------------------------------------------
// LCD/LED commands
// ----------------------------------------------------------------------------
#define CMD_LCD_LED 0x40 //
#define CMD_LCD_CLS 0x50 //
#define CMD_LCD_GOTOXY 0x51 //
#define CMD_LCD_PUTC 0x52 //
#define CMD_LCD_PUTS 0x53 //
// =============================================================================
//
// ENDPOINT 1 request codes
//
//
// =============================================================================
#define CMD_IIC_WRITE 0x00 // IIC write
#define CMD_IIC_READ 0x00 // IIC read
#define CMD_IIC_READ_RSW 0x01 // IIC read w/ repeated start cond. 16
#define CMD_IIC_READ_RSB 0x02 // IIC read w/ repeated start cond. 8
#define CMD_IIC_WAIT 0x1F // wait for a device
// (e.g: wait for eeprom write finish)
#define CMD_EEP_WRITE 0x20 // EEPROM write
#define CMD_EEP_READ 0x20 // EEPROM read
// =============================================================================
//
// ENDPOINT 2 request codes
//
// =============================================================================
// -----------------------------------------------------------------------------
// JTAG commands 0xC0 - 0xCF
//
// These commands may transfer huge amount of data or take long time to run,
// so they are implemented as EP2 commands.
// ----------------------------------------------------------------------------
// interface commands
// -------------------------------
#define CMD_JTAG_SCAN 0xC0 // scan JTAG chain
// SVF,VME,... commands
// -------------------------------
#define CMD_JTAG_SIR 0xC1 // write/read
#define CMD_JTAG_SDR 0xC2 // write/read
#define CMD_JTAG_RUN 0xC3 //
#define CMD_JTAG_SDW 0xC4 // write only
#endif
+9
View File
@@ -0,0 +1,9 @@
#include <fx2.h>
#include <tri.h>
extern bool tri_command(void);
void tri_boot(void)
{
DR_VendorCommand = tri_command;
}
+113
View File
@@ -0,0 +1,113 @@
#include <fx2.h>
#include <fx2_regs.h>
#include <fx2_i2c.h>
#include <tri.h>
extern xdata BYTE devSerialNumber [];
extern xdata BYTE devCapabilities [];
extern xdata BYTE devIdentifier [];
xdata i2c_buffer[64];
// ================================================================================================
// tri_command
//
// Common trinity commands implementation. The functions are:
//
// - read serial number
// - read capabilities
// - read identifier
// - iic read
// - eeprom read (todo)
//
// - write identifier
// - iic write
// - eeprom write (todo)
//
// ================================================================================================
bool tri_command()
{
bool result = true;
bit dir = (SETUPDAT[0] & 0x80) ? 1 : 0;
BYTE cmd = SETUPDAT[1]; // (SETUPDAT[1] & 0x7F);
PSUDAV sud = (PSUDAV)SETUPDAT;
// ----------------------------------------------------
// IN command device -> host
// ----------------------------------------------------
if(dir)
{
switch(sud->Request)
{
// --------------------------------------------
// Get Serial Number
// --------------------------------------------
case CMD_TRI_SERIAL:
SUDPTRH = MSB(devSerialNumber);
SUDPTRL = LSB(devSerialNumber);
break;
// --------------------------------------------
// Get Capabilities
// --------------------------------------------
case CMD_TRI_CAPS:
SUDPTRH = MSB(devCapabilities);
SUDPTRL = LSB(devCapabilities);
break;
// --------------------------------------------
// Get Identifier
// --------------------------------------------
case CMD_TRI_IDENTIFIER:
SUDPTRH = MSB(devIdentifier);
SUDPTRL = LSB(devIdentifier);
break;
// --------------------------------------------
// I2C read
// --------------------------------------------
case CMD_TRI_IIC:
break;
// --------------------------------------------
// default (invalid command)
// --------------------------------------------
default:
// result = false;
break;
}
}
// ----------------------------------------------------
// OUT command host -> device
// ----------------------------------------------------
else
{
switch(cmd)
{
// --------------------------------------------
// Set Identifier
// --------------------------------------------
case CMD_TRI_IDENTIFIER:
break;
// --------------------------------------------
// default (invalid command)
// --------------------------------------------
default:
// result = false;
break;
}
}
return result;
}
+349
View File
@@ -0,0 +1,349 @@
#include <fx2.h>
#include <fx2_regs.h>
#include <fx2_i2c.h>
#include <fx2_eeprom.h>
#include <fx2_usart.h>
#include <fx2_syncdelay.h>
#include <tri.h>
STRING_DSCR xdata * GetStringDscr( BYTE index);
extern void tri_sudav( void);
extern void tri_ep1out( void);
// ================================================================================================
// tri_conf
// ================================================================================================
void tri_conf()
{
int i;
#ifdef LCD_7565
// ------------------------------------------------------------------------
// For LCD (7565r), the following pins are used for LCD interface:
//
// RST - PD.6
// CS - PD.5
// A0 - PD.4
// SCL - PD.3
// SI - PD.1
// ------------------------------------------------------------------------
IOD = 0x00;
OED = 0xFF;
#endif
#ifdef LCD_44780
// ------------------------------------------------------------------------
// LED and LCD display
//
// bit dir init function
// ------------------------------------------
// PD.0 - - (FPGA)
//
// PD.1 out 0 LCD R/W
// PD.2 out 0 LCD R/S
// PD.3 out 0 LCD E
//
// PD.4 out 0 LED 0
// PD.5 out 0 LED 1
// PD.6 out 0 LED 2
// PD.7 out 0 LED 3
//
// PE.0 out 0 LCD D0
// PE.1 out 0 LCD D1
// PE.2 out 0 LCD D2
// PE.3 out 0 LCD D3
// PE.4 out 0 LCD D4
// PE.5 out 0 LCD D5
// PE.6 out 0 LCD D6
// PE.7 out 0 LCD D7
//
// ------------------------------------------------------------------------
IOD = 0x00; // PD[1,2,3] lcd 44780 ctrl PD[4,5,6,7] leds
IOE = 0x00; // lcd 44780 data
OEE = 0xFF; //
OED = 0xFE; //
#endif
#ifdef DEBUG
lcd_init();
lcd_cls();
lcd_gotoxy(1,1);
lcd_putc('X');
lcd_gotoxy(0,0);
#endif
// ========================================================================
//
// USB Descriptor Tables
//
// ========================================================================
pDscrString = (STRING_DSCR xdata *)&DscrString;
pDscrDevice = (DEVICE_DSCR xdata *)&DscrDevice;
pDscrDeviceQual = (DEVICEQUAL_DSCR xdata *)&DscrDeviceQual;
pDscrHsConfig = (CONFIG_DSCR xdata *)&DscrHsConfig;
pDscrFsConfig = (CONFIG_DSCR xdata *)&DscrFsConfig;
pDscrMainConfig = pDscrHsConfig;
pDscrOthrConfig = pDscrFsConfig;
pDscrMainConfig->type = DSCR_CONFIG;
pDscrOthrConfig->type = DSCR_OTHERSPEED;
// ========================================================================
//
// EP1
//
// ========================================================================
EP1OUTCFG = 0xB0; SYNCDELAY; // valid, out, bulk, 64, 1x
EP1INCFG = 0xB0; SYNCDELAY; // valid, in, bulk, 64, 1x
// ------------------------------------------------------------------------
// EP1 usb interrupt handlers
// ------------------------------------------------------------------------
ep1out = tri_ep1out;
ep1in = 0; // not needed
// --------------------------------------------------------------
// Out endpoints do not come up armed.
// Arm the EP1OUT endpoint by writing the byte count.
// --------------------------------------------------------------
EP1OUTBC = 0x40; SYNCDELAY; // arm EP1 output endpoint
// --------------------------------------------------------------
// Enable EP1 interrupts
// --------------------------------------------------------------
EPIE |= (bmEP1IN | bmEP1OUT);
// ========================================================================
// Enable INT2 and INT4 autovectoring
// ------------------------------------------------------------------------
INTSETUP |= (bmAV2EN | bmAV4EN);
// ------------------------------------------------------------------------
// EP0 USB interrupt handlers
// ------------------------------------------------------------------------
sudav = tri_sudav;
// ------------------------------------------------------------------------
// Enable interrupts
// ------------------------------------------------------------------------
USB_IRQ_ENABLE(); // Enable USB interrupts
RSM_IRQ_ENABLE(); // Enable Wake-up/resume interrupt
// ------------------------------------------------------------------------
// Enable USB interrupts
// ------------------------------------------------------------------------
USBIE |= bmSUDAV |
bmSUTOK |
bmSUSP |
bmURES |
bmHSGRANT;
// ========================================================================
//
// I2C
//
// ========================================================================
fx2_i2c_init();
// ========================================================================
//
// Read configuration data from eeprom
//
// ========================================================================
EA = 1;
// FX2_EEPROM_Read( 511, 0, 2, sig );
// FX2_EEPROM_Read( 511, 2, 8, devSerialNumber );
// FX2_EEPROM_Read( 511, 10, 8, devCapabilities );
// FX2_EEPROM_Read( 511, 18, 8, devIdentifier );
// FX2_EEPROM_Read( 511, 30, 2, crc );
// ------------------------------------------------------------------------
// check data
// ------------------------------------------------------------------------
// ------------------------------------------------------------------------
// if data is corrupt, clear the configuration variables.
// ------------------------------------------------------------------------
for( i=0; i<8; i++)
{
devCapabilities [i] = 0;
devSerialNumber [i] = 0;
devIdentifier [i] = 0;
}
devSerialNumber[0] = 'T';
devSerialNumber[1] = '1';
devCapabilities[0] |= bmCap0_I2C;
devCapabilities[0] |= bmCap0_EPR;
/*
buf[0] = 0x33;
buf[1] = 0x75;
buf[2] = 0xEF;
buf[3] = 0xAA;
buf[4] = 0x30;
buf[5] = 0x31;
buf[6] = 0x32;
buf[7] = 0x33;
dly[0] = 1;
dly[1] = 0;
dly[2] = 0;
dly[3] = 0;
dly[4] = 1;
dly[5] = 0;
dly[6] = 4;
dly[7] = 0;
fx2_usart_init( 9600, uc8e1);
fx2_usart_send( 4, buf, dly);
fx2_usart_send( 4, &buf[4], &dly[4]);
// SBUF0 = 0xaa;
// SBUF1 = 0x31;
// fx2_i2c_read( 0x55, 3, buf);
// fx2_i2c_write( 0x55, 5, buf);
*/
}
// ================================================================================================
// ================================================================================================
// ================================================================================================
//
// LCD 7565r support
//
// ================================================================================================
// ================================================================================================
// ================================================================================================
#ifdef LCD_7565
#define PIN_RST PD6
#define PIN_CS PD5
#define PIN_A0 PD4
#define PIN_SCL PD3
#define PIN_SI PD1
// ------------------------------------------------------------------------------------------------
// lcd init
// ------------------------------------------------------------------------------------------------
void lcd_7565r_init(void)
{
PIN_CS = 1; // unselect the chip
PIN_RST = 0; // RST
FX2_Delay(10); // delay 10 ms
PIN_RST = 1; // release RST line
FX2_Delay(1); // delay 1 ms
PIN_CS = 0; // select the chip
}
// ------------------------------------------------------------------------------------------------
// lcd deactivate
// ------------------------------------------------------------------------------------------------
void lcd_7565r_deactivate(void)
{
PIN_RST = 1; // make sure reset line is released
PIN_CS = 0; // unselect display
PIN_A0 = 0; //
PIN_SI = 0; //
PIN_SCL = 0; //
}
// ------------------------------------------------------------------------------------------------
// lcd send
// ------------------------------------------------------------------------------------------------
void lcd_7565r_send( BYTE d, bit a0)
{
BYTE i;
PIN_A0 = 0;
for( i=0; i<8; i++)
{
PIN_SI = (d & (1 << (7-i))) ? 1 : 0;
PIN_A0 = (i == 7) ? a0 : 0;
PIN_SCL = 1;
PIN_SCL = 0;
}
}
#endif
// ================================================================================================
// ================================================================================================
// ================================================================================================
//
// LCD 44780 support
//
// ================================================================================================
// ================================================================================================
// ================================================================================================
#ifdef LCD_44780
#define LED_3 PD7
#define LED_2 PD6
#define LED_1 PD5
#define LED_0 PD4
#define LCD_E PD3
#define LCD_RS PD2
#define LCD_RW PD1
#define LCD_DATA IOE
// ------------------------------------------------------------------------------------------------
// lcd_4478_write_led
// ------------------------------------------------------------------------------------------------
void lcd_44780_write_led( BYTE n, BYTE v)
{
switch(n)
{
case 0: LED_0 = (v) ? 1 : 0; break;
case 1: LED_1 = (v) ? 1 : 0; break;
case 2: LED_2 = (v) ? 1 : 0; break;
case 3: LED_3 = (v) ? 1 : 0; break;
}
}
// ------------------------------------------------------------------------------------------------
// lcd_44780_write_ctrl
// ------------------------------------------------------------------------------------------------
void lcd_44780_write_ctrl( unsigned char value)
{
LCD_E = 1;
LCD_DATA = value;
LCD_E = 0;
LCD_RW = 0;
LCD_RS = 0;
}
// ------------------------------------------------------------------------------------------------
// lcd_44780_write_data
// ------------------------------------------------------------------------------------------------
void lcd_44780_write_data( unsigned char value)
{
LCD_RW = 0;
LCD_RS = 1;
LCD_E = 1;
LCD_DATA = value;
LCD_E = 0;
LCD_RW = 0;
LCD_RS = 0;
}
#endif
+309
View File
@@ -0,0 +1,309 @@
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;
;; File : fx2_dscr.asm
;; Contents : This file contains descriptor data tables.
;;
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DSCR_DEVICE equ 1 ;; Descriptor type: Device
DSCR_CONFIG equ 2 ;; Descriptor type: Configuration
DSCR_STRING equ 3 ;; Descriptor type: String
DSCR_INTRFC equ 4 ;; Descriptor type: Interface
DSCR_ENDPNT equ 5 ;; Descriptor type: Endpoint
DSCR_DEVQUAL equ 6 ;; Descriptor type: Device Qualifier
ET_CONTROL equ 0 ;; Endpoint type: Control
ET_ISO equ 1 ;; Endpoint type: Isochronous
ET_BULK equ 2 ;; Endpoint type: Bulk
ET_INT equ 3 ;; Endpoint type: Interrupt
DSCR_DEVICE_LEN equ 18
DSCR_CONFIG_LEN equ 9
DSCR_INTRFC_LEN equ 9
DSCR_ENDPNT_LEN equ 7
DSCR_DEVQUAL_LEN equ 10
DIR_OUT equ 0
DIR_IN equ 080H
PUBLIC DscrDevice
PUBLIC DscrDeviceQual
PUBLIC DscrHsConfig
PUBLIC DscrFsConfig
PUBLIC DscrString
DSCR SEGMENT CODE PAGE
rseg DSCR
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;
;; Device Descriptor
;;
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DscrDevice:
db DSCR_DEVICE_LEN ;; Descriptor length
db DSCR_DEVICE ;; Decriptor type
db 00 ;; Specification Version (BCD) (L)
db 02 ;; Specification Version (BCD) (H)
db 0FFH ;; Device class
db 0FFH ;; Device sub-class
db 0FFH ;; Device sub-sub-class
db 64 ;; Maximum packet size for EP0
db 0D0h ;; Vendor ID (L)
db 016h ;; Vendor ID (H)
db 012h ;; Product ID (L)
db 007h ;; Product ID (H)
db 00h ;; Product version ID (L)
db 00h ;; Product version ID (H)
db 1 ;; Manufacturer string index
db 2 ;; Product string index
db 0 ;; Serial number string index
db 1 ;; Number of configurations
DscrDeviceQual:
db DSCR_DEVQUAL_LEN ;; Descriptor length
db DSCR_DEVQUAL ;; Decriptor type
dw 0002H ;; Specification Version (BCD)
db 0FFH ;; Device class
db 0FFH ;; Device sub-class
db 0FFH ;; Device sub-sub-class
db 64 ;; Maximum packet size for other speed
db 1 ;; Number of configurations
db 0 ;; Reserved
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;
;; Full Speed Configuration (DEFAULT)
;;
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DSCR_FS SEGMENT CODE PAGE
rseg DSCR_FS
DscrFsConfig:
;; ====================================================================
;; Configuration Descriptor
;; ====================================================================
db DSCR_CONFIG_LEN ;; Descriptor length
db DSCR_CONFIG ;; Descriptor type
db (DscrFsConfigEnd-DscrFsConfig) mod 256 ;; Total Length (LSB)
db (DscrFsConfigEnd-DscrFsConfig) / 256 ;; Total Length (MSB)
db 1 ;; Number of interfaces
db 9 ;; Configuration number
db 0 ;; Configuration string
db 01000000b ;; Attributes (b7 - buspwr, b6 - selfpwr, b5 - rwu)
db 50 ;; Power requirement (div 2 ma)
;; ====================================================================
;; Interface 0, Alternate Setting 0
;; ====================================================================
db DSCR_INTRFC_LEN ;; Descriptor length
db DSCR_INTRFC ;; Descriptor type
db 0 ;; Zero-based index of this interface
db 0 ;; Alternate setting
db 2 ;; Number of end points
db 0ffH ;; Interface class
db 0ffH ;; Interface sub class
db 0ffH ;; Interface sub sub class
db 0 ;; Interface descriptor string index
;; --------------------------------------------------------------------
;; Endpoint Descriptor 01 (64 bytes bulk mode)
;; --------------------------------------------------------------------
db DSCR_ENDPNT_LEN ;; Descriptor length
db DSCR_ENDPNT ;; Descriptor type
db 01H + DIR_OUT ;; Endpoint number, and direction
db ET_BULK ;; Endpoint type
db 40H ;; Maximum packet size (LSB)
db 00H ;; Maximum packet size (MSB)
db 00H ;; Polling interval
;; --------------------------------------------------------------------
;; Endpoint Descriptor 81 (64 bytes bulk mode)
;; --------------------------------------------------------------------
db DSCR_ENDPNT_LEN ;; Descriptor length
db DSCR_ENDPNT ;; Descriptor type
db 01H + DIR_IN ;; Endpoint number, and direction
db ET_BULK ;; Endpoint type
db 40H ;; Maximum packet size (LSB)
db 00H ;; Maximum packet size (MSB)
db 00H ;; Polling interval
DscrFsConfigEnd:
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;
;; High Speed Configuration
;;
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DSCR_HS SEGMENT CODE PAGE
rseg DSCR_HS
DscrHsConfig:
;; ====================================================================
;; Configuration Descriptor
;; ====================================================================
db DSCR_CONFIG_LEN ;; Descriptor length
db DSCR_CONFIG ;; Descriptor type
db (DscrHsConfigEnd-DscrHsConfig) mod 256 ;; Total Length (LSB)
db (DscrHsConfigEnd-DscrHsConfig) / 256 ;; Total Length (MSB)
db 1 ;; Number of interfaces
db 1 ;; Configuration number
db 0 ;; Configuration string
db 10000000b ;; Attributes (b7 - buspwr, b6 - selfpwr, b5 - rwu)
db 45 ;; Power requirement (div 2 mA)
;; ====================================================================
;; Interface Descriptor
;; ====================================================================
db DSCR_INTRFC_LEN ;; Descriptor length
db DSCR_INTRFC ;; Descriptor type
db 0 ;; Zero-based index of this interface
db 0 ;; Alternate setting
db 4 ;; Number of end points
db 0ffH ;; Interface class
db 00H ;; Interface sub class
db 00H ;; Interface sub sub class
db 0 ;; Interface descriptor string index
;; ====================================================================
;; Endpoint Descriptor 01 (out, interrupt, 1x, 64) 01
;; ====================================================================
db DSCR_ENDPNT_LEN ;; Descriptor length
db DSCR_ENDPNT ;; Descriptor type
db 01H + DIR_OUT ;; Endpoint number, and direction
db ET_BULK ;; Endpoint type
db 40H ;; Maximum packet size (LSB)
db 00H ;; Maximum packet size (MSB)
db 00H ;; Polling interval
;; ====================================================================
;; Endpoint Descriptor 01 (in, interrupt, 1x, 64) 81
;; ====================================================================
db DSCR_ENDPNT_LEN ;; Descriptor length
db DSCR_ENDPNT ;; Descriptor type
db 01H + DIR_IN ;; Endpoint number, and direction
db ET_BULK ;; Endpoint type
db 40H ;; Maximum packet size (LSB)
db 00H ;; Maximum packet size (MSB)
db 00H ;; Polling interval
;; ====================================================================
;; Endpoint Descriptor 02 (out, bulk, 2x, 512) 02
;; ====================================================================
db DSCR_ENDPNT_LEN ;; Descriptor length
db DSCR_ENDPNT ;; Descriptor type
db 02H + DIR_OUT ;; Endpoint number, and direction
db ET_BULK ;; Endpoint type
db 00H ;; Maximum packet size (LSB)
db 02H ;; Maximum packet size (MSB)
db 00H ;; Polling interval
;; ====================================================================
;; Endpoint Descriptor 04 (in, bulk, 2x, 512) 84
;; ====================================================================
db DSCR_ENDPNT_LEN ;; Descriptor length
db DSCR_ENDPNT ;; Descriptor type
db 04H + DIR_IN ;; Endpoint number, and direction
db ET_BULK ;; Endpoint type
db 00H ;; Maximum packet size (LSB)
db 02H ;; Maximum packet size (MSB)
db 00H ;; Polling interval
;; ====================================================================
;; Endpoint Descriptor 06 (out, bulk, 2x, 512) 06
;; ====================================================================
db DSCR_ENDPNT_LEN ;; Descriptor length
db DSCR_ENDPNT ;; Descriptor type
db 06H + DIR_OUT ;; Endpoint number, and direction
db ET_BULK ;; Endpoint type
db 00H ;; Maximum packet size (LSB)
db 02H ;; Maximum packet size (MSB)
db 00H ;; Polling interval
;; ====================================================================
;; Endpoint Descriptor 08 (in, bulk, 2x, 512) 88
;; ====================================================================
db DSCR_ENDPNT_LEN ;; Descriptor length
db DSCR_ENDPNT ;; Descriptor type
db 08H + DIR_IN ;; Endpoint number, and direction
db ET_BULK ;; Endpoint type
db 00H ;; Maximum packet size (LSB)
db 02H ;; Maximum packet size (MSB)
db 00H ;; Polling interval
DscrHsConfigEnd:
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;
;; String Descriptors
;;
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DSCR_ST SEGMENT CODE PAGE
rseg DSCR_ST
DscrString:
String0:
db String0End-String0
db DSCR_STRING
db ' ',00
String0End:
String1:
db String1End-String1
db DSCR_STRING
db 'M', 00
db 'R', 00
db ' ', 00
db 'D', 00
db 'e', 00
db 'v', 00
db 'i', 00
db 'c', 00
db 'e', 00
db 's', 00
db 00, 00
String1End:
String2:
db String2End-String2
db DSCR_STRING
db 'T', 00
db 'r', 00
db 'i', 00
db 'n', 00
db 'i', 00
db 't', 00
db 'y', 00
db 00, 00
String2End:
UserDscr:
dw 0000H
END
+19
View File
@@ -0,0 +1,19 @@
#include <fx2.h>
#include <fx2_regs.h>
#include <fx2_i2c.h>
#include <fx2_eeprom.h>
#include <fx2_syncdelay.h>
#include <rtx51tny.h>
void (*main_hook)() = 0;
void (*idle_hook)() = 0;
// ================================================================================================
// global variables
// ================================================================================================
xdata BYTE devSerialNumber [8] _at_ 0xE000;
xdata BYTE devCapabilities [8] _at_ 0xE008;
xdata BYTE devIdentifier [8] _at_ 0xE010;
BYTE xdata sig[2];
BYTE xdata crc[2];
+73
View File
@@ -0,0 +1,73 @@
// ================================================================================================
// CY_TRINITY
//
// CY_TRINITY boards built on Cypress' FX2LP chip, CY7C68013A.
// The firmware assumes that, the boards have a 16 kB I2C EEPROM memory at address 0x51.
// The last page (32 byte) of the EEPROM is reserved for board identification.
// The rest of the EEPROM is reserved for permanent firmware.
//
// ================================================================================================
#include <fx2.h>
#include <fx2_regs.h>
#ifdef RTX51TNY
#include <rtx51tny.h>
#endif
extern void tri_conf();
extern void tri_boot();
extern void (*main_hook)();
extern void (*idle_hook)();
// ================================================================================================
// main()
// ================================================================================================
#ifdef RTX51TNY
void tri_main(void) _task_ 0
#else
void main(void)
#endif
{
// -------------------------------------------------------------------
//
// INITIALIZE BASE HARDWARE/ENDPOINTS
//
// -------------------------------------------------------------------
FX2_Init();
tri_conf();
tri_boot();
// -------------------------------------------------------------------
// Renumerate if necessary. Do this by checking the renum bit. If it
// is already set, no need to renumerate. The renum bit will already
// set if this firmware was loaded from eeprom.
// -------------------------------------------------------------------
if( !(USBCS & bmRENUM))
FX2_Disconnect(true);
// -------------------------------------------------------------------
// Unconditionally re-connect. If we loaded from eeprom we are
// disconnected and need to connect. If we just renumerated, this is
// not necessary but doesn't hurt anything.
// -------------------------------------------------------------------
USBCS &= ~bmDISCON;
// -------------------------------------------------------------------
// call main hook for starting board specific tasks, e.g.: jtag
// -------------------------------------------------------------------
if( main_hook)
main_hook();
// -------------------------------------------------------------------
// idle
// -------------------------------------------------------------------
while(1)
{
if( idle_hook)
idle_hook();
}
}
+131
View File
@@ -0,0 +1,131 @@
#include <fx2.h>
#include <fx2_regs.h>
#include <fx2_i2c.h>
#include <fx2_eeprom.h>
#include <tri.h>
//#include <lcd\lcd_7565r.h>
#define DATAINPTR ((BYTE xdata *)&EP1INBUF [8])
#define DATAOUTPTR ((BYTE xdata *)&EP1OUTBUF[8])
//extern BYTE fx2_i2c_read( BYTE, BYTE, BYTE xdata *);
// ================================================================================================
// EP1
//
// Default processing of I2C and EEPROM packets. Inherited EP1 packet handlers normally
// don't override I2C and EEPROM packet processing. They implement (most of the time) new
// features, which have simple data transfer only. EP1 is not intented to use for transfering
// large amount of data, e.g.: jtag, or LA stream.
//
// BUF[0] : dir[7] + command[6..0]
// BUF[1] : address
// BUF[2] : address ext
// BUF[3] : subaddress[lo]/eeprom page address[lo]
// BUF[4] : subaddress[hi]/eeprom page address[lo]
// BUF[5] : length (max 32)
// BUF[6] : offset
// BUF[7] : timeout in ms
// ================================================================================================
void tri_ep1out( void)
{
bool rd; // true if eeprom/i2c xfer operation is read
BYTE cmd; // the actual command
WORD address; // device address + address extension
WORD subaddr; // sub address for repeated start read
WORD page; // eeprom page number
BYTE length; // data length
BYTE offset; // offset in eeprom page
BYTE tmo; // timeout
// ------------------------------------------------------
// parse command
// ------------------------------------------------------
rd = EP1OUTBUF[0] & 0x80;
cmd = EP1OUTBUF[0] & 0x7F;
address = *(WORD*)&EP1OUTBUF[1]; // I2C address
subaddr = *(WORD*)&EP1OUTBUF[3]; // sub address for RS
page = *(WORD*)&EP1OUTBUF[3]; // page number
length = *(BYTE*)&EP1OUTBUF[5]; // data length
offset = *(BYTE*)&EP1OUTBUF[6]; // offset in page
tmo = *(BYTE*)&EP1OUTBUF[7]; // timeout
if( length > 132)
length = 132;
// ------------------------------------------------------
// prepare status block
// ------------------------------------------------------
EP1INBUF[0] = EP1OUTBUF[0];
EP1INBUF[1] = EP1OUTBUF[1];
EP1INBUF[2] = EP1OUTBUF[2];
EP1INBUF[3] = EP1OUTBUF[3];
EP1INBUF[4] = EP1OUTBUF[4];
EP1INBUF[5] = EP1OUTBUF[5];
EP1INBUF[6] = EP1OUTBUF[6];
EP1INBUF[7] = I2C_OK;
if(rd)
{
switch(cmd)
{
case CMD_IIC_READ:
EP1INBUF[7] = fx2_i2c_read( address, length, DATAINPTR);
EP1INBC = 8 +length;
break;
case CMD_IIC_READ_RSW:
EP1INBUF[7] = fx2_i2c_read_rsw( address, subaddr, length, DATAINPTR);
EP1INBC = 8 +length;
break;
/*
case 1://CMD_EEPROM_BOOT:
EP1INBUF[7] = FX2_EEPROM_ReadPage0( 0,8, DATAINPTR);
EP1INBC = 8 +8;
break;
case 2://CMD_EEPROM_RAW:
EP1INBUF[7] = FX2_EEPROM_ReadPage( page, 32, DATAINPTR);
EP1INBC = 8 +32;
break;
*/
default:
EP1INBC = 8;
}
}
else
{
// *(WORD*)&EP1INBUF[6] = length;
switch(cmd)
{
case CMD_IIC_WRITE:
EP1INBUF[7] = fx2_i2c_write( address, length, DATAOUTPTR);
/*
lcd_gotoxy( 0, 1);
lcd_putx2(EP1OUTBUF[0]);
lcd_putx2(EP1OUTBUF[1]);
lcd_putx2(EP1OUTBUF[2]);
lcd_putx2(EP1OUTBUF[3]);
lcd_putx2(EP1OUTBUF[4]);
lcd_putx2(EP1OUTBUF[5]);
lcd_putx2(EP1OUTBUF[6]);
lcd_putx2(EP1OUTBUF[7]);
*/
break;
case 1://CMD_EEPROM_RAW:
EP1INBUF[7] = FX2_EEPROM_WritePage( page, 32, DATAOUTPTR);
break;
}
EP1INBC = 8;
}
EP1OUTBC = 0x40; // re-arm EP1OUT
}
File diff suppressed because one or more lines are too long
+695
View File
@@ -0,0 +1,695 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
<SchemaVersion>1.0</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<Extensions>
<cExt>*.c</cExt>
<aExt>*.s*; *.src; *.a*</aExt>
<oExt>*.obj; *.o</oExt>
<lExt>*.lib</lExt>
<tExt>*.txt; *.h; *.inc</tExt>
<pExt>*.plm</pExt>
<CppX>*.cpp</CppX>
<nMigrate>0</nMigrate>
</Extensions>
<DaveTm>
<dwLowDateTime>0</dwLowDateTime>
<dwHighDateTime>0</dwHighDateTime>
</DaveTm>
<Target>
<TargetName>release</TargetName>
<ToolsetNumber>0x0</ToolsetNumber>
<ToolsetName>MCS-51</ToolsetName>
<TargetOption>
<CLK51>48000000</CLK51>
<OPTTT>
<gFlags>1</gFlags>
<BeepAtEnd>0</BeepAtEnd>
<RunSim>1</RunSim>
<RunTarget>0</RunTarget>
<RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>0</HexSelection>
<FlashByte>65535</FlashByte>
<HexRangeLowAddress>0</HexRangeLowAddress>
<HexRangeHighAddress>0</HexRangeHighAddress>
<HexOffset>0</HexOffset>
</OPTHX>
<OPTLEX>
<PageWidth>120</PageWidth>
<PageLength>65</PageLength>
<TabStop>8</TabStop>
<ListingPath>.\lst\release\</ListingPath>
</OPTLEX>
<ListingPage>
<CreateCListing>1</CreateCListing>
<CreateAListing>1</CreateAListing>
<CreateLListing>1</CreateLListing>
<CreateIListing>0</CreateIListing>
<AsmCond>1</AsmCond>
<AsmSymb>1</AsmSymb>
<AsmXref>0</AsmXref>
<CCond>1</CCond>
<CCode>0</CCode>
<CListInc>0</CListInc>
<CSymb>0</CSymb>
<LinkerCodeListing>0</LinkerCodeListing>
</ListingPage>
<OPTXL>
<LMap>1</LMap>
<LComments>1</LComments>
<LGenerateSymbols>1</LGenerateSymbols>
<LLibSym>1</LLibSym>
<LLines>1</LLines>
<LLocSym>1</LLocSym>
<LPubSym>1</LPubSym>
<LXref>0</LXref>
<LExpSel>0</LExpSel>
</OPTXL>
<OPTFL>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>0</IsCurrentTarget>
</OPTFL>
<CpuCode>255</CpuCode>
<Books>
<Book>
<Number>0</Number>
<Title>Data Sheet</Title>
<Path>DATASHTS\CYPRESS\CY7C68XXX_DS.PDF</Path>
</Book>
<Book>
<Number>1</Number>
<Title>Technical Reference Manual</Title>
<Path>DATASHTS\CYPRESS\FX2_TRM.PDF</Path>
</Book>
</Books>
<DebugOpt>
<uSim>1</uSim>
<uTrg>0</uTrg>
<sLdApp>1</sLdApp>
<sGomain>1</sGomain>
<sRbreak>1</sRbreak>
<sRwatch>1</sRwatch>
<sRmem>1</sRmem>
<sRfunc>1</sRfunc>
<sRbox>1</sRbox>
<tLdApp>1</tLdApp>
<tGomain>0</tGomain>
<tRbreak>1</tRbreak>
<tRwatch>1</tRwatch>
<tRmem>1</tRmem>
<tRfunc>0</tRfunc>
<tRbox>1</tRbox>
<tRtrace>1</tRtrace>
<sRSysVw>1</sRSysVw>
<tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
<bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf>
<nTsel>-1</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
<sDlgPa></sDlgPa>
<sIfile></sIfile>
<tDll></tDll>
<tDllPa></tDllPa>
<tDlgDll></tDlgDll>
<tDlgPa></tDlgPa>
<tIfile></tIfile>
<pMon></pMon>
</DebugOpt>
<Breakpoint/>
<Tracepoint>
<THDelay>0</THDelay>
</Tracepoint>
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
<aLwin>0</aLwin>
<aCover>0</aCover>
<aSer1>0</aSer1>
<aSer2>0</aSer2>
<aPa>0</aPa>
<viewmode>0</viewmode>
<vrSel>0</vrSel>
<aSym>0</aSym>
<aTbox>0</aTbox>
<AscS1>0</AscS1>
<AscS2>0</AscS2>
<AscS3>0</AscS3>
<aSer3>0</aSer3>
<eProf>0</eProf>
<aLa>0</aLa>
<aPa1>0</aPa1>
<AscS4>0</AscS4>
<aSer4>0</aSer4>
<StkLoc>0</StkLoc>
<TrcWin>0</TrcWin>
<newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
<LintExecutable></LintExecutable>
<LintConfigFile></LintConfigFile>
<bLintAuto>0</bLintAuto>
<bAutoGenD>0</bAutoGenD>
<LntExFlags>0</LntExFlags>
<pMisraName></pMisraName>
<pszMrule></pszMrule>
<pSingCmds></pSingCmds>
<pMultCmds></pMultCmds>
<pMisraNamep></pMisraNamep>
<pszMrulep></pszMrulep>
<pSingCmdsp></pSingCmdsp>
<pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
<Target>
<TargetName>debug</TargetName>
<ToolsetNumber>0x0</ToolsetNumber>
<ToolsetName>MCS-51</ToolsetName>
<TargetOption>
<CLK51>48000000</CLK51>
<OPTTT>
<gFlags>1</gFlags>
<BeepAtEnd>0</BeepAtEnd>
<RunSim>1</RunSim>
<RunTarget>0</RunTarget>
<RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>0</HexSelection>
<FlashByte>65535</FlashByte>
<HexRangeLowAddress>0</HexRangeLowAddress>
<HexRangeHighAddress>0</HexRangeHighAddress>
<HexOffset>0</HexOffset>
</OPTHX>
<OPTLEX>
<PageWidth>120</PageWidth>
<PageLength>65</PageLength>
<TabStop>8</TabStop>
<ListingPath>.\lst\debug\</ListingPath>
</OPTLEX>
<ListingPage>
<CreateCListing>1</CreateCListing>
<CreateAListing>1</CreateAListing>
<CreateLListing>1</CreateLListing>
<CreateIListing>0</CreateIListing>
<AsmCond>1</AsmCond>
<AsmSymb>1</AsmSymb>
<AsmXref>0</AsmXref>
<CCond>1</CCond>
<CCode>0</CCode>
<CListInc>0</CListInc>
<CSymb>0</CSymb>
<LinkerCodeListing>0</LinkerCodeListing>
</ListingPage>
<OPTXL>
<LMap>1</LMap>
<LComments>1</LComments>
<LGenerateSymbols>1</LGenerateSymbols>
<LLibSym>1</LLibSym>
<LLines>1</LLines>
<LLocSym>1</LLocSym>
<LPubSym>1</LPubSym>
<LXref>0</LXref>
<LExpSel>0</LExpSel>
</OPTXL>
<OPTFL>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
<CpuCode>255</CpuCode>
<Books>
<Book>
<Number>0</Number>
<Title>Data Sheet</Title>
<Path>DATASHTS\CYPRESS\CY7C68XXX_DS.PDF</Path>
</Book>
<Book>
<Number>1</Number>
<Title>Technical Reference Manual</Title>
<Path>DATASHTS\CYPRESS\FX2_TRM.PDF</Path>
</Book>
</Books>
<DebugOpt>
<uSim>1</uSim>
<uTrg>0</uTrg>
<sLdApp>1</sLdApp>
<sGomain>1</sGomain>
<sRbreak>1</sRbreak>
<sRwatch>1</sRwatch>
<sRmem>1</sRmem>
<sRfunc>1</sRfunc>
<sRbox>1</sRbox>
<tLdApp>1</tLdApp>
<tGomain>1</tGomain>
<tRbreak>1</tRbreak>
<tRwatch>1</tRwatch>
<tRmem>1</tRmem>
<tRfunc>0</tRfunc>
<tRbox>1</tRbox>
<tRtrace>1</tRtrace>
<sRSysVw>1</sRSysVw>
<tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
<bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf>
<nTsel>0</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
<sDlgPa></sDlgPa>
<sIfile></sIfile>
<tDll></tDll>
<tDllPa></tDllPa>
<tDlgDll></tDlgDll>
<tDlgPa></tDlgPa>
<tIfile></tIfile>
<pMon>BIN\MON51.DLL</pMon>
</DebugOpt>
<TargetDriverDllRegistry>
<SetRegEntry>
<Number>0</Number>
<Key>DLGTP51</Key>
<Name>(98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(99=-1,-1,-1,-1,0)(101=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0)(94=-1,-1,-1,-1,0)(104=-1,-1,-1,-1,0)(5065=-1,-1,-1,-1,0)</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
<Key>MON51</Key>
<Name>-S5 -B38400 -O1311</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
<Key>DLGDP51</Key>
<Name>(98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(99=-1,-1,-1,-1,0)(101=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0)(94=-1,-1,-1,-1,0)(104=-1,-1,-1,-1,0)(5065=-1,-1,-1,-1,0)</Name>
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint/>
<MemoryWindow1>
<Mm>
<WinNumber>1</WinNumber>
<SubType>0</SubType>
<ItemText>0</ItemText>
<AccSizeX>0</AccSizeX>
</Mm>
</MemoryWindow1>
<Tracepoint>
<THDelay>0</THDelay>
</Tracepoint>
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
<aLwin>0</aLwin>
<aCover>0</aCover>
<aSer1>0</aSer1>
<aSer2>0</aSer2>
<aPa>0</aPa>
<viewmode>1</viewmode>
<vrSel>0</vrSel>
<aSym>0</aSym>
<aTbox>0</aTbox>
<AscS1>0</AscS1>
<AscS2>0</AscS2>
<AscS3>0</AscS3>
<aSer3>0</aSer3>
<eProf>0</eProf>
<aLa>0</aLa>
<aPa1>0</aPa1>
<AscS4>0</AscS4>
<aSer4>0</aSer4>
<StkLoc>0</StkLoc>
<TrcWin>0</TrcWin>
<newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
<LintExecutable></LintExecutable>
<LintConfigFile></LintConfigFile>
<bLintAuto>0</bLintAuto>
<bAutoGenD>0</bAutoGenD>
<LntExFlags>0</LntExFlags>
<pMisraName></pMisraName>
<pszMrule></pszMrule>
<pSingCmds></pSingCmds>
<pMultCmds></pMultCmds>
<pMisraNamep></pMisraNamep>
<pszMrulep></pszMrulep>
<pSingCmdsp></pSingCmdsp>
<pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
<Group>
<GroupName>fx2lp - startup</GroupName>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>1</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_startup.s51</PathWithFileName>
<FilenameWithoutPath>fx2_startup.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>2</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_conf.s51</PathWithFileName>
<FilenameWithoutPath>fx2_conf.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2lp - init</GroupName>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>3</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_delay1ms.s51</PathWithFileName>
<FilenameWithoutPath>fx2_delay1ms.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>4</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_delay.c</PathWithFileName>
<FilenameWithoutPath>fx2_delay.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>5</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_globals.c</PathWithFileName>
<FilenameWithoutPath>fx2_globals.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>6</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_init.c</PathWithFileName>
<FilenameWithoutPath>fx2_init.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2lp - iic</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>7</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_i2c.c</PathWithFileName>
<FilenameWithoutPath>fx2_i2c.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>8</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_eeprom.c</PathWithFileName>
<FilenameWithoutPath>fx2_eeprom.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2lp - timer</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>9</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_tmr.c</PathWithFileName>
<FilenameWithoutPath>fx2_tmr.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2lp - serial</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>10</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_usart.c</PathWithFileName>
<FilenameWithoutPath>fx2_usart.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2lp - usb</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>11</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_jmptbl.s51</PathWithFileName>
<FilenameWithoutPath>fx2_jmptbl.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>12</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_disconnect.c</PathWithFileName>
<FilenameWithoutPath>fx2_disconnect.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>13</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_usb_isr.c</PathWithFileName>
<FilenameWithoutPath>fx2_usb_isr.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>14</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_usb_sleep.c</PathWithFileName>
<FilenameWithoutPath>fx2_usb_sleep.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>15</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_usb_sudav.c</PathWithFileName>
<FilenameWithoutPath>fx2_usb_sudav.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2mr - lcd</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>16</FileNumber>
<FileType>1</FileType>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2mr\src\lcd\7565r\lcd_7565r.c</PathWithFileName>
<FilenameWithoutPath>lcd_7565r.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>tri - base</GroupName>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>17</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\tri_dscr.s51</PathWithFileName>
<FilenameWithoutPath>tri_dscr.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>18</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\tri_main.c</PathWithFileName>
<FilenameWithoutPath>tri_main.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>19</FileNumber>
<FileType>1</FileType>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\tri_boot.c</PathWithFileName>
<FilenameWithoutPath>tri_boot.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>20</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\tri_conf.c</PathWithFileName>
<FilenameWithoutPath>tri_conf.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>21</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\tri_glb.c</PathWithFileName>
<FilenameWithoutPath>tri_glb.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>22</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\tri_cmd.c</PathWithFileName>
<FilenameWithoutPath>tri_cmd.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>23</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\tri_usb_ep1.c</PathWithFileName>
<FilenameWithoutPath>tri_usb_ep1.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
</ProjectOpt>
File diff suppressed because it is too large Load Diff
+16
View File
@@ -0,0 +1,16 @@
#include <fx2.h>
extern bool (*DR_VendorCommand)(void);
extern void (*main_hook)(void);
extern void cf1_conf(void);
extern void cf1_main(void);
extern bool cf1_command(void);
void TRI_Boot(void)
{
cf1_conf();
main_hook = cf1_main;
DR_VendorCommand = cf1_command;
}
+92
View File
@@ -0,0 +1,92 @@
#include <fx2.h>
#include <fx2_regs.h>
#include <tri.h>
#include <lcd\lcd_44780.h>
extern bool jtag_command(void);
// ============================================================================
// command
// ============================================================================
bool cf1_command(void)
{
bool result = true;
bit dir = (SETUPDAT[0] & 0x80) ? 1 : 0;
BYTE cmd = SETUPDAT[1]; // (SETUPDAT[1] & 0x7F);
PSUDAV sud = (PSUDAV)SETUPDAT;
BYTE X = SETUPDAT[2];
BYTE Y = SETUPDAT[3];
BYTE C = SETUPDAT[3];
BYTE LED = SETUPDAT[2];
BYTE VAL = SETUPDAT[3];
//#ifdef DEBUG
// lcd_gotoxy(0,0);
// lcd_putx2(cmd);
// lcd_putx2(X);
// lcd_putx2(Y);
// lcd_putled( 3, 1);
//#endif
// ----------------------------------------------------
// IN command device -> host
// ----------------------------------------------------
if(dir)
{
switch(sud->Request)
{
// --------------------------------------------
// default
// --------------------------------------------
default:
result = jtag_command();
break;
}
}
// ----------------------------------------------------
// OUT command host -> device
// ----------------------------------------------------
else
{
switch(sud->Request)
{
// --------------------------------------------
// display commands
// --------------------------------------------
case CMD_LCD_LED:
lcd_putled( LED, VAL);
break;
case CMD_LCD_CLS:
lcd_gotoxy(0,0); lcd_puts(" ");
lcd_gotoxy(0,1); lcd_puts(" ");
break;
case CMD_LCD_GOTOXY:
lcd_gotoxy(X,Y);
break;
case CMD_LCD_PUTC:
lcd_putc(C);
break;
case CMD_LCD_PUTS:
lcd_putc(EP0BUF[0]);
break;
// --------------------------------------------
// default
// --------------------------------------------
default:
result = jtag_command();
break;
}
}
return result;
}
+185
View File
@@ -0,0 +1,185 @@
#include <fx2.h>
#include <fx2_regs.h>
#include <fx2_syncdelay.h>
#include <rtx51tny.h>
#include <tri.h>
#include <lcd\lcd_44780.h>
extern xdata BYTE devSerialNumber [];
extern xdata BYTE devCapabilities [];
extern xdata BYTE devIdentifier [];
extern void FX2_Delay(WORD);
// inherited object routines
extern void jtag_main(void);
extern void jtag_conf(void);
// ================================================================================================
// main
//
// This routine is the place to start tasks !
// ================================================================================================
void cf1_main(void)
{
// -------------------------------------------------------------------
// call "inherited" main()
// -------------------------------------------------------------------
jtag_main();
}
// ================================================================================================
// configure board
// ================================================================================================
void cf1_conf()
{
// ------------------------------------------------------------------------
// call "inherited" config()
// ------------------------------------------------------------------------
jtag_conf();
// ------------------------------------------------------------------------
// set IFCLK to 30 MHz
//
// with 30 MHz the on-board SDRAM can run on 120 MHz
// with 48 MHz the on-board SDRAM can run on 144 or 96 MHz
// ------------------------------------------------------------------------
IFCONFIG &= ~bm3048MHZ; SYNCDELAY; // 30 MHz
// ------------------------------------------------------------------------
// add capabilities
// ------------------------------------------------------------------------
devCapabilities[1] |= bmCap1_LCD;
// ------------------------------------------------------------------------
// Board specific initialization
//
// TRINITY_2:
// - 4 layers board
// - 128 pin mcu
// - 32k SRAM for mcu
// - Lattice FPGA
// - 32M SDRAM for FPGA
// - LCD (44780) & LED port
// - 8 bit expansion port
//
// Not USB powered device. It must monitor USB power for
// correct working. Port C bit 5 is the monitoring bit.
//
// GPIF is not implemented in this firmware. It is just
// a suggestion.
//
// FPGA - programming
//
// bit dir init function
// ------------------------------------------
// PC.0 out 0 TCK
// PC.1 out 1 TMS
// PC.2 out 1 TDI
// PC.3 in - TDO
// PC.4 out 1 PRGn
//
// FPGA - GPIF
//
// bit/pin dir init function
// ------------------------------------------
// PC.6 out 0 GA[0]
// PC.7 out 0 GA[1]
//
// PB.0 in/out - GP[0]
// PB.1 in/out - GP[1]
// PB.2 in/out - GP[2]
// PB.3 in/out - GP[3]
// PB.4 in/out - GP[4]
// PB.5 in/out - GP[5]
// PB.6 in/out - GP[6]
// PB.7 in/out - GP[7]
//
// CTL0 out 0 CTL0
// CTL1 out 0 CTL1
// CTL2 out 0 CTL2
// CTL3 out 0 CTL3
// CTL4 out 0 CTL4
// CTL5 out 0 CTL5
//
// RDY0 in - RDY0
// RDY1 in - RDY1
// RDY2 in - RDY2
// RDY3 in - RDY3
//
// FPGA - MISC
//
// bit dir init function
// ------------------------------------------
// PD.0 out (0) RESET
// IFCK out - CLK
// INT5 in (1) INT
//
//
// LED and LCD display
//
// bit dir init function
// ------------------------------------------
// PD.0 - - (FPGA)
//
// PD.1 out 0 LCD R/W
// PD.2 out 0 LCD R/S
// PD.3 out 0 LCD E
//
// PD.4 out 0 LED 0
// PD.5 out 0 LED 1
// PD.6 out 0 LED 2
// PD.7 out 0 LED 3
//
// PE.0 out 0 LCD D0
// PE.1 out 0 LCD D1
// PE.2 out 0 LCD D2
// PE.3 out 0 LCD D3
// PE.4 out 0 LCD D4
// PE.5 out 0 LCD D5
// PE.6 out 0 LCD D6
// PE.7 out 0 LCD D7
// ------------------------------------------
//
// Expansion Port
//
// bit dir init function
// ------------------------------------------
// PA.0 i/o - PA.0
// PA.1 out 0 PA.1
// PA.2 out 0 PA.2
// PA.3 out 0 PA.3
// PA.4 out 0 PA.4
// PA.5 out 0 PA.5
// PA.6 out 0 PA.6
// PA.7 out 0 PA.7
// ------------------------------------------
//
// MISC
//
// bit dir init function
// ------------------------------------------
// PC.5 in (1) VMON
// PA.0 out 0 debug trigger 1
//
// ------------------------------------------------------------------------
PORTCCFG = 0x00; SYNCDELAY; // port C is I/O, not GPIFADDR
IOC = 0xFE; // set default values
OEC = 0x17; // set port directions
IOA = 0x00; // expansion port
OEA = 0x01; //
devSerialNumber[0] = 'C';
devSerialNumber[1] = '5';
EP0BCL = 0x40; SYNCDELAY;
// -------------------------------------------------------------------
// INITIALIZE LCD
// -------------------------------------------------------------------
lcd_init();
}
+17
View File
@@ -0,0 +1,17 @@
#include <fx2.h>
extern bool (*DR_VendorCommand)(void);
extern void (*main_hook)(void);
extern void cnc1_conf(void);
extern void cnc1_main(void);
extern bool cnc1_command(void);
void tri_boot(void)
{
cnc1_conf();
main_hook = cnc1_main;
DR_VendorCommand = cnc1_command;
}
+51
View File
@@ -0,0 +1,51 @@
#include <fx2.h>
#include <fx2_regs.h>
extern bool cf1_command(void);
// ================================================================================================
// Command
// ================================================================================================
bool cnc1_command(void)
{
bool result = true;
bit dir = (SETUPDAT[0] & 0x80) ? 1 : 0;
BYTE cmd = SETUPDAT[1];
PSUDAV sud = (PSUDAV)SETUPDAT;
// ----------------------------------------------------
// IN command device -> host
// ----------------------------------------------------
if(dir)
{
switch(sud->Request)
{
// --------------------------------------------
// default
// --------------------------------------------
default:
result = cf1_command();
break;
}
}
// ----------------------------------------------------
// OUT command host -> device
// ----------------------------------------------------
else
{
switch(sud->Request)
{
// --------------------------------------------
// default
// --------------------------------------------
default:
result = cf1_command();
break;
}
}
return result;
}
+104
View File
@@ -0,0 +1,104 @@
#include <fx2.h>
#include <fx2_regs.h>
#include <fx2_syncdelay.h>
#include <fx2_i2c.h>
#include <lcd\lcd_44780.h>
#include <tri.h>
extern xdata BYTE devSerialNumber [];
extern xdata BYTE devCapabilities [];
extern xdata BYTE devIdentifier [];
extern void cf1_main(void);
extern void cf1_conf(void);
extern void cnc1_ep6out(void);
xdata BYTE buf[30];
// ================================================================================================
// main
// ================================================================================================
void cnc1_main(void)
{
// ------------------------------------------------------------------------
// call *inherited* main()
// ------------------------------------------------------------------------
cf1_main();
// ------------------------------------------------------------------------
// *cf1* specific main()
// ------------------------------------------------------------------------
lcd_gotoxy(0,0); lcd_puts("X CNC1 X");
lcd_gotoxy(0,1); lcd_puts("M M");
PD7 = 0;
PD6 = 1;
PD5 = 0;
PD4 = 1;
buf[0] = 0;
buf[1] = 0x61;
buf[2] = 0x39;
// fx2_i2c_write( 0x10, 4, buf);
fx2_i2c_write( 0x10, 1, buf);
fx2_i2c_read( 0x10, 4, buf);
lcd_gotoxy( 2, 1);
lcd_putc(buf[0] & 0xDF);
lcd_putc(buf[1] & 0xDF);
lcd_putc(buf[2] & 0xDF);
lcd_putc(buf[3] & 0xDF);
}
// ================================================================================================
// configure
// ================================================================================================
void cnc1_conf(void)
{
// ------------------------------------------------------------------------
// call *inherited* config()
// ------------------------------------------------------------------------
cf1_conf();
// ------------------------------------------------------------------------
// temp serial number
// ------------------------------------------------------------------------
devSerialNumber[0] = 'N';
devSerialNumber[1] = '5';
// ------------------------------------------------------------------------
// Configure EP6/EP8
//
// Endpoint 6 is the OUT endpoint for FPGA communication.
// Endpoint 8 is the IN endpoint for FPGA communication.
// ------------------------------------------------------------------------
EP6CFG = EP_VALID | EP_OUT | EP_BULK | EP_512 | EP_2x; SYNCDELAY;
EP8CFG = EP_VALID | EP_IN | EP_BULK | EP_512 | EP_2x; SYNCDELAY;
// ------------------------------------------------------------------------
// Out endpoints do not come up armed.
// Since the EP6 is double buffered we must write dummy byte
// count twice. Arm EP6 by writing byte count w/skip flag.
// ------------------------------------------------------------------------
EP6BCL = 0x80; SYNCDELAY;
EP6BCL = 0x80; SYNCDELAY;
// ------------------------------------------------------------------------
// Enable EP6/EP8 interrupts
// ------------------------------------------------------------------------
EPIE |= (bmEP6 | bmEP8);
// ------------------------------------------------------------------------
// usb interrupt handler hooks
// ------------------------------------------------------------------------
ep6inout = cnc1_ep6out;
}
+19
View File
@@ -0,0 +1,19 @@
#include <fx2.h>
#include <fx2_regs.h>
#include <tri.h>
// ================================================================================================
// EP6OUT
//
// ================================================================================================
void cnc1_ep6out(void)
{
// ----------------------------------------------------------
// Re-arm output endpoint EP6
// ----------------------------------------------------------
EP6BCL = 0x80;
}
+17
View File
@@ -0,0 +1,17 @@
#include <fx2.h>
extern bool (*DR_VendorCommand)(void);
extern void (*main_hook)(void);
extern void mb_conf(void);
extern void mb_main(void);
extern bool mb_command(void);
void tri_boot(void)
{
mb_conf();
main_hook = mb_main;
DR_VendorCommand = mb_command;
}
+48
View File
@@ -0,0 +1,48 @@
#include <fx2.h>
#include <fx2_regs.h>
extern bool cf1_command(void);
bool mb_command( void)
{
bool result = true;
bit dir = (SETUPDAT[0] & 0x80) ? 1 : 0;
BYTE cmd = SETUPDAT[1];
PSUDAV sud = (PSUDAV)SETUPDAT;
// ----------------------------------------------------
// IN command device -> host
// ----------------------------------------------------
if(dir)
{
switch( sud->Request)
{
// --------------------------------------------
// default
// --------------------------------------------
default:
result = cf1_command();
break;
}
}
// ----------------------------------------------------
// OUT command host -> device
// ----------------------------------------------------
else
{
switch( sud->Request)
{
// --------------------------------------------
// default
// --------------------------------------------
default:
result = cf1_command();
break;
}
}
return result;
}
+162
View File
@@ -0,0 +1,162 @@
#include <fx2.h>
#include <fx2_regs.h>
#include <fx2_i2c.h>
#include <fx2_usart.h>
#include <lcd\lcd_44780.h>
#include <tri.h>
#include <modbus.h>
extern void cf1_main(void);
extern void cf1_conf(void);
BYTE xdata buf[10];
BYTE xdata dly[10];
// =================================================================================================
// configure
// =================================================================================================
void mb_conf( void)
{
// ------------------------------------------------------------------------
// call *inherited* config()
// ------------------------------------------------------------------------
cf1_conf();
// ------------------------------------------------------------------------
// temp serial number
// ------------------------------------------------------------------------
devSerialNumber[0] = 'M';
devSerialNumber[1] = 'B';
devSerialNumber[2] = '1';
devCapabilities[0] |= bmCap0_MBRTU;
devCapabilities[0] |= bmCap0_MBASC;
// TEST only !!!
// ------------------------------------------------------------------------
// initialize serial port
// ------------------------------------------------------------------------
//fx2_usart_init( 9600, uc8e1);
lcd_putled(3,1);
mb_init( mbChannel1, mbRTU, 10, 9600, mbParityEven);
}
void FX2_Delay( WORD ms);
// =================================================================================================
// main
// =================================================================================================
void mb_main( void)
{
int i;
// ------------------------------------------------------------------------
// call *inherited* main()
// ------------------------------------------------------------------------
cf1_main();
// ------------------------------------------------------------------------
// TEST only !!!
// ------------------------------------------------------------------------
// ------------------------------------------------------------------------
// *modbus* specific main()
// ------------------------------------------------------------------------
lcd_gotoxy(0,0); lcd_puts(" MODBUS ");
lcd_gotoxy(0,1); lcd_puts("> -- <");
buf[0] = 0x10;
buf[0] = 0x3;
buf[1] = 40001 >> 8;
buf[2] = 40001 & 0xFF;
buf[3] = 0x00;
buf[4] = 0x01;
buf[5] = 0x11;
buf[6] = 0x22;
buf[7] = 0x33;
dly[0] = 0;
dly[1] = 0;
dly[2] = 0;
dly[3] = 0;
dly[4] = 0;
dly[5] = 0;
dly[6] = 0;
dly[7] = 0;
buf[0] = 31001 >> 8;
buf[1] = 31001;
buf[2] = 0;
buf[3] = 1;
buf[4] = 5;
buf[5] = 5;
// fx2_i2c_write( 0x55, 6, buf);
// fx2_i2c_read( 0x55, 2, buf);
buf[0] = 4;
buf[1] = 31001 >> 8;
buf[2] = 31001;
buf[3] = 0;
buf[4] = 1;
// fx2_usart_send( 4, buf, dly);
// fx2_usart_send( 4, &buf[4], &dly[4]);
// for( i=0; i<35; i++)
// {
// lcd_putled(0,1);
// mb_send( mbChannel1, 2, 5, buf, 0);
// lcd_putled(0,0);
//
// FX2_Delay(100);
//
// }
// --------------------------------------------------------------
// set plc portparameters
// --------------------------------------------------------------
buf[0] = 40006 >> 8; // register address
buf[1] = 40006; //
buf[2] = 0; // number of words
buf[3] = 3; // number of words
buf[4] = 0; // modbus address
buf[5] = 1; //
buf[6] = 0; // speed
buf[7] = 48; //
buf[8] = 0; // config
buf[9] = 1;
fx2_i2c_write( 0x55, 10, buf);
}
Binary file not shown.
+119
View File
@@ -0,0 +1,119 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<ProjectGui xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_gui.xsd">
<SchemaVersion>-6.1</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<PrjGuiSettings>
<LastAddFilePath></LastAddFilePath>
</PrjGuiSettings>
<ViewPool/>
<SECTreeCtrl>
<View>
<WinId>38003</WinId>
<ViewName>Registers</ViewName>
<TableColWidths>228 229</TableColWidths>
</View>
<View>
<WinId>346</WinId>
<ViewName>Code Coverage</ViewName>
<TableColWidths>293 160</TableColWidths>
</View>
<View>
<WinId>204</WinId>
<ViewName>Performance Analyzer</ViewName>
<TableColWidths>453</TableColWidths>
</View>
</SECTreeCtrl>
<TreeListPane>
<View>
<WinId>35141</WinId>
<ViewName>Event Statistics</ViewName>
<UserString></UserString>
<TableColWidths>200 50 700</TableColWidths>
</View>
<View>
<WinId>1506</WinId>
<ViewName>Symbols</ViewName>
<UserString></UserString>
<TableColWidths>106 106 106</TableColWidths>
</View>
<View>
<WinId>1936</WinId>
<ViewName>Watch 1</ViewName>
<UserString></UserString>
<TableColWidths>200 133 133</TableColWidths>
</View>
<View>
<WinId>1937</WinId>
<ViewName>Watch 2</ViewName>
<UserString></UserString>
<TableColWidths>200 133 133</TableColWidths>
</View>
<View>
<WinId>1935</WinId>
<ViewName>Call Stack + Locals</ViewName>
<UserString></UserString>
<TableColWidths>200 133 133</TableColWidths>
</View>
<View>
<WinId>2506</WinId>
<ViewName>Trace Data</ViewName>
<UserString></UserString>
<TableColWidths>75 135 130 95 70 230 200 150</TableColWidths>
</View>
<View>
<WinId>466</WinId>
<ViewName>Source Browser</ViewName>
<UserString>500</UserString>
<TableColWidths>300</TableColWidths>
</View>
</TreeListPane>
<CompViewPool/>
<WindowSettings>
<LogicAnalizer>
<ShowLACursor>1</ShowLACursor>
<ShowSignalInfo>1</ShowSignalInfo>
<ShowCycles>0</ShowCycles>
<LeftSideBarSize>0</LeftSideBarSize>
<TimeBaseIndex>-1</TimeBaseIndex>
</LogicAnalizer>
</WindowSettings>
<WinLayoutEx>
<sActiveDebugView></sActiveDebugView>
<WindowPosition>
<length>44</length>
<flags>0</flags>
<showCmd>1</showCmd>
<MinPosition>
<xPos>-1</xPos>
<yPos>-1</yPos>
</MinPosition>
<MaxPosition>
<xPos>-1</xPos>
<yPos>-1</yPos>
</MaxPosition>
<NormalPosition>
<Top>228</Top>
<Left>231</Left>
<Right>1892</Right>
<Bottom>1333</Bottom>
</NormalPosition>
</WindowPosition>
<MDIClientArea>
<RegID>0</RegID>
<MDITabState>
<Len>366</Len>
<Data>01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000002000000010000000100000043433A5C576F726B5C6D722E73775C73772E6D63755C6D63752E6678325C6678322E7472695C70726A5C7472692E70726F746F5C7372635C70726F746F5F626F6F742E63000000000C70726F746F5F626F6F742E6300000000C5D4F200FFFFFFFF43433A5C576F726B5C6D722E73775C73772E6D63755C6D63752E6678325C6678322E7472695C70726A5C7472692E70726F746F5C7372635C70726F746F5F636F6E662E63000000000C70726F746F5F636F6E662E6300000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000C6020000520100005C0700009A030000</Data>
</MDITabState>
</MDIClientArea>
</WinLayoutEx>
</ProjectGui>
+834
View File
@@ -0,0 +1,834 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
<SchemaVersion>1.0</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<Extensions>
<cExt>*.c</cExt>
<aExt>*.s*; *.src; *.a*</aExt>
<oExt>*.obj</oExt>
<lExt>*.lib</lExt>
<tExt>*.txt; *.h; *.inc</tExt>
<pExt>*.plm</pExt>
<CppX>*.cpp</CppX>
<nMigrate>0</nMigrate>
</Extensions>
<DaveTm>
<dwLowDateTime>0</dwLowDateTime>
<dwHighDateTime>0</dwHighDateTime>
</DaveTm>
<Target>
<TargetName>release</TargetName>
<ToolsetNumber>0x0</ToolsetNumber>
<ToolsetName>MCS-51</ToolsetName>
<TargetOption>
<CLK51>48000000</CLK51>
<OPTTT>
<gFlags>1</gFlags>
<BeepAtEnd>1</BeepAtEnd>
<RunSim>1</RunSim>
<RunTarget>0</RunTarget>
<RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>0</HexSelection>
<FlashByte>65535</FlashByte>
<HexRangeLowAddress>0</HexRangeLowAddress>
<HexRangeHighAddress>0</HexRangeHighAddress>
<HexOffset>0</HexOffset>
</OPTHX>
<OPTLEX>
<PageWidth>120</PageWidth>
<PageLength>65</PageLength>
<TabStop>8</TabStop>
<ListingPath>.\lst\release\</ListingPath>
</OPTLEX>
<ListingPage>
<CreateCListing>1</CreateCListing>
<CreateAListing>1</CreateAListing>
<CreateLListing>1</CreateLListing>
<CreateIListing>0</CreateIListing>
<AsmCond>1</AsmCond>
<AsmSymb>1</AsmSymb>
<AsmXref>0</AsmXref>
<CCond>1</CCond>
<CCode>0</CCode>
<CListInc>0</CListInc>
<CSymb>0</CSymb>
<LinkerCodeListing>0</LinkerCodeListing>
</ListingPage>
<OPTXL>
<LMap>1</LMap>
<LComments>1</LComments>
<LGenerateSymbols>1</LGenerateSymbols>
<LLibSym>1</LLibSym>
<LLines>1</LLines>
<LLocSym>1</LLocSym>
<LPubSym>1</LPubSym>
<LXref>0</LXref>
<LExpSel>0</LExpSel>
</OPTXL>
<OPTFL>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
<CpuCode>255</CpuCode>
<Books>
<Book>
<Number>0</Number>
<Title>Data Sheet</Title>
<Path>DATASHTS\CYPRESS\CY7C68XXX_DS.PDF</Path>
</Book>
<Book>
<Number>1</Number>
<Title>Technical Reference Manual</Title>
<Path>DATASHTS\CYPRESS\FX2_TRM.PDF</Path>
</Book>
</Books>
<DebugOpt>
<uSim>1</uSim>
<uTrg>0</uTrg>
<sLdApp>1</sLdApp>
<sGomain>1</sGomain>
<sRbreak>1</sRbreak>
<sRwatch>1</sRwatch>
<sRmem>1</sRmem>
<sRfunc>1</sRfunc>
<sRbox>1</sRbox>
<tLdApp>1</tLdApp>
<tGomain>0</tGomain>
<tRbreak>1</tRbreak>
<tRwatch>1</tRwatch>
<tRmem>1</tRmem>
<tRfunc>0</tRfunc>
<tRbox>1</tRbox>
<tRtrace>1</tRtrace>
<sRSysVw>1</sRSysVw>
<tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
<bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf>
<nTsel>-1</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
<sDlgPa></sDlgPa>
<sIfile></sIfile>
<tDll></tDll>
<tDllPa></tDllPa>
<tDlgDll></tDlgDll>
<tDlgPa></tDlgPa>
<tIfile></tIfile>
<pMon></pMon>
</DebugOpt>
<Breakpoint/>
<Tracepoint>
<THDelay>0</THDelay>
</Tracepoint>
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
<aLwin>0</aLwin>
<aCover>0</aCover>
<aSer1>0</aSer1>
<aSer2>0</aSer2>
<aPa>0</aPa>
<viewmode>0</viewmode>
<vrSel>0</vrSel>
<aSym>0</aSym>
<aTbox>0</aTbox>
<AscS1>0</AscS1>
<AscS2>0</AscS2>
<AscS3>0</AscS3>
<aSer3>0</aSer3>
<eProf>0</eProf>
<aLa>0</aLa>
<aPa1>0</aPa1>
<AscS4>0</AscS4>
<aSer4>0</aSer4>
<StkLoc>0</StkLoc>
<TrcWin>0</TrcWin>
<newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
<LintExecutable></LintExecutable>
<LintConfigFile></LintConfigFile>
<bLintAuto>0</bLintAuto>
<bAutoGenD>0</bAutoGenD>
<LntExFlags>0</LntExFlags>
<pMisraName></pMisraName>
<pszMrule></pszMrule>
<pSingCmds></pSingCmds>
<pMultCmds></pMultCmds>
<pMisraNamep></pMisraNamep>
<pszMrulep></pszMrulep>
<pSingCmdsp></pSingCmdsp>
<pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
<Target>
<TargetName>cnc1</TargetName>
<ToolsetNumber>0x0</ToolsetNumber>
<ToolsetName>MCS-51</ToolsetName>
<TargetOption>
<CLK51>48000000</CLK51>
<OPTTT>
<gFlags>1</gFlags>
<BeepAtEnd>1</BeepAtEnd>
<RunSim>1</RunSim>
<RunTarget>0</RunTarget>
<RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>0</HexSelection>
<FlashByte>65535</FlashByte>
<HexRangeLowAddress>0</HexRangeLowAddress>
<HexRangeHighAddress>0</HexRangeHighAddress>
<HexOffset>0</HexOffset>
</OPTHX>
<OPTLEX>
<PageWidth>120</PageWidth>
<PageLength>65</PageLength>
<TabStop>8</TabStop>
<ListingPath>.\lst\cnc1\</ListingPath>
</OPTLEX>
<ListingPage>
<CreateCListing>1</CreateCListing>
<CreateAListing>1</CreateAListing>
<CreateLListing>1</CreateLListing>
<CreateIListing>0</CreateIListing>
<AsmCond>1</AsmCond>
<AsmSymb>1</AsmSymb>
<AsmXref>0</AsmXref>
<CCond>1</CCond>
<CCode>0</CCode>
<CListInc>0</CListInc>
<CSymb>0</CSymb>
<LinkerCodeListing>0</LinkerCodeListing>
</ListingPage>
<OPTXL>
<LMap>1</LMap>
<LComments>1</LComments>
<LGenerateSymbols>1</LGenerateSymbols>
<LLibSym>1</LLibSym>
<LLines>1</LLines>
<LLocSym>1</LLocSym>
<LPubSym>1</LPubSym>
<LXref>0</LXref>
<LExpSel>0</LExpSel>
</OPTXL>
<OPTFL>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>0</IsCurrentTarget>
</OPTFL>
<CpuCode>255</CpuCode>
<Books>
<Book>
<Number>0</Number>
<Title>Data Sheet</Title>
<Path>DATASHTS\CYPRESS\CY7C68XXX_DS.PDF</Path>
</Book>
<Book>
<Number>1</Number>
<Title>Technical Reference Manual</Title>
<Path>DATASHTS\CYPRESS\FX2_TRM.PDF</Path>
</Book>
</Books>
<DebugOpt>
<uSim>1</uSim>
<uTrg>0</uTrg>
<sLdApp>1</sLdApp>
<sGomain>1</sGomain>
<sRbreak>1</sRbreak>
<sRwatch>1</sRwatch>
<sRmem>1</sRmem>
<sRfunc>1</sRfunc>
<sRbox>1</sRbox>
<tLdApp>1</tLdApp>
<tGomain>0</tGomain>
<tRbreak>1</tRbreak>
<tRwatch>1</tRwatch>
<tRmem>1</tRmem>
<tRfunc>0</tRfunc>
<tRbox>1</tRbox>
<tRtrace>1</tRtrace>
<sRSysVw>1</sRSysVw>
<tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
<bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf>
<nTsel>-1</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
<sDlgPa></sDlgPa>
<sIfile></sIfile>
<tDll></tDll>
<tDllPa></tDllPa>
<tDlgDll></tDlgDll>
<tDlgPa></tDlgPa>
<tIfile></tIfile>
<pMon></pMon>
</DebugOpt>
<Breakpoint/>
<Tracepoint>
<THDelay>0</THDelay>
</Tracepoint>
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
<aLwin>0</aLwin>
<aCover>0</aCover>
<aSer1>0</aSer1>
<aSer2>0</aSer2>
<aPa>0</aPa>
<viewmode>0</viewmode>
<vrSel>0</vrSel>
<aSym>0</aSym>
<aTbox>0</aTbox>
<AscS1>0</AscS1>
<AscS2>0</AscS2>
<AscS3>0</AscS3>
<aSer3>0</aSer3>
<eProf>0</eProf>
<aLa>0</aLa>
<aPa1>0</aPa1>
<AscS4>0</AscS4>
<aSer4>0</aSer4>
<StkLoc>0</StkLoc>
<TrcWin>0</TrcWin>
<newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
<LintExecutable></LintExecutable>
<LintConfigFile></LintConfigFile>
<bLintAuto>0</bLintAuto>
<bAutoGenD>0</bAutoGenD>
<LntExFlags>0</LntExFlags>
<pMisraName></pMisraName>
<pszMrule></pszMrule>
<pSingCmds></pSingCmds>
<pMultCmds></pMultCmds>
<pMisraNamep></pMisraNamep>
<pszMrulep></pszMrulep>
<pSingCmdsp></pSingCmdsp>
<pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
<Group>
<GroupName>fx2lp - startup</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>1</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_startup.s51</PathWithFileName>
<FilenameWithoutPath>fx2_startup.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>2</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_conf.s51</PathWithFileName>
<FilenameWithoutPath>fx2_conf.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2lp - init</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>3</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_delay1ms.s51</PathWithFileName>
<FilenameWithoutPath>fx2_delay1ms.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>4</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_delay.c</PathWithFileName>
<FilenameWithoutPath>fx2_delay.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>5</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_globals.c</PathWithFileName>
<FilenameWithoutPath>fx2_globals.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>6</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_init.c</PathWithFileName>
<FilenameWithoutPath>fx2_init.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2lp - iic</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>7</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_i2c.c</PathWithFileName>
<FilenameWithoutPath>fx2_i2c.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>8</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_eeprom.c</PathWithFileName>
<FilenameWithoutPath>fx2_eeprom.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2lp - serial</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>9</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_usart.c</PathWithFileName>
<FilenameWithoutPath>fx2_usart.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2lp - usb</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>10</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_jmptbl.s51</PathWithFileName>
<FilenameWithoutPath>fx2_jmptbl.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>11</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_disconnect.c</PathWithFileName>
<FilenameWithoutPath>fx2_disconnect.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>12</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_usb_isr.c</PathWithFileName>
<FilenameWithoutPath>fx2_usb_isr.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>13</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_usb_sleep.c</PathWithFileName>
<FilenameWithoutPath>fx2_usb_sleep.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>14</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_usb_sudav.c</PathWithFileName>
<FilenameWithoutPath>fx2_usb_sudav.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2mr - jtag</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>15</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2mr\src\jtag\jtag.s51</PathWithFileName>
<FilenameWithoutPath>jtag.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2mr - lcd</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>16</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2mr\src\lcd\44780\lcd_44780.c</PathWithFileName>
<FilenameWithoutPath>lcd_44780.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2mr - modbus</GroupName>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>17</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2mr\src\modbus\mb_crc.c</PathWithFileName>
<FilenameWithoutPath>mb_crc.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>18</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2mr\src\modbus\mb.c</PathWithFileName>
<FilenameWithoutPath>mb.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>tri - base</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>19</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.base\src\tri_dscr.s51</PathWithFileName>
<FilenameWithoutPath>tri_dscr.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>20</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.base\src\tri_main.c</PathWithFileName>
<FilenameWithoutPath>tri_main.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>21</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.base\src\tri_conf.c</PathWithFileName>
<FilenameWithoutPath>tri_conf.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>22</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.base\src\tri_glb.c</PathWithFileName>
<FilenameWithoutPath>tri_glb.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>23</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.base\src\tri_cmd.c</PathWithFileName>
<FilenameWithoutPath>tri_cmd.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>24</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.base\src\tri_usb_ep1.c</PathWithFileName>
<FilenameWithoutPath>tri_usb_ep1.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>tri - jtag</GroupName>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>25</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.jtag\src\jtag_conf.c</PathWithFileName>
<FilenameWithoutPath>jtag_conf.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>26</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.jtag\src\jtag_cmd.c</PathWithFileName>
<FilenameWithoutPath>jtag_cmd.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>27</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.jtag\src\jtag_ep2.c</PathWithFileName>
<FilenameWithoutPath>jtag_ep2.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>tri - cf1</GroupName>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>28</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\cf1_boot.c</PathWithFileName>
<FilenameWithoutPath>cf1_boot.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>29</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\cf1_conf.c</PathWithFileName>
<FilenameWithoutPath>cf1_conf.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>30</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\cf1_cmd.c</PathWithFileName>
<FilenameWithoutPath>cf1_cmd.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>tri - cf1 - cnc1</GroupName>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>12</GroupNumber>
<FileNumber>31</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\cnc1\cnc1_boot.c</PathWithFileName>
<FilenameWithoutPath>cnc1_boot.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>12</GroupNumber>
<FileNumber>32</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\cnc1\cnc1_conf.c</PathWithFileName>
<FilenameWithoutPath>cnc1_conf.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>12</GroupNumber>
<FileNumber>33</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\cnc1\cnc1_cmd.c</PathWithFileName>
<FilenameWithoutPath>cnc1_cmd.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>12</GroupNumber>
<FileNumber>34</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\cnc1\cnc1_ep6.c</PathWithFileName>
<FilenameWithoutPath>cnc1_ep6.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
</ProjectOpt>
File diff suppressed because it is too large Load Diff
+16
View File
@@ -0,0 +1,16 @@
#include <fx2.h>
extern bool (*DR_VendorCommand)(void);
extern void (*main_hook)(void);
extern void jtag_conf(void);
extern void jtag_main(void);
extern bool jtag_command(void);
void TRI_Boot(void)
{
jtag_conf();
main_hook = jtag_main;
DR_VendorCommand = jtag_command;
}
+96
View File
@@ -0,0 +1,96 @@
#include <fx2.h>
#include <fx2_regs.h>
#include "..\tri.base\inc\tri.h"
extern void jtag_init(void);
extern void jtag_tck(WORD);
extern void jtag_set_endir(BYTE);
extern void jtag_set_enddr(BYTE);
extern void jtag_set_state(BYTE);
extern void jtag_xfer( BYTE xdata *buffer, WORD length, BYTE last);
extern void FX2_Delay(WORD);
extern bool TRI_Command(void);
// ================================================================================================
// jtag_command
// ================================================================================================
bool jtag_command(void)
{
bool result = true;
bit dir = (SETUPDAT[0] & 0x80) ? 1 : 0;
BYTE cmd = SETUPDAT[1]; // (SETUPDAT[1] & 0x7F);
PSUDAV sud = (PSUDAV)SETUPDAT;
// ----------------------------------------------------
// IN command device -> host
// ----------------------------------------------------
if(dir)
{
result = TRI_Command();
}
// ----------------------------------------------------
// OUT command host -> device
// ----------------------------------------------------
else
{
switch(sud->Request)
{
// --------------------------------------------
// JTAG INIT
// --------------------------------------------
case CMD_JTAG_INIT:
jtag_init();
break;
// --------------------------------------------
// JTAG ENDIR
// --------------------------------------------
case CMD_JTAG_ENDIR:
jtag_set_endir(sud->Value.Byte.Lo);
break;
// --------------------------------------------
// JTAG ENDDR
// --------------------------------------------
case CMD_JTAG_ENDDR:
jtag_set_enddr(sud->Value.Byte.Lo);
break;
// --------------------------------------------
// JTAG STATE
// --------------------------------------------
case CMD_JTAG_STATE:
jtag_set_state(sud->Value.Byte.Lo);
break;
// --------------------------------------------
// JTAG RUNTEST
// --------------------------------------------
case CMD_JTAG_RUN:
jtag_set_state(sud->Value.Byte.Lo);
jtag_tck( sud->Index.Word);
break;
// --------------------------------------------
// JTAG TEST
// --------------------------------------------
case CMD_JTAG_TEST:
break;
// --------------------------------------------
// default
// --------------------------------------------
default:
result = TRI_Command();
break;
}
}
return result;
}
+143
View File
@@ -0,0 +1,143 @@
#include <fx2.h>
#include <fx2_regs.h>
#include <fx2_syncdelay.h>
#include <tri.h>
extern void jtag_init(void);
extern void jtag_ep2out(void);
extern WORD sir;
extern WORD sdr;
// inherited object routines
extern void tri_main(void);
extern void tri_conf(void);
// ================================================================================================
// main
// ================================================================================================
void jtag_main(void)
{
sir = 0;
}
// ================================================================================================
// configure
// ================================================================================================
void jtag_conf()
{
// ------------------------------------------------------------------------
// call "inherited" config()
// ------------------------------------------------------------------------
tri_conf();
// ------------------------------------------------------------------------
// add capabilities
// ------------------------------------------------------------------------
devCapabilities[0] |= bmCap0_JTG;
// ------------------------------------------------------------------------
// temp serial number
// ------------------------------------------------------------------------
devSerialNumber[0] = 'Y';
devSerialNumber[1] = '5';
// ========================================================================
// USB configuration
// ========================================================================
// ------------------------------------------------------------------------
// Configure EP2/EP4
//
// Endpoint 2 is the OUT endpoint for JTAG2 communication.
// Endpoint 4 is the IN endpoint for JTAG2 communication.
// ------------------------------------------------------------------------
EP2CFG = EP_VALID | EP_OUT | EP_BULK | EP_512 | EP_2x; SYNCDELAY;
EP4CFG = EP_VALID | EP_IN | EP_BULK | EP_512 | EP_2x; SYNCDELAY;
// ------------------------------------------------------------------------
// Out endpoints do not come up armed.
// Since the EP2 is double buffered we must write dummy byte
// count twice. Arm EP2 by writing byte count w/skip flag.
// ------------------------------------------------------------------------
EP2BCL = 0x80; SYNCDELAY;
EP2BCL = 0x80; SYNCDELAY;
// ------------------------------------------------------------------------
// Enable EP2/EP4 interrupts
// ------------------------------------------------------------------------
EPIE |= (bmEP2 | bmEP4);
// ------------------------------------------------------------------------
// usb interrupt handler hooks
// ------------------------------------------------------------------------
ep2inout = jtag_ep2out;
// ========================================================================
// Board specific initialization
//
// TRINITY_1:
//
// - 2 layers board
// - 56 pin mcu
// - 16 kB flash EEPROM
//
// J1 J2
// -------------------------- --------------------------
// GND - 1 2 - 5.0V SLWR - 1 2 - SLRD
// GND - 3 4 - 5.0V CLKOUT - 3 4 - GND
// PB.2 - 5 6 - PB.3 PD.5 - 5 6 - GND
// PB.1 - 7 8 - PB.0 PD.6 - 7 8 - PD.7
// SCL - 9 10 - SDA 3.3V - 9 10 - 3.3V
// PB.6 - 11 12 - PB.7 3.3V - 11 12 - 3.3V
// PB.5 - 13 14 - PB.4 PD.4 - 13 14 - GND
// FLAG.B - 15 16 - FLAG.A PD.3 - 15 16 - PD.2
// PA.2 - 17 18 - FLAG.C PD.1 - 17 18 - PD.0
// PA.1 - 19 20 - PA.0 GND - 19 20 - GND
// PA.7 - 21 22 - PA.3 GND - 21 22 - GND
// PA.4 - 23 24 - GND GND - 23 24 - GND
// PA.5 - 25 26 - PA.5 RESET - 25 26 - WU
//
//
// JTAG TOP
// ----------------
// T T G G P
// D C N N W
// I K D D R
//
// 9 7 5 3 1
// 10 8 6 4 2
//
// T T G G T
// R M N N D
// S S D D O
// T
//
// For JTAG function, the following pins are used for JTAG interface:
//
// TCK - PA.0 out
// TMS - PA.1 out
// TDI - PA.7 out
// TDO - PA.3 in
// ena - PA.4 out
//
// Keep it in sync with 'jtag_state.s51' !!!
//
// ========================================================================
PORTCCFG = 0x00; // port C is I/O, not GPIFADDR
SYNCDELAY;
IOA = 0x80;
OEA = 0x93;
// ------------------------------------------------------------------------
// INITIALZE PERIPHERALS (JTAG)
// ------------------------------------------------------------------------
jtag_init();
#ifdef DEBUG
lcd_init();
lcd_gotoxy(0,0);
lcd_puts("JTAG",4);
#endif
}
+182
View File
@@ -0,0 +1,182 @@
#include <fx2.h>
#include <fx2_regs.h>
#include <tri.h>
extern void jtag_set_state(BYTE);
extern void jtag_xfer( BYTE xdata *, WORD, BYTE);
WORD sir = 0;
WORD sdr = 0;
void reverse_id( BYTE xdata * id)
{
int i;
BYTE tmp;
for(i=0; i<4; i++)
{
tmp = id[i];
id[i] = 0;
if( tmp & 0x01) id[i] |= 0x80;
if( tmp & 0x02) id[i] |= 0x40;
if( tmp & 0x04) id[i] |= 0x20;
if( tmp & 0x08) id[i] |= 0x10;
if( tmp & 0x10) id[i] |= 0x08;
if( tmp & 0x20) id[i] |= 0x04;
if( tmp & 0x40) id[i] |= 0x02;
if( tmp & 0x80) id[i] |= 0x01;
}
}
// ================================================================================================
// EP2OUT
//
// Default processing of JTAG output packets. This task will also enable EP4 to handle
// JTAG 'in' requests. But because there is nothing to do after a packet sent to the host,
// the default interrupt handler will do just fine. No special handling is necessary.
//
// Note:
// Because the jtag commands, SCAN,SDR,SIR always prepare data for the host,
// it must be read by the host even if it doesn't need the data !!!!
// ================================================================================================
void jtag_ep2out(void)
{
BYTE fin = 0;
BYTE cmd = 0;
BYTE idx = 0;
WORD len = 0;
WORD adr = 0;
int i;
// ----------------------------------------------------------
// check for hook
// ----------------------------------------------------------
// if( fx2_ep2_hook && fx2_ep2_hook())
// continue;
// ----------------------------------------------------------
// if no hook defined or the hook didn't process the packet,
// then process it here.
// ----------------------------------------------------------
cmd = EP2FIFOBUF[0];
fin = EP2FIFOBUF[1];
idx = EP2FIFOBUF[2];
len = EP2FIFOBUF[3] + EP2FIFOBUF[2] * 256;
adr = EP2FIFOBUF[5] + EP2FIFOBUF[4] * 256;
EP4FIFOBUF[0] = EP2FIFOBUF[0];
EP4FIFOBUF[1] = 0;
EP4FIFOBUF[2] = EP2FIFOBUF[2];
EP4FIFOBUF[3] = EP2FIFOBUF[3];
EP4FIFOBUF[4] = EP2FIFOBUF[4];
EP4FIFOBUF[5] = EP2FIFOBUF[5];
EP4FIFOBUF[6] = EP2FIFOBUF[6];
EP4FIFOBUF[7] = EP2FIFOBUF[7];
switch(cmd)
{
// ------------------------------------------------------
// JTAG: SCAN
// ------------------------------------------------------
case CMD_JTAG_SCAN:
jtag_set_state(TS_RESET);
jtag_set_state(TS_DRSHIFT);
for(i=0; i<4*8; i++)
EP4FIFOBUF[12+i] = 0x00;
jtag_xfer( &EP4FIFOBUF[12], 4*8, 1);
for(i=0; i<4; i++)
{
reverse_id( &EP4FIFOBUF[12+i*8]);
if( EP4FIFOBUF[12+i*8] == 0)
break;
}
EP4FIFOBUF[ 8] = i;
EP4FIFOBUF[ 9] = 0;
EP4FIFOBUF[10] = 0;
EP4FIFOBUF[11] = 0;
EP4BCH = 1;
EP4BCL = 0;
break;
// ------------------------------------------------------
// JTAG: SIR
// ------------------------------------------------------
case CMD_JTAG_SIR:
jtag_set_state(TS_IRSHIFT);
jtag_xfer(&EP2FIFOBUF[8], len, fin);
len = (len + 7) / 8;
for(idx=8; idx<8+len; idx++)
EP4FIFOBUF[idx] = EP2FIFOBUF[idx];
#ifdef DEBUG
sir++;
lcd_gotoxy(0,0);
st7565r_putd( sir, 4, false);
#endif
EP4BCH = MSB(8+len);
EP4BCL = LSB(8+len);
break;
// ------------------------------------------------------
// JTAG: SDR
//
// write/read data shift
// ------------------------------------------------------
case CMD_JTAG_SDR:
jtag_set_state(TS_DRSHIFT);
jtag_xfer(&EP2FIFOBUF[8], len, fin);
len = (len + 7) / 8;
for(idx=8; idx<8+len; idx++)
EP4FIFOBUF[idx] = EP2FIFOBUF[idx];
#ifdef DEBUG
sdr++;
lcd_gotoxy(0,1);
st7565r_putd( sdr, 4, false);
#endif
EP4BCH = MSB(8+len);
EP4BCL = LSB(8+len);
break;
// ------------------------------------------------------
// JTAG: SDW
//
// writeonly data shift
// ------------------------------------------------------
case CMD_JTAG_SDW:
jtag_set_state(TS_DRSHIFT);
jtag_xfer(&EP2FIFOBUF[8], len, fin);
#ifdef DEBUG
sdr++;
lcd_gotoxy(0,1);
st7565r_putd( sdr, 4, false);
#endif
break;
}
// ----------------------------------------------------------
// Re-arm output endpoint EP2
// ----------------------------------------------------------
EP2BCL = 0x80;
}
+119
View File
@@ -0,0 +1,119 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<ProjectGui xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_gui.xsd">
<SchemaVersion>-6.1</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<PrjGuiSettings>
<LastAddFilePath></LastAddFilePath>
</PrjGuiSettings>
<ViewPool/>
<SECTreeCtrl>
<View>
<WinId>38003</WinId>
<ViewName>Registers</ViewName>
<TableColWidths>228 229</TableColWidths>
</View>
<View>
<WinId>346</WinId>
<ViewName>Code Coverage</ViewName>
<TableColWidths>293 160</TableColWidths>
</View>
<View>
<WinId>204</WinId>
<ViewName>Performance Analyzer</ViewName>
<TableColWidths>453</TableColWidths>
</View>
</SECTreeCtrl>
<TreeListPane>
<View>
<WinId>35141</WinId>
<ViewName>Event Statistics</ViewName>
<UserString></UserString>
<TableColWidths>200 50 700</TableColWidths>
</View>
<View>
<WinId>1506</WinId>
<ViewName>Symbols</ViewName>
<UserString></UserString>
<TableColWidths>106 106 106</TableColWidths>
</View>
<View>
<WinId>1936</WinId>
<ViewName>Watch 1</ViewName>
<UserString></UserString>
<TableColWidths>200 133 133</TableColWidths>
</View>
<View>
<WinId>1937</WinId>
<ViewName>Watch 2</ViewName>
<UserString></UserString>
<TableColWidths>200 133 133</TableColWidths>
</View>
<View>
<WinId>1935</WinId>
<ViewName>Call Stack + Locals</ViewName>
<UserString></UserString>
<TableColWidths>200 133 133</TableColWidths>
</View>
<View>
<WinId>2506</WinId>
<ViewName>Trace Data</ViewName>
<UserString></UserString>
<TableColWidths>75 135 130 95 70 230 200 150</TableColWidths>
</View>
<View>
<WinId>466</WinId>
<ViewName>Source Browser</ViewName>
<UserString>500</UserString>
<TableColWidths>300</TableColWidths>
</View>
</TreeListPane>
<CompViewPool/>
<WindowSettings>
<LogicAnalizer>
<ShowLACursor>1</ShowLACursor>
<ShowSignalInfo>1</ShowSignalInfo>
<ShowCycles>0</ShowCycles>
<LeftSideBarSize>0</LeftSideBarSize>
<TimeBaseIndex>-1</TimeBaseIndex>
</LogicAnalizer>
</WindowSettings>
<WinLayoutEx>
<sActiveDebugView></sActiveDebugView>
<WindowPosition>
<length>44</length>
<flags>0</flags>
<showCmd>1</showCmd>
<MinPosition>
<xPos>-1</xPos>
<yPos>-1</yPos>
</MinPosition>
<MaxPosition>
<xPos>-1</xPos>
<yPos>-1</yPos>
</MaxPosition>
<NormalPosition>
<Top>228</Top>
<Left>231</Left>
<Right>1892</Right>
<Bottom>1333</Bottom>
</NormalPosition>
</WindowPosition>
<MDIClientArea>
<RegID>0</RegID>
<MDITabState>
<Len>366</Len>
<Data>01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000002000000010000000100000043433A5C576F726B5C6D722E73775C73772E6D63755C6D63752E6678325C6678322E7472695C70726A5C7472692E70726F746F5C7372635C70726F746F5F626F6F742E63000000000C70726F746F5F626F6F742E6300000000C5D4F200FFFFFFFF43433A5C576F726B5C6D722E73775C73772E6D63755C6D63752E6678325C6678322E7472695C70726A5C7472692E70726F746F5C7372635C70726F746F5F636F6E662E63000000000C70726F746F5F636F6E662E6300000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000C6020000520100005C0700009A030000</Data>
</MDITabState>
</MDIClientArea>
</WinLayoutEx>
</ProjectGui>
+722
View File
@@ -0,0 +1,722 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
<SchemaVersion>1.0</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<Extensions>
<cExt>*.c</cExt>
<aExt>*.s*; *.src; *.a*</aExt>
<oExt>*.obj</oExt>
<lExt>*.lib</lExt>
<tExt>*.txt; *.h; *.inc</tExt>
<pExt>*.plm</pExt>
<CppX>*.cpp</CppX>
<nMigrate>0</nMigrate>
</Extensions>
<DaveTm>
<dwLowDateTime>0</dwLowDateTime>
<dwHighDateTime>0</dwHighDateTime>
</DaveTm>
<Target>
<TargetName>release</TargetName>
<ToolsetNumber>0x0</ToolsetNumber>
<ToolsetName>MCS-51</ToolsetName>
<TargetOption>
<CLK51>48000000</CLK51>
<OPTTT>
<gFlags>1</gFlags>
<BeepAtEnd>1</BeepAtEnd>
<RunSim>1</RunSim>
<RunTarget>0</RunTarget>
<RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>0</HexSelection>
<FlashByte>65535</FlashByte>
<HexRangeLowAddress>0</HexRangeLowAddress>
<HexRangeHighAddress>0</HexRangeHighAddress>
<HexOffset>0</HexOffset>
</OPTHX>
<OPTLEX>
<PageWidth>120</PageWidth>
<PageLength>65</PageLength>
<TabStop>8</TabStop>
<ListingPath>.\lst\release\</ListingPath>
</OPTLEX>
<ListingPage>
<CreateCListing>1</CreateCListing>
<CreateAListing>1</CreateAListing>
<CreateLListing>1</CreateLListing>
<CreateIListing>0</CreateIListing>
<AsmCond>1</AsmCond>
<AsmSymb>1</AsmSymb>
<AsmXref>0</AsmXref>
<CCond>1</CCond>
<CCode>0</CCode>
<CListInc>0</CListInc>
<CSymb>0</CSymb>
<LinkerCodeListing>0</LinkerCodeListing>
</ListingPage>
<OPTXL>
<LMap>1</LMap>
<LComments>1</LComments>
<LGenerateSymbols>1</LGenerateSymbols>
<LLibSym>1</LLibSym>
<LLines>1</LLines>
<LLocSym>1</LLocSym>
<LPubSym>1</LPubSym>
<LXref>0</LXref>
<LExpSel>0</LExpSel>
</OPTXL>
<OPTFL>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>0</IsCurrentTarget>
</OPTFL>
<CpuCode>255</CpuCode>
<Books>
<Book>
<Number>0</Number>
<Title>Data Sheet</Title>
<Path>DATASHTS\CYPRESS\CY7C68XXX_DS.PDF</Path>
</Book>
<Book>
<Number>1</Number>
<Title>Technical Reference Manual</Title>
<Path>DATASHTS\CYPRESS\FX2_TRM.PDF</Path>
</Book>
</Books>
<DebugOpt>
<uSim>1</uSim>
<uTrg>0</uTrg>
<sLdApp>1</sLdApp>
<sGomain>1</sGomain>
<sRbreak>1</sRbreak>
<sRwatch>1</sRwatch>
<sRmem>1</sRmem>
<sRfunc>1</sRfunc>
<sRbox>1</sRbox>
<tLdApp>1</tLdApp>
<tGomain>0</tGomain>
<tRbreak>1</tRbreak>
<tRwatch>1</tRwatch>
<tRmem>1</tRmem>
<tRfunc>0</tRfunc>
<tRbox>1</tRbox>
<tRtrace>1</tRtrace>
<sRSysVw>1</sRSysVw>
<tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
<bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf>
<nTsel>-1</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
<sDlgPa></sDlgPa>
<sIfile></sIfile>
<tDll></tDll>
<tDllPa></tDllPa>
<tDlgDll></tDlgDll>
<tDlgPa></tDlgPa>
<tIfile></tIfile>
<pMon></pMon>
</DebugOpt>
<Breakpoint/>
<Tracepoint>
<THDelay>0</THDelay>
</Tracepoint>
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
<aLwin>0</aLwin>
<aCover>0</aCover>
<aSer1>0</aSer1>
<aSer2>0</aSer2>
<aPa>0</aPa>
<viewmode>0</viewmode>
<vrSel>0</vrSel>
<aSym>0</aSym>
<aTbox>0</aTbox>
<AscS1>0</AscS1>
<AscS2>0</AscS2>
<AscS3>0</AscS3>
<aSer3>0</aSer3>
<eProf>0</eProf>
<aLa>0</aLa>
<aPa1>0</aPa1>
<AscS4>0</AscS4>
<aSer4>0</aSer4>
<StkLoc>0</StkLoc>
<TrcWin>0</TrcWin>
<newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
<LintExecutable></LintExecutable>
<LintConfigFile></LintConfigFile>
<bLintAuto>0</bLintAuto>
<bAutoGenD>0</bAutoGenD>
<LntExFlags>0</LntExFlags>
<pMisraName></pMisraName>
<pszMrule></pszMrule>
<pSingCmds></pSingCmds>
<pMultCmds></pMultCmds>
<pMisraNamep></pMisraNamep>
<pszMrulep></pszMrulep>
<pSingCmdsp></pSingCmdsp>
<pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
<Target>
<TargetName>debug</TargetName>
<ToolsetNumber>0x0</ToolsetNumber>
<ToolsetName>MCS-51</ToolsetName>
<TargetOption>
<CLK51>48000000</CLK51>
<OPTTT>
<gFlags>1</gFlags>
<BeepAtEnd>1</BeepAtEnd>
<RunSim>1</RunSim>
<RunTarget>0</RunTarget>
<RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>0</HexSelection>
<FlashByte>65535</FlashByte>
<HexRangeLowAddress>0</HexRangeLowAddress>
<HexRangeHighAddress>0</HexRangeHighAddress>
<HexOffset>0</HexOffset>
</OPTHX>
<OPTLEX>
<PageWidth>120</PageWidth>
<PageLength>65</PageLength>
<TabStop>8</TabStop>
<ListingPath>.\lst\debug\</ListingPath>
</OPTLEX>
<ListingPage>
<CreateCListing>1</CreateCListing>
<CreateAListing>1</CreateAListing>
<CreateLListing>1</CreateLListing>
<CreateIListing>0</CreateIListing>
<AsmCond>1</AsmCond>
<AsmSymb>1</AsmSymb>
<AsmXref>0</AsmXref>
<CCond>1</CCond>
<CCode>0</CCode>
<CListInc>0</CListInc>
<CSymb>0</CSymb>
<LinkerCodeListing>0</LinkerCodeListing>
</ListingPage>
<OPTXL>
<LMap>1</LMap>
<LComments>1</LComments>
<LGenerateSymbols>1</LGenerateSymbols>
<LLibSym>1</LLibSym>
<LLines>1</LLines>
<LLocSym>1</LLocSym>
<LPubSym>1</LPubSym>
<LXref>0</LXref>
<LExpSel>0</LExpSel>
</OPTXL>
<OPTFL>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
<CpuCode>255</CpuCode>
<Books>
<Book>
<Number>0</Number>
<Title>Data Sheet</Title>
<Path>DATASHTS\CYPRESS\CY7C68XXX_DS.PDF</Path>
</Book>
<Book>
<Number>1</Number>
<Title>Technical Reference Manual</Title>
<Path>DATASHTS\CYPRESS\FX2_TRM.PDF</Path>
</Book>
</Books>
<DebugOpt>
<uSim>1</uSim>
<uTrg>0</uTrg>
<sLdApp>1</sLdApp>
<sGomain>1</sGomain>
<sRbreak>1</sRbreak>
<sRwatch>1</sRwatch>
<sRmem>1</sRmem>
<sRfunc>1</sRfunc>
<sRbox>1</sRbox>
<tLdApp>1</tLdApp>
<tGomain>0</tGomain>
<tRbreak>1</tRbreak>
<tRwatch>1</tRwatch>
<tRmem>1</tRmem>
<tRfunc>0</tRfunc>
<tRbox>1</tRbox>
<tRtrace>1</tRtrace>
<sRSysVw>1</sRSysVw>
<tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
<bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf>
<nTsel>-1</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
<sDlgPa></sDlgPa>
<sIfile></sIfile>
<tDll></tDll>
<tDllPa></tDllPa>
<tDlgDll></tDlgDll>
<tDlgPa></tDlgPa>
<tIfile></tIfile>
<pMon></pMon>
</DebugOpt>
<Breakpoint/>
<Tracepoint>
<THDelay>0</THDelay>
</Tracepoint>
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
<aLwin>0</aLwin>
<aCover>0</aCover>
<aSer1>0</aSer1>
<aSer2>0</aSer2>
<aPa>0</aPa>
<viewmode>0</viewmode>
<vrSel>0</vrSel>
<aSym>0</aSym>
<aTbox>0</aTbox>
<AscS1>0</AscS1>
<AscS2>0</AscS2>
<AscS3>0</AscS3>
<aSer3>0</aSer3>
<eProf>0</eProf>
<aLa>0</aLa>
<aPa1>0</aPa1>
<AscS4>0</AscS4>
<aSer4>0</aSer4>
<StkLoc>0</StkLoc>
<TrcWin>0</TrcWin>
<newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
<LintExecutable></LintExecutable>
<LintConfigFile></LintConfigFile>
<bLintAuto>0</bLintAuto>
<bAutoGenD>0</bAutoGenD>
<LntExFlags>0</LntExFlags>
<pMisraName></pMisraName>
<pszMrule></pszMrule>
<pSingCmds></pSingCmds>
<pMultCmds></pMultCmds>
<pMisraNamep></pMisraNamep>
<pszMrulep></pszMrulep>
<pSingCmdsp></pSingCmdsp>
<pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
<Group>
<GroupName>fx2lp - startup</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>1</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_startup.s51</PathWithFileName>
<FilenameWithoutPath>fx2_startup.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>2</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_conf.s51</PathWithFileName>
<FilenameWithoutPath>fx2_conf.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2lp - init</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>3</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_delay1ms.s51</PathWithFileName>
<FilenameWithoutPath>fx2_delay1ms.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>4</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_delay.c</PathWithFileName>
<FilenameWithoutPath>fx2_delay.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>5</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_globals.c</PathWithFileName>
<FilenameWithoutPath>fx2_globals.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>6</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_init.c</PathWithFileName>
<FilenameWithoutPath>fx2_init.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2lp - iic</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>7</FileNumber>
<FileType>1</FileType>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_i2c.c</PathWithFileName>
<FilenameWithoutPath>fx2_i2c.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>8</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_eeprom.c</PathWithFileName>
<FilenameWithoutPath>fx2_eeprom.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2lp - timer</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>9</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_tmr.c</PathWithFileName>
<FilenameWithoutPath>fx2_tmr.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2lp - serial</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
</Group>
<Group>
<GroupName>fx2lp - usb</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>10</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_jmptbl.s51</PathWithFileName>
<FilenameWithoutPath>fx2_jmptbl.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>11</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_disconnect.c</PathWithFileName>
<FilenameWithoutPath>fx2_disconnect.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>12</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_usb_isr.c</PathWithFileName>
<FilenameWithoutPath>fx2_usb_isr.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>13</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_usb_sleep.c</PathWithFileName>
<FilenameWithoutPath>fx2_usb_sleep.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>14</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_usb_sudav.c</PathWithFileName>
<FilenameWithoutPath>fx2_usb_sudav.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2mr - jtag</GroupName>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>15</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2mr\src\jtag\jtag.s51</PathWithFileName>
<FilenameWithoutPath>jtag.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2mr - lcd</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>16</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2mr\src\lcd\7565r\lcd_7565r.c</PathWithFileName>
<FilenameWithoutPath>lcd_7565r.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>tri - base</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>17</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.base\src\tri_dscr.s51</PathWithFileName>
<FilenameWithoutPath>tri_dscr.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>18</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.base\src\tri_main.c</PathWithFileName>
<FilenameWithoutPath>tri_main.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>19</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.base\src\tri_conf.c</PathWithFileName>
<FilenameWithoutPath>tri_conf.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>20</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.base\src\tri_glb.c</PathWithFileName>
<FilenameWithoutPath>tri_glb.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>21</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.base\src\tri_cmd.c</PathWithFileName>
<FilenameWithoutPath>tri_cmd.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>22</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.base\src\tri_usb_ep1.c</PathWithFileName>
<FilenameWithoutPath>tri_usb_ep1.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>tri - jtag</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>23</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\jtag_boot.c</PathWithFileName>
<FilenameWithoutPath>jtag_boot.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>24</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\jtag_conf.c</PathWithFileName>
<FilenameWithoutPath>jtag_conf.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>25</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\jtag_cmd.c</PathWithFileName>
<FilenameWithoutPath>jtag_cmd.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>26</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\jtag_ep2.c</PathWithFileName>
<FilenameWithoutPath>jtag_ep2.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
</ProjectOpt>
File diff suppressed because it is too large Load Diff
+16
View File
@@ -0,0 +1,16 @@
#include <fx2.h>
extern bool (*DR_VendorCommand)(void);
extern void (*main_hook)(void);
extern void proto_conf(void);
extern void proto_main(void);
extern bool proto_command(void);
void tri_boot(void)
{
proto_conf();
main_hook = proto_main;
DR_VendorCommand = proto_command;
}
+55
View File
@@ -0,0 +1,55 @@
#include <fx2.h>
#include <fx2_regs.h>
#include <lcd\lcd_7565r.h>
extern bool jtag_command(void);
// ================================================================================================
// Command
// ================================================================================================
bool proto_command(void)
{
bool result = true;
bit dir = (SETUPDAT[0] & 0x80) ? 1 : 0;
BYTE cmd = SETUPDAT[1]; // (SETUPDAT[1] & 0x7F);
PSUDAV sud = (PSUDAV)SETUPDAT;
lcd_gotoxy(0,7);
lcd_putx2(cmd);
// ----------------------------------------------------
// IN command device -> host
// ----------------------------------------------------
if(dir)
{
switch(sud->Request)
{
// --------------------------------------------
// default
// --------------------------------------------
default:
result = jtag_command();
break;
}
}
// ----------------------------------------------------
// OUT command host -> device
// ----------------------------------------------------
else
{
switch(sud->Request)
{
// --------------------------------------------
// default
// --------------------------------------------
default:
result = jtag_command();
break;
}
}
return result;
}
+147
View File
@@ -0,0 +1,147 @@
#include <fx2.h>
#include <fx2_regs.h>
#include <fx2_syncdelay.h>
#include <fx2_i2c.h>
#include <lcd\lcd_7565r.h>
extern void FX2_Delay( WORD);
extern void fx2_tmr_init(void);
extern xdata BYTE devSerialNumber [];
extern xdata BYTE devCapabilities [];
extern xdata BYTE devIdentifier [];
extern void jtag_main(void);
extern void jtag_conf(void);
extern void tri_conf();
xdata char b[100];
// ================================================================================================
// main
// ================================================================================================
void proto_main(void)
{
int i;
// ------------------------------------------------------------------------
// call "inherited" main()
// ------------------------------------------------------------------------
jtag_main();
// ------------------------------------------------------------------------
// "proto" specific main()
// ------------------------------------------------------------------------
lcd_gotoxy(0,0);
lcd_puts("PROTO",5);
/*
ADAU1701
PD7 = 1;
FX2_Delay(100);
PD7 = 0;
FX2_Delay(100);
PD7 = 1;
FX2_Delay(100);
b[0] = 0x00;
b[1] = 0x00;
b[2] = 0x00;
b[3] = 0x22;
b[4] = 0x33;
b[5] = 0x44;
// for(i=0; i<0x28; i++)
// b[i+2] = 0;
// fx2_i2c_read( 0x34, 1, b);
fx2_i2c_write( 0x34, 6, b);
fx2_i2c_read_rs( 0x34, 0x00, 4, b);
*/
}
// ================================================================================================
// configure
// ================================================================================================
void proto_conf()
{
// ------------------------------------------------------------------------
// call "inherited" config()
// ------------------------------------------------------------------------
jtag_conf();
// tri_conf();
// ------------------------------------------------------------------------
// temp serial number
// ------------------------------------------------------------------------
devSerialNumber[0] = 'P';
devSerialNumber[1] = '5';
// ------------------------------------------------------------------------
// Board specific initialization
//
// TRINITY_1:
//
// - 2 layers board
// - 56 pin mcu
// - 16 kB flash EEPROM
//
// J1 J2
// -------------------------- --------------------------
// GND - 1 2 - 5.0V SLWR - 1 2 - SLRD
// GND - 3 4 - 5.0V CLKOUT - 3 4 - GND
// PB.2 - 5 6 - PB.3 PD.5 - 5 6 - GND
// PB.1 - 7 8 - PB.0 PD.6 - 7 8 - PD.7
// SCL - 9 10 - SDA 3.3V - 9 10 - 3.3V
// PB.6 - 11 12 - PB.7 3.3V - 11 12 - 3.3V
// PB.5 - 13 14 - PB.4 PD.4 - 13 14 - GND
// FLAG.B - 15 16 - FLAG.A PD.3 - 15 16 - PD.2
// PA.2 - 17 18 - FLAG.C PD.1 - 17 18 - PD.0
// PA.1 - 19 20 - PA.0 GND - 19 20 - GND
// PA.7 - 21 22 - PA.3 GND - 21 22 - GND
// PA.4 - 23 24 - GND GND - 23 24 - GND
// PA.5 - 25 26 - PA.5 RESET - 25 26 - WU
//
//
// JTAG TOP
// ----------------
// T T G G P
// D C N N W
// I K D D R
//
// 9 7 5 3 1
// 10 8 6 4 2
//
// T T G G T
// R M N N D
// S S D D O
// T
//
// In case if JTAG is used, the following pins are used for JTAG interface:
//
// TCK - PA.0 out
// TMS - PA.1 out
// TDI - PA.7 out
// TDO - PA.3 in
// ena - PA.4 out
//
//
// In case the DOG LCD is used, the following pins are used for LCD interface.
//
// RST - PD.6 out
// CS - PD.5 out
// A0 - PD.4 out
// SCL - PD.3 out
// SI - PD.1 out
//
// ------------------------------------------------------------------------
// ------------------------------------------------------------------------
// INITIALIZE LCD
// ------------------------------------------------------------------------
lcd_init();
}
+39
View File
@@ -0,0 +1,39 @@
#include "uvna.h"
// ============================================================================
// uvna_spi()
// ============================================================================
static void uvna_spi(BYTE d)
{
PIN_SS = 1;
// --------------------------------------------------------------
// Shift out bit 7 and bit 6. These values are not used anyway...
// --------------------------------------------------------------
PIN_SDI = (d & 0x80) ? 1 : 0; PIN_SCK = 1; PIN_SCK = 0;
PIN_SDI = (d & 0x40) ? 1 : 0; PIN_SCK = 1; PIN_SCK = 0;
// --------------------------------------------------------------
// Shift out A1 and A0 address bits.
// --------------------------------------------------------------
PIN_SDI = (d & 0x20) ? 1 : 0; PIN_SCK = 1; PIN_SCK = 0;
PIN_SDI = (d & 0x10) ? 1 : 0; PIN_SCK = 1; PIN_SCK = 0;
// --------------------------------------------------------------
// Shift out D3..D0 data bits.
// --------------------------------------------------------------
PIN_SDI = (d & 0x08) ? 1 : 0; PIN_SCK = 1; PIN_SCK = 0;
PIN_SDI = (d & 0x04) ? 1 : 0; PIN_SCK = 1; PIN_SCK = 0;
PIN_SDI = (d & 0x02) ? 1 : 0; PIN_SCK = 1; PIN_SCK = 0;
PIN_SDI = (d & 0x01) ? 1 : 0; PIN_SCK = 1; PIN_SCK = 0;
PIN_SS = 0;
}
// ============================================================================
// xclock
// ============================================================================
void uvna_xclock(BYTE clk)
{
uvna_spi(clk & 0x0F);
}
+13
View File
@@ -0,0 +1,13 @@
#ifndef __UVNA_H__
#define __UVNA_H__
#include <fx2.h>
#include <fx2_regs.h>
#define PIN_SS PB0
#define PIN_SCK PB1
#define PIN_SDI PB2
extern void uvna_xclock( BYTE clock);
#endif
+16
View File
@@ -0,0 +1,16 @@
#include <fx2.h>
extern bool (*DR_VendorCommand)(void);
extern void (*main_hook)(void);
extern void uvna_conf(void);
extern void uvna_main(void);
extern bool uvna_command(void);
void TRI_Boot(void)
{
uvna_conf();
main_hook = uvna_main;
DR_VendorCommand = uvna_command;
}
+54
View File
@@ -0,0 +1,54 @@
#include <fx2.h>
#include <fx2_regs.h>
#include <lcd\lcd_7565r.h>
extern bool proto_command(void);
// ================================================================================================
// Command
// ================================================================================================
bool uvna_command(void)
{
bool result = true;
bit dir = (SETUPDAT[0] & 0x80) ? 1 : 0;
BYTE cmd = SETUPDAT[1]; // (SETUPDAT[1] & 0x7F);
PSUDAV sud = (PSUDAV)SETUPDAT;
lcd_gotoxy(0,7);
lcd_putx2(cmd);
// ----------------------------------------------------
// IN command device -> host
// ----------------------------------------------------
if(dir)
{
switch(sud->Request)
{
// --------------------------------------------
// default
// --------------------------------------------
default:
result = proto_command();
break;
}
}
// ----------------------------------------------------
// OUT command host -> device
// ----------------------------------------------------
else
{
switch(sud->Request)
{
// --------------------------------------------
// default
// --------------------------------------------
default:
result = proto_command();
break;
}
}
return result;
}
+443
View File
@@ -0,0 +1,443 @@
#include <fx2.h>
#include <fx2_regs.h>
#include <fx2_syncdelay.h>
#include <lcd\lcd_7565r.h>
#include "uvna.h"
extern xdata BYTE devSerialNumber [];
extern xdata BYTE devCapabilities [];
extern xdata BYTE devIdentifier [];
extern bool fx2_i2c_read( BYTE addr, BYTE length, BYTE xdata *dat);
extern bool fx2_i2c_write( BYTE addr, BYTE length, BYTE xdata *dat);
xdata BYTE volatile vna_buffer[4];
extern void proto_main(void);
extern void proto_conf(void);
void dump(void);
// ================================================================================================
// main
// ================================================================================================
void uvna_main(void)
{
// ------------------------------------------------------------------------
// call "inherited" main()
// ------------------------------------------------------------------------
proto_main();
// ------------------------------------------------------------------------
// "uVNA" specific main()
// ------------------------------------------------------------------------
lcd_gotoxy(0,0);
lcd_puts("uVNA",4);
}
// ================================================================================================
// configure
// ================================================================================================
void uvna_conf()
{
char rc;
// ------------------------------------------------------------------------
// call "inherited" config()
// ------------------------------------------------------------------------
proto_conf();
// ------------------------------------------------------------------------
// temp serial number
// ------------------------------------------------------------------------
devSerialNumber[0] = 'U';
devSerialNumber[1] = '5';
// ------------------------------------------------------------------------
// Board specific initialization
//
// TRINITY_1:
//
// - 2 layers board
// - 56 pin mcu
// - 16 kB flash EEPROM
//
// J1 J2
// -------------------------- --------------------------
// GND - 1 2 - 5.0V SLWR - 1 2 - SLRD
// GND - 3 4 - 5.0V CLKOUT - 3 4 - GND
// PB.2 - 5 6 - PB.3 PD.5 - 5 6 - GND
// PB.1 - 7 8 - PB.0 PD.6 - 7 8 - PD.7
// SCL - 9 10 - SDA 3.3V - 9 10 - 3.3V
// PB.6 - 11 12 - PB.7 3.3V - 11 12 - 3.3V
// PB.5 - 13 14 - PB.4 PD.4 - 13 14 - GND
// FLAG.B - 15 16 - FLAG.A PD.3 - 15 16 - PD.2
// PA.2 - 17 18 - FLAG.C PD.1 - 17 18 - PD.0
// PA.1 - 19 20 - PA.0 GND - 19 20 - GND
// PA.7 - 21 22 - PA.3 GND - 21 22 - GND
// PA.4 - 23 24 - GND GND - 23 24 - GND
// PA.5 - 25 26 - PA.5 RESET - 25 26 - WU
//
//
// JTAG TOP
// ----------------
// T T G G P
// D C N N W
// I K D D R
//
// 9 7 5 3 1
// 10 8 6 4 2
//
// T T G G T
// R M N N D
// S S D D O
// T
//
// If JTAG is used, the following pins are used for JTAG interface:
// (implemented in JTAG)
//
// TCK - PA.0 out
// TMS - PA.1 out
// TDI - PA.7 out
// TDO - PA.3 in
// ena - PA.4 out
//
//
// If DOG LCD is used, the following pins are used for LCD interface.
// (implemented in PROTO)
//
// RST - PD.6 out
// CS - PD.5 out
// A0 - PD.4 out
// SCL - PD.3 out
// SI - PD.1 out
//
// uVNA specific:
//
// - I2C for programming the AD5933 (at address of 0x0D)
// - SPI for programming Xilinx CPLD clock divider
//
// SDI - PB.2
// SCK - PB.1
// SS - PB.0
// ------------------------------------------------------------------------
IOB &= 0xF8; // clear SPI bits
OEB |= 0x07; // enable SPI bits (out)
rc = fx2_i2c_read( 0x08, 4, vna_buffer);
switch(rc)
{
case I2C_BERROR:
lcd_gotoxy(0,6);
lcd_putc('B');
break;
case I2C_NACK:
lcd_gotoxy(0,6);
lcd_putc('N');
break;
}
//fx2_i2c_read( 0x10, 2, vna_buffer);
return;
// -------------------------------------------------------------------
// initialize uVNA
// -------------------------------------------------------------------
uvna_xclock(12);
lcd_gotoxy(0,6);
//
return;
// start freq
vna_buffer[0] = 0x82;
vna_buffer[1] = 0x0F;
fx2_i2c_write( 0x0D, 2, vna_buffer);
vna_buffer[0] = 0x83;
vna_buffer[1] = 0x5C;
fx2_i2c_write( 0x0D, 2, vna_buffer);
vna_buffer[0] = 0x84;
vna_buffer[1] = 0x28;
// freq increments
vna_buffer[0] = 0x85;
vna_buffer[1] = 0x00;
fx2_i2c_write( 0x0D, 2, vna_buffer);
vna_buffer[0] = 0x86;
vna_buffer[1] = 0x20;
fx2_i2c_write( 0x0D, 2, vna_buffer);
vna_buffer[0] = 0x87;
vna_buffer[1] = 0x4F;
fx2_i2c_write( 0x0D, 2, vna_buffer);
// number steps
vna_buffer[0] = 0x88;
vna_buffer[1] = 0x00;
fx2_i2c_write( 0x0D, 2, vna_buffer);
vna_buffer[0] = 0x89;
vna_buffer[1] = 99;
fx2_i2c_write( 0x0D, 2, vna_buffer);
// settling cycles
vna_buffer[0] = 0x8A;
vna_buffer[1] = 0x00;
fx2_i2c_write( 0x0D, 2, vna_buffer);
vna_buffer[0] = 0x8B;
vna_buffer[1] = 0x0A;
fx2_i2c_write( 0x0D, 2, vna_buffer);
// standby
// -----------------------------------------
vna_buffer[0] = 0x80;
vna_buffer[1] = 0xB0;
fx2_i2c_write( 0x0D, 2, vna_buffer);
vna_buffer[0] = 0x81;
vna_buffer[1] = 0x00;
fx2_i2c_write( 0x0D, 2, vna_buffer);
// ini with start freq
vna_buffer[0] = 0x80;
vna_buffer[1] = 0x10;
fx2_i2c_write( 0x0D, 2, vna_buffer);
// return;
// dump();
// start sweep
vna_buffer[0] = 0x80;
vna_buffer[1] = 0x20;
fx2_i2c_write( 0x0D, 2, vna_buffer);
vna_buffer[0] = 0xB0;
vna_buffer[1] = 0x8F;
fx2_i2c_write( 0x0D, 2, vna_buffer);
fx2_i2c_read( 0x0D, 1, vna_buffer);
while(1)
{
while( (vna_buffer[0] & 0x02) == 0)
{
vna_buffer[0] = 0xB0;
vna_buffer[1] = 0x8F;
fx2_i2c_write( 0x0D, 2, vna_buffer);
fx2_i2c_read( 0x0D, 1, vna_buffer);
// lcd_gotoxy(19,1);
// lcd_putx2(vna_buffer[0] & 0x0F | 0x80);
}
if( vna_buffer[0] & 0x04)
break;
// read values
// step sweep
vna_buffer[0] = 0x80;
vna_buffer[1] = 0x30;
fx2_i2c_write( 0x0D, 2, vna_buffer);
vna_buffer[0] = 0xB0;
vna_buffer[1] = 0x8F;
fx2_i2c_write( 0x0D, 2, vna_buffer);
fx2_i2c_read( 0x0D, 1, vna_buffer);
// lcd_gotoxy(19,2);
// lcd_putx2(vna_buffer[0] & 0x0F | 0x40);
}
dump();
return;
/*
vna_buffer[0] = 0xAA;
FX2_Delay(150); i2c_write( 0x0D, 1, vna_buffer);
FX2_Delay(150); i2c_write( 0x0D, 1, vna_buffer);
FX2_Delay(150); i2c_write( 0x0D, 1, vna_buffer);
vna_buffer[0] = 0xB0;
vna_buffer[1] = 0x80;
FX2_Delay(50); i2c_write( 0x0D, 2, vna_buffer);
FX2_Delay(50); i2c_read( 0x0D, 1, vna_buffer); lcd_putx2(vna_buffer[0]);
FX2_Delay(50); i2c_read( 0x0D, 1, vna_buffer); lcd_putx2(vna_buffer[0]);
FX2_Delay(50); i2c_read( 0x0D, 1, vna_buffer); lcd_putx2(vna_buffer[0]);
return;
vna_buffer[0] = 0x82; // adr = 0x82 (start frequency high byte)
vna_buffer[1] = 0x01; // val = 0x01 (high byte)
if (i2c_write( 0x0D, 2, vna_buffer))
lcd_putc('2');
else
lcd_putc('x');
FX2_Delay(50);
vna_buffer[0] = 0x83; // adr = 0x82 (start frequency mid byte)
vna_buffer[1] = 0x02; // val = 0x02
// i2c_write( 0x0D, 2, vna_buffer);
if (i2c_write( 0x0D, 2, vna_buffer))
lcd_putc('3');
else
lcd_putc('x');
//
vna_buffer[0] = 0xB0; // cmd: pointer command
vna_buffer[1] = 0x82; // cmd: pointer command
// i2c_write( 0x0D, 2, vna_buffer); //
if (i2c_write( 0x0D, 2, vna_buffer))
lcd_putc('4');
else
lcd_putc('x');
vna_buffer[0] = 0x01;
FX2_Delay(50); i2c_write( 0x0D, 1, vna_buffer);
FX2_Delay(50); i2c_write( 0x0D, 1, vna_buffer);
FX2_Delay(50); i2c_write( 0x0D, 1, vna_buffer);
FX2_Delay(50);
vna_buffer[0] = 0xB0; // cmd: pointer command
vna_buffer[1] = 0x82; // cmd: pointer command
if (i2c_write( 0x0D, 2, vna_buffer))
lcd_putc('5');
else
lcd_putc('x');
FX2_Delay(50);
i2c_read(0x0D, 1, vna_buffer);
lcd_gotoxy(0,7);
lcd_putx2(vna_buffer[0]);
*/
}
// ================================================================================================
// dump uvna registers
// ================================================================================================
void dump(void)
{
// command
lcd_gotoxy(0,1); lcd_puts("0x80: ",6);
vna_buffer[0] = 0xB0;
vna_buffer[1] = 0x80;
fx2_i2c_write( 0x0D, 2, vna_buffer);
fx2_i2c_read( 0x0D, 1, vna_buffer); lcd_putx2(vna_buffer[0]);
fx2_i2c_read( 0x0D, 1, vna_buffer); lcd_putx2(vna_buffer[0]);
// status
lcd_gotoxy(13,1); lcd_puts("0x8F: ",6);
vna_buffer[0] = 0xB0;
vna_buffer[1] = 0x8F;
fx2_i2c_write( 0x0D, 2, vna_buffer);
fx2_i2c_read( 0x0D, 1, vna_buffer); lcd_putx2(vna_buffer[0]);
// start freq
lcd_gotoxy(0,2); lcd_puts("0x82: ",6);
vna_buffer[0] = 0xB0;
vna_buffer[1] = 0x82;
fx2_i2c_write( 0x0D, 2, vna_buffer);
fx2_i2c_read( 0x0D, 1, vna_buffer); lcd_putx2(vna_buffer[0]);
fx2_i2c_read( 0x0D, 1, vna_buffer); lcd_putx2(vna_buffer[0]);
fx2_i2c_read( 0x0D, 1, vna_buffer); lcd_putx2(vna_buffer[0]);
// increment
lcd_gotoxy(0,3); lcd_puts("0x85: ",6);
vna_buffer[0] = 0xB0;
vna_buffer[1] = 0x85;
fx2_i2c_write( 0x0D, 2, vna_buffer);
fx2_i2c_read( 0x0D, 1, vna_buffer); lcd_putx2(vna_buffer[0]);
fx2_i2c_read( 0x0D, 1, vna_buffer); lcd_putx2(vna_buffer[0]);
fx2_i2c_read( 0x0D, 1, vna_buffer); lcd_putx2(vna_buffer[0]);
// steps
lcd_gotoxy(0,4); lcd_puts("0x88: ",6);
vna_buffer[0] = 0xB0;
vna_buffer[1] = 0x88;
fx2_i2c_write( 0x0D, 2, vna_buffer);
fx2_i2c_read( 0x0D, 1, vna_buffer); lcd_putx2(vna_buffer[0]);
fx2_i2c_read( 0x0D, 1, vna_buffer); lcd_putx2(vna_buffer[0]);
// settling
lcd_gotoxy(0,5); lcd_puts("0x8A: ",6);
vna_buffer[0] = 0xB0;
vna_buffer[1] = 0x8A;
fx2_i2c_write( 0x0D, 2, vna_buffer);
fx2_i2c_read( 0x0D, 1, vna_buffer); lcd_putx2(vna_buffer[0]);
fx2_i2c_read( 0x0D, 1, vna_buffer); lcd_putx2(vna_buffer[0]);
}
+119
View File
@@ -0,0 +1,119 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<ProjectGui xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_gui.xsd">
<SchemaVersion>-6.1</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<PrjGuiSettings>
<LastAddFilePath></LastAddFilePath>
</PrjGuiSettings>
<ViewPool/>
<SECTreeCtrl>
<View>
<WinId>38003</WinId>
<ViewName>Registers</ViewName>
<TableColWidths>228 229</TableColWidths>
</View>
<View>
<WinId>346</WinId>
<ViewName>Code Coverage</ViewName>
<TableColWidths>293 160</TableColWidths>
</View>
<View>
<WinId>204</WinId>
<ViewName>Performance Analyzer</ViewName>
<TableColWidths>453</TableColWidths>
</View>
</SECTreeCtrl>
<TreeListPane>
<View>
<WinId>35141</WinId>
<ViewName>Event Statistics</ViewName>
<UserString></UserString>
<TableColWidths>200 50 700</TableColWidths>
</View>
<View>
<WinId>1506</WinId>
<ViewName>Symbols</ViewName>
<UserString></UserString>
<TableColWidths>106 106 106</TableColWidths>
</View>
<View>
<WinId>1936</WinId>
<ViewName>Watch 1</ViewName>
<UserString></UserString>
<TableColWidths>200 133 133</TableColWidths>
</View>
<View>
<WinId>1937</WinId>
<ViewName>Watch 2</ViewName>
<UserString></UserString>
<TableColWidths>200 133 133</TableColWidths>
</View>
<View>
<WinId>1935</WinId>
<ViewName>Call Stack + Locals</ViewName>
<UserString></UserString>
<TableColWidths>200 133 133</TableColWidths>
</View>
<View>
<WinId>2506</WinId>
<ViewName>Trace Data</ViewName>
<UserString></UserString>
<TableColWidths>75 135 130 95 70 230 200 150</TableColWidths>
</View>
<View>
<WinId>466</WinId>
<ViewName>Source Browser</ViewName>
<UserString>500</UserString>
<TableColWidths>300</TableColWidths>
</View>
</TreeListPane>
<CompViewPool/>
<WindowSettings>
<LogicAnalizer>
<ShowLACursor>1</ShowLACursor>
<ShowSignalInfo>1</ShowSignalInfo>
<ShowCycles>0</ShowCycles>
<LeftSideBarSize>0</LeftSideBarSize>
<TimeBaseIndex>-1</TimeBaseIndex>
</LogicAnalizer>
</WindowSettings>
<WinLayoutEx>
<sActiveDebugView></sActiveDebugView>
<WindowPosition>
<length>44</length>
<flags>0</flags>
<showCmd>1</showCmd>
<MinPosition>
<xPos>-1</xPos>
<yPos>-1</yPos>
</MinPosition>
<MaxPosition>
<xPos>-1</xPos>
<yPos>-1</yPos>
</MaxPosition>
<NormalPosition>
<Top>228</Top>
<Left>231</Left>
<Right>1892</Right>
<Bottom>1333</Bottom>
</NormalPosition>
</WindowPosition>
<MDIClientArea>
<RegID>0</RegID>
<MDITabState>
<Len>366</Len>
<Data>01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000002000000010000000100000043433A5C576F726B5C6D722E73775C73772E6D63755C6D63752E6678325C6678322E7472695C70726A5C7472692E70726F746F5C7372635C70726F746F5F626F6F742E63000000000C70726F746F5F626F6F742E6300000000C5D4F200FFFFFFFF43433A5C576F726B5C6D722E73775C73772E6D63755C6D63752E6678325C6678322E7472695C70726A5C7472692E70726F746F5C7372635C70726F746F5F636F6E662E63000000000C70726F746F5F636F6E662E6300000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000C6020000520100005C0700009A030000</Data>
</MDITabState>
</MDIClientArea>
</WinLayoutEx>
</ProjectGui>
+664
View File
@@ -0,0 +1,664 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
<SchemaVersion>1.0</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<Extensions>
<cExt>*.c</cExt>
<aExt>*.s*; *.src; *.a*</aExt>
<oExt>*.obj</oExt>
<lExt>*.lib</lExt>
<tExt>*.txt; *.h; *.inc</tExt>
<pExt>*.plm</pExt>
<CppX>*.cpp</CppX>
<nMigrate>0</nMigrate>
</Extensions>
<DaveTm>
<dwLowDateTime>0</dwLowDateTime>
<dwHighDateTime>0</dwHighDateTime>
</DaveTm>
<Target>
<TargetName>proto</TargetName>
<ToolsetNumber>0x0</ToolsetNumber>
<ToolsetName>MCS-51</ToolsetName>
<TargetOption>
<CLK51>48000000</CLK51>
<OPTTT>
<gFlags>1</gFlags>
<BeepAtEnd>1</BeepAtEnd>
<RunSim>1</RunSim>
<RunTarget>0</RunTarget>
<RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>0</HexSelection>
<FlashByte>65535</FlashByte>
<HexRangeLowAddress>0</HexRangeLowAddress>
<HexRangeHighAddress>0</HexRangeHighAddress>
<HexOffset>0</HexOffset>
</OPTHX>
<OPTLEX>
<PageWidth>120</PageWidth>
<PageLength>65</PageLength>
<TabStop>8</TabStop>
<ListingPath>.\lst\proto\</ListingPath>
</OPTLEX>
<ListingPage>
<CreateCListing>1</CreateCListing>
<CreateAListing>1</CreateAListing>
<CreateLListing>1</CreateLListing>
<CreateIListing>0</CreateIListing>
<AsmCond>1</AsmCond>
<AsmSymb>1</AsmSymb>
<AsmXref>0</AsmXref>
<CCond>1</CCond>
<CCode>0</CCode>
<CListInc>0</CListInc>
<CSymb>0</CSymb>
<LinkerCodeListing>0</LinkerCodeListing>
</ListingPage>
<OPTXL>
<LMap>1</LMap>
<LComments>1</LComments>
<LGenerateSymbols>1</LGenerateSymbols>
<LLibSym>1</LLibSym>
<LLines>1</LLines>
<LLocSym>1</LLocSym>
<LPubSym>1</LPubSym>
<LXref>0</LXref>
<LExpSel>0</LExpSel>
</OPTXL>
<OPTFL>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
<CpuCode>255</CpuCode>
<Books>
<Book>
<Number>0</Number>
<Title>Data Sheet</Title>
<Path>DATASHTS\CYPRESS\CY7C68XXX_DS.PDF</Path>
</Book>
<Book>
<Number>1</Number>
<Title>Technical Reference Manual</Title>
<Path>DATASHTS\CYPRESS\FX2_TRM.PDF</Path>
</Book>
</Books>
<DebugOpt>
<uSim>1</uSim>
<uTrg>0</uTrg>
<sLdApp>1</sLdApp>
<sGomain>1</sGomain>
<sRbreak>1</sRbreak>
<sRwatch>1</sRwatch>
<sRmem>1</sRmem>
<sRfunc>1</sRfunc>
<sRbox>1</sRbox>
<tLdApp>1</tLdApp>
<tGomain>0</tGomain>
<tRbreak>1</tRbreak>
<tRwatch>1</tRwatch>
<tRmem>1</tRmem>
<tRfunc>0</tRfunc>
<tRbox>1</tRbox>
<tRtrace>1</tRtrace>
<sRSysVw>1</sRSysVw>
<tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
<bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf>
<nTsel>-1</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
<sDlgPa></sDlgPa>
<sIfile></sIfile>
<tDll></tDll>
<tDllPa></tDllPa>
<tDlgDll></tDlgDll>
<tDlgPa></tDlgPa>
<tIfile></tIfile>
<pMon></pMon>
</DebugOpt>
<TargetDriverDllRegistry>
<SetRegEntry>
<Number>0</Number>
<Key>DLGDP51</Key>
<Name>(98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(99=-1,-1,-1,-1,0)(101=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0)(94=-1,-1,-1,-1,0)(104=-1,-1,-1,-1,0)(5065=-1,-1,-1,-1,0)</Name>
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint/>
<MemoryWindow1>
<Mm>
<WinNumber>1</WinNumber>
<SubType>0</SubType>
<ItemText>0</ItemText>
<AccSizeX>0</AccSizeX>
</Mm>
</MemoryWindow1>
<Tracepoint>
<THDelay>0</THDelay>
</Tracepoint>
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
<aLwin>1</aLwin>
<aCover>0</aCover>
<aSer1>0</aSer1>
<aSer2>0</aSer2>
<aPa>0</aPa>
<viewmode>1</viewmode>
<vrSel>0</vrSel>
<aSym>0</aSym>
<aTbox>0</aTbox>
<AscS1>0</AscS1>
<AscS2>0</AscS2>
<AscS3>0</AscS3>
<aSer3>0</aSer3>
<eProf>0</eProf>
<aLa>0</aLa>
<aPa1>0</aPa1>
<AscS4>0</AscS4>
<aSer4>0</aSer4>
<StkLoc>0</StkLoc>
<TrcWin>0</TrcWin>
<newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
<LintExecutable></LintExecutable>
<LintConfigFile></LintConfigFile>
<bLintAuto>0</bLintAuto>
<bAutoGenD>0</bAutoGenD>
<LntExFlags>0</LntExFlags>
<pMisraName></pMisraName>
<pszMrule></pszMrule>
<pSingCmds></pSingCmds>
<pMultCmds></pMultCmds>
<pMisraNamep></pMisraNamep>
<pszMrulep></pszMrulep>
<pSingCmdsp></pSingCmdsp>
<pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
<Group>
<GroupName>fx2lp - startup</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>1</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_startup.s51</PathWithFileName>
<FilenameWithoutPath>fx2_startup.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>2</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_conf.s51</PathWithFileName>
<FilenameWithoutPath>fx2_conf.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2lp - init</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>3</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_delay1ms.s51</PathWithFileName>
<FilenameWithoutPath>fx2_delay1ms.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>4</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_delay.c</PathWithFileName>
<FilenameWithoutPath>fx2_delay.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>5</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_globals.c</PathWithFileName>
<FilenameWithoutPath>fx2_globals.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>6</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_init.c</PathWithFileName>
<FilenameWithoutPath>fx2_init.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2lp - iic</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>7</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_i2c.c</PathWithFileName>
<FilenameWithoutPath>fx2_i2c.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>8</FileNumber>
<FileType>1</FileType>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_eeprom.c</PathWithFileName>
<FilenameWithoutPath>fx2_eeprom.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2lp - timer</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>9</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_tmr.s51</PathWithFileName>
<FilenameWithoutPath>fx2_tmr.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2lp - usb</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>10</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_jmptbl.s51</PathWithFileName>
<FilenameWithoutPath>fx2_jmptbl.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>11</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_disconnect.c</PathWithFileName>
<FilenameWithoutPath>fx2_disconnect.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>12</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_usb_isr.c</PathWithFileName>
<FilenameWithoutPath>fx2_usb_isr.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>13</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_usb_sleep.c</PathWithFileName>
<FilenameWithoutPath>fx2_usb_sleep.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>14</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2lp\src\fx2_usb_sudav.c</PathWithFileName>
<FilenameWithoutPath>fx2_usb_sudav.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2mr - jtag</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>15</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2mr\src\jtag\jtag.s51</PathWithFileName>
<FilenameWithoutPath>jtag.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>fx2mr - lcd</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>16</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\..\lib\fx2mr\src\lcd\7565r\lcd_7565r.c</PathWithFileName>
<FilenameWithoutPath>lcd_7565r.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>tri - base</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>17</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.base\src\tri_dscr.s51</PathWithFileName>
<FilenameWithoutPath>tri_dscr.s51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>18</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.base\src\tri_main.c</PathWithFileName>
<FilenameWithoutPath>tri_main.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>19</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.base\src\tri_conf.c</PathWithFileName>
<FilenameWithoutPath>tri_conf.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>20</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.base\src\tri_glb.c</PathWithFileName>
<FilenameWithoutPath>tri_glb.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>21</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.base\src\tri_cmd.c</PathWithFileName>
<FilenameWithoutPath>tri_cmd.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>22</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.base\src\tri_usb_ep1.c</PathWithFileName>
<FilenameWithoutPath>tri_usb_ep1.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>tri - jtag</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>23</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.jtag\src\jtag_conf.c</PathWithFileName>
<FilenameWithoutPath>jtag_conf.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>24</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.jtag\src\jtag_cmd.c</PathWithFileName>
<FilenameWithoutPath>jtag_cmd.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>25</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\tri.jtag\src\jtag_ep2.c</PathWithFileName>
<FilenameWithoutPath>jtag_ep2.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>tri - proto</GroupName>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>26</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\proto_boot.c</PathWithFileName>
<FilenameWithoutPath>proto_boot.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>27</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\proto_conf.c</PathWithFileName>
<FilenameWithoutPath>proto_conf.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>28</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\proto_cmd.c</PathWithFileName>
<FilenameWithoutPath>proto_cmd.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>tri - proto - uvna</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>29</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\uvna\uvna_boot.c</PathWithFileName>
<FilenameWithoutPath>uvna_boot.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>30</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\uvna\uvna_conf.c</PathWithFileName>
<FilenameWithoutPath>uvna_conf.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>31</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\uvna\uvna_cmd.c</PathWithFileName>
<FilenameWithoutPath>uvna_cmd.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>11</GroupNumber>
<FileNumber>32</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\src\uvna\uvna.c</PathWithFileName>
<FilenameWithoutPath>uvna.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
</ProjectOpt>
+792
View File
@@ -0,0 +1,792 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
<SchemaVersion>1.1</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<Targets>
<Target>
<TargetName>proto</TargetName>
<ToolsetNumber>0x0</ToolsetNumber>
<ToolsetName>MCS-51</ToolsetName>
<uAC6>0</uAC6>
<TargetOption>
<TargetCommonOption>
<Device>EZ-USB FX2LP (CY7C68XXX-X)</Device>
<Vendor>Cypress</Vendor>
<Cpu>IRAM(0-0xFF) IROM(0-0x3FFF) XRAM(0xE000-0xE1FF) CLOCK(48000000) MODDP2</Cpu>
<FlashUtilSpec></FlashUtilSpec>
<StartupFile>"LIB\STARTUP.A51" ("Standard 8051 Startup Code")</StartupFile>
<FlashDriverDll></FlashDriverDll>
<DeviceId>3787</DeviceId>
<RegisterFile>FX2REGS.H</RegisterFile>
<MemoryEnv></MemoryEnv>
<Cmp></Cmp>
<Asm></Asm>
<Linker></Linker>
<OHString></OHString>
<InfinionOptionDll></InfinionOptionDll>
<SLE66CMisc></SLE66CMisc>
<SLE66AMisc></SLE66AMisc>
<SLE66LinkerMisc></SLE66LinkerMisc>
<SFDFile></SFDFile>
<bCustSvd>0</bCustSvd>
<UseEnv>1</UseEnv>
<BinPath>C:\Tools\mcu\Keil\C51\BIN\</BinPath>
<IncludePath>C:\Tools\mcu\Keil\C51\INC;c:\Work\mr.sw\sw.mcu\mcu.fx2\fx2.tri\lib\fx2lp\inc;c:\Work\mr.sw\sw.mcu\mcu.fx2\fx2.tri\lib\fx2mr\inc;c:\Work\mr.sw\sw.mcu\mcu.fx2\fx2.tri\prj\tri.base\inc</IncludePath>
<LibPath></LibPath>
<RegisterFilePath></RegisterFilePath>
<DBRegisterFilePath>Cypress\</DBRegisterFilePath>
<TargetStatus>
<Error>0</Error>
<ExitCodeStop>0</ExitCodeStop>
<ButtonStop>0</ButtonStop>
<NotGenerated>0</NotGenerated>
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
<OutputDirectory>.\obj\proto\</OutputDirectory>
<OutputName>tri_proto</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
<CreateHexFile>1</CreateHexFile>
<DebugInformation>1</DebugInformation>
<BrowseInformation>1</BrowseInformation>
<ListingPath>.\lst\proto\</ListingPath>
<HexFormatSelection>0</HexFormatSelection>
<Merge32K>0</Merge32K>
<CreateBatchFile>0</CreateBatchFile>
<BeforeCompile>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
<UserProg1Name></UserProg1Name>
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
<nStopU1X>0</nStopU1X>
<nStopU2X>0</nStopU2X>
</BeforeCompile>
<BeforeMake>
<RunUserProg1>1</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
<UserProg1Name>cmd /c md bin</UserProg1Name>
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
<nStopB1X>0</nStopB1X>
<nStopB2X>0</nStopB2X>
</BeforeMake>
<AfterMake>
<RunUserProg1>1</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
<UserProg1Name>cmd /c move obj\proto\*.hex bin</UserProg1Name>
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
<nStopA1X>0</nStopA1X>
<nStopA2X>0</nStopA2X>
</AfterMake>
<SelectedForBatchBuild>1</SelectedForBatchBuild>
<SVCSIdString></SVCSIdString>
</TargetCommonOption>
<CommonProperty>
<UseCPPCompiler>0</UseCPPCompiler>
<RVCTCodeConst>0</RVCTCodeConst>
<RVCTZI>0</RVCTZI>
<RVCTOtherData>0</RVCTOtherData>
<ModuleSelection>0</ModuleSelection>
<IncludeInBuild>1</IncludeInBuild>
<AlwaysBuild>0</AlwaysBuild>
<GenerateAssemblyFile>0</GenerateAssemblyFile>
<AssembleAssemblyFile>0</AssembleAssemblyFile>
<PublicsOnly>0</PublicsOnly>
<StopOnExitCode>3</StopOnExitCode>
<CustomArgument></CustomArgument>
<IncludeLibraryModules></IncludeLibraryModules>
<ComprImg>1</ComprImg>
<BankNo>65535</BankNo>
</CommonProperty>
<DllOption>
<SimDllName>S8051.DLL</SimDllName>
<SimDllArguments></SimDllArguments>
<SimDlgDll>DP51.DLL</SimDlgDll>
<SimDlgDllArguments>-pFX2</SimDlgDllArguments>
<TargetDllName>S8051.DLL</TargetDllName>
<TargetDllArguments></TargetDllArguments>
<TargetDlgDll>TP51.DLL</TargetDlgDll>
<TargetDlgDllArguments>-pFX2</TargetDlgDllArguments>
</DllOption>
<DebugOption>
<OPTHX>
<HexSelection>0</HexSelection>
<HexRangeLowAddress>0</HexRangeLowAddress>
<HexRangeHighAddress>0</HexRangeHighAddress>
<HexOffset>0</HexOffset>
<Oh166RecLen>16</Oh166RecLen>
</OPTHX>
<Simulator>
<UseSimulator>1</UseSimulator>
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
<RunToMain>1</RunToMain>
<RestoreBreakpoints>1</RestoreBreakpoints>
<RestoreWatchpoints>1</RestoreWatchpoints>
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
<RestoreFunctions>1</RestoreFunctions>
<RestoreToolbox>1</RestoreToolbox>
<LimitSpeedToRealTime>0</LimitSpeedToRealTime>
<RestoreSysVw>1</RestoreSysVw>
</Simulator>
<Target>
<UseTarget>0</UseTarget>
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
<RunToMain>0</RunToMain>
<RestoreBreakpoints>1</RestoreBreakpoints>
<RestoreWatchpoints>1</RestoreWatchpoints>
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
<RestoreFunctions>0</RestoreFunctions>
<RestoreToolbox>1</RestoreToolbox>
<RestoreTracepoints>1</RestoreTracepoints>
<RestoreSysVw>1</RestoreSysVw>
</Target>
<RunDebugAfterBuild>0</RunDebugAfterBuild>
<TargetSelection>-1</TargetSelection>
<SimDlls>
<CpuDll></CpuDll>
<CpuDllArguments></CpuDllArguments>
<PeripheralDll></PeripheralDll>
<PeripheralDllArguments></PeripheralDllArguments>
<InitializationFile></InitializationFile>
</SimDlls>
<TargetDlls>
<CpuDll></CpuDll>
<CpuDllArguments></CpuDllArguments>
<PeripheralDll></PeripheralDll>
<PeripheralDllArguments></PeripheralDllArguments>
<InitializationFile></InitializationFile>
<Driver></Driver>
</TargetDlls>
</DebugOption>
<Utilities>
<Flash1>
<UseTargetDll>0</UseTargetDll>
<UseExternalTool>0</UseExternalTool>
<RunIndependent>0</RunIndependent>
<UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
<Capability>0</Capability>
<DriverSelection>-1</DriverSelection>
</Flash1>
<bUseTDR>0</bUseTDR>
<Flash2></Flash2>
<Flash3></Flash3>
<Flash4></Flash4>
<pFcarmOut></pFcarmOut>
<pFcarmGrp></pFcarmGrp>
<pFcArmRoot></pFcArmRoot>
<FcArmLst>0</FcArmLst>
</Utilities>
<Target51>
<Target51Misc>
<MemoryModel>2</MemoryModel>
<RTOS>1</RTOS>
<RomSize>2</RomSize>
<DataHold>0</DataHold>
<XDataHold>0</XDataHold>
<UseOnchipRom>1</UseOnchipRom>
<UseOnchipArithmetic>0</UseOnchipArithmetic>
<UseMultipleDPTR>0</UseMultipleDPTR>
<UseOnchipXram>1</UseOnchipXram>
<HadIRAM>1</HadIRAM>
<HadXRAM>1</HadXRAM>
<HadIROM>1</HadIROM>
<Moda2>0</Moda2>
<Moddp2>1</Moddp2>
<Modp2>0</Modp2>
<Mod517dp>0</Mod517dp>
<Mod517au>0</Mod517au>
<Mode2>0</Mode2>
<useCB>0</useCB>
<useXB>0</useXB>
<useL251>0</useL251>
<useA251>0</useA251>
<Mx51>0</Mx51>
<ModC812>0</ModC812>
<ModCont>0</ModCont>
<Lp51>0</Lp51>
<useXBS>0</useXBS>
<ModDA>0</ModDA>
<ModAB2>0</ModAB2>
<Mx51P>0</Mx51P>
<hadXRAM2>0</hadXRAM2>
<uocXram2>0</uocXram2>
<hadXRAM3>0</hadXRAM3>
<ModC2>0</ModC2>
<ModH2>0</ModH2>
<Mdu_R515>0</Mdu_R515>
<Mdu_F120>0</Mdu_F120>
<Psoc>0</Psoc>
<hadIROM2>0</hadIROM2>
<hadIROM3>0</hadIROM3>
<ModSmx2>0</ModSmx2>
<cBanks>0</cBanks>
<xBanks>0</xBanks>
<OnChipMemories>
<RCB>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0xffff</Size>
</RCB>
<RXB>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</RXB>
<Ocm1>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocm1>
<Ocm2>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocm2>
<Ocm3>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocm3>
<Ocr1>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocr1>
<Ocr2>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocr2>
<Ocr3>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocr3>
<IRO>
<Type>1</Type>
<StartAddress>0x0</StartAddress>
<Size>0x4000</Size>
</IRO>
<IRA>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x100</Size>
</IRA>
<XRA>
<Type>0</Type>
<StartAddress>0xe000</StartAddress>
<Size>0x200</Size>
</XRA>
<XRA512>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</XRA512>
<IROM512>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</IROM512>
<XRA513>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</XRA513>
<IROM513>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</IROM513>
</OnChipMemories>
</Target51Misc>
<C51>
<RegisterColoring>0</RegisterColoring>
<VariablesInOrder>0</VariablesInOrder>
<IntegerPromotion>1</IntegerPromotion>
<uAregs>0</uAregs>
<UseInterruptVector>1</UseInterruptVector>
<Fuzzy>3</Fuzzy>
<Optimize>8</Optimize>
<WarningLevel>2</WarningLevel>
<SizeSpeed>1</SizeSpeed>
<ObjectExtend>1</ObjectExtend>
<ACallAJmp>0</ACallAJmp>
<InterruptVectorAddress>0</InterruptVectorAddress>
<VariousControls>
<MiscControls></MiscControls>
<Define>LCD_7565,DEBUG</Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
</VariousControls>
</C51>
<Ax51>
<UseMpl>0</UseMpl>
<UseStandard>1</UseStandard>
<UseCase>0</UseCase>
<UseMod51>0</UseMod51>
<VariousControls>
<MiscControls></MiscControls>
<Define>BOARD_JTAG</Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
</VariousControls>
</Ax51>
<Lx51>
<useFile>0</useFile>
<linkonly>0</linkonly>
<UseMemoryFromTarget>1</UseMemoryFromTarget>
<CaseSensitiveSymbols>0</CaseSensitiveSymbols>
<WarningLevel>2</WarningLevel>
<DataOverlaying>1</DataOverlaying>
<OverlayString></OverlayString>
<MiscControls></MiscControls>
<DisableWarningNumbers>15,16</DisableWarningNumbers>
<LinkerCmdFile></LinkerCmdFile>
<Assign></Assign>
<ReserveString></ReserveString>
<CClasses></CClasses>
<UserClasses></UserClasses>
<CSection></CSection>
<UserSection></UserSection>
<CodeBaseAddress></CodeBaseAddress>
<XDataBaseAddress></XDataBaseAddress>
<PDataBaseAddress></PDataBaseAddress>
<BitBaseAddress></BitBaseAddress>
<DataBaseAddress></DataBaseAddress>
<IDataBaseAddress></IDataBaseAddress>
<Precede></Precede>
<Stack></Stack>
<CodeSegmentName></CodeSegmentName>
<XDataSegmentName></XDataSegmentName>
<BitSegmentName></BitSegmentName>
<DataSegmentName></DataSegmentName>
<IDataSegmentName></IDataSegmentName>
</Lx51>
</Target51>
</TargetOption>
<Groups>
<Group>
<GroupName>fx2lp - startup</GroupName>
<Files>
<File>
<FileName>fx2_startup.s51</FileName>
<FileType>2</FileType>
<FilePath>..\..\lib\fx2lp\src\fx2_startup.s51</FilePath>
</File>
<File>
<FileName>fx2_conf.s51</FileName>
<FileType>2</FileType>
<FilePath>..\..\lib\fx2lp\src\fx2_conf.s51</FilePath>
<FileOption>
<CommonProperty>
<UseCPPCompiler>2</UseCPPCompiler>
<RVCTCodeConst>0</RVCTCodeConst>
<RVCTZI>0</RVCTZI>
<RVCTOtherData>0</RVCTOtherData>
<ModuleSelection>0</ModuleSelection>
<IncludeInBuild>0</IncludeInBuild>
<AlwaysBuild>2</AlwaysBuild>
<GenerateAssemblyFile>2</GenerateAssemblyFile>
<AssembleAssemblyFile>2</AssembleAssemblyFile>
<PublicsOnly>2</PublicsOnly>
<StopOnExitCode>11</StopOnExitCode>
<CustomArgument></CustomArgument>
<IncludeLibraryModules></IncludeLibraryModules>
<ComprImg>1</ComprImg>
<BankNo>65535</BankNo>
</CommonProperty>
<File51>
<Ax51>
<UseMpl>2</UseMpl>
<UseStandard>2</UseStandard>
<UseCase>2</UseCase>
<UseMod51>2</UseMod51>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
</VariousControls>
</Ax51>
</File51>
</FileOption>
</File>
</Files>
</Group>
<Group>
<GroupName>fx2lp - init</GroupName>
<Files>
<File>
<FileName>fx2_delay1ms.s51</FileName>
<FileType>2</FileType>
<FilePath>..\..\lib\fx2lp\src\fx2_delay1ms.s51</FilePath>
</File>
<File>
<FileName>fx2_delay.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\lib\fx2lp\src\fx2_delay.c</FilePath>
</File>
<File>
<FileName>fx2_globals.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\lib\fx2lp\src\fx2_globals.c</FilePath>
</File>
<File>
<FileName>fx2_init.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\lib\fx2lp\src\fx2_init.c</FilePath>
</File>
</Files>
</Group>
<Group>
<GroupName>fx2lp - iic</GroupName>
<Files>
<File>
<FileName>fx2_i2c.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\lib\fx2lp\src\fx2_i2c.c</FilePath>
</File>
<File>
<FileName>fx2_eeprom.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\lib\fx2lp\src\fx2_eeprom.c</FilePath>
</File>
</Files>
</Group>
<Group>
<GroupName>fx2lp - timer</GroupName>
<Files>
<File>
<FileName>fx2_tmr.s51</FileName>
<FileType>2</FileType>
<FilePath>..\..\lib\fx2lp\src\fx2_tmr.s51</FilePath>
</File>
</Files>
</Group>
<Group>
<GroupName>fx2lp - usb</GroupName>
<Files>
<File>
<FileName>fx2_jmptbl.s51</FileName>
<FileType>2</FileType>
<FilePath>..\..\lib\fx2lp\src\fx2_jmptbl.s51</FilePath>
</File>
<File>
<FileName>fx2_disconnect.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\lib\fx2lp\src\fx2_disconnect.c</FilePath>
</File>
<File>
<FileName>fx2_usb_isr.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\lib\fx2lp\src\fx2_usb_isr.c</FilePath>
</File>
<File>
<FileName>fx2_usb_sleep.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\lib\fx2lp\src\fx2_usb_sleep.c</FilePath>
</File>
<File>
<FileName>fx2_usb_sudav.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\lib\fx2lp\src\fx2_usb_sudav.c</FilePath>
</File>
</Files>
</Group>
<Group>
<GroupName>fx2mr - jtag</GroupName>
<Files>
<File>
<FileName>jtag.s51</FileName>
<FileType>2</FileType>
<FilePath>..\..\lib\fx2mr\src\jtag\jtag.s51</FilePath>
</File>
</Files>
</Group>
<Group>
<GroupName>fx2mr - lcd</GroupName>
<Files>
<File>
<FileName>lcd_7565r.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\lib\fx2mr\src\lcd\7565r\lcd_7565r.c</FilePath>
</File>
</Files>
</Group>
<Group>
<GroupName>tri - base</GroupName>
<Files>
<File>
<FileName>tri_dscr.s51</FileName>
<FileType>2</FileType>
<FilePath>..\tri.base\src\tri_dscr.s51</FilePath>
</File>
<File>
<FileName>tri_main.c</FileName>
<FileType>1</FileType>
<FilePath>..\tri.base\src\tri_main.c</FilePath>
</File>
<File>
<FileName>tri_conf.c</FileName>
<FileType>1</FileType>
<FilePath>..\tri.base\src\tri_conf.c</FilePath>
</File>
<File>
<FileName>tri_glb.c</FileName>
<FileType>1</FileType>
<FilePath>..\tri.base\src\tri_glb.c</FilePath>
</File>
<File>
<FileName>tri_cmd.c</FileName>
<FileType>1</FileType>
<FilePath>..\tri.base\src\tri_cmd.c</FilePath>
</File>
<File>
<FileName>tri_usb_ep1.c</FileName>
<FileType>1</FileType>
<FilePath>..\tri.base\src\tri_usb_ep1.c</FilePath>
</File>
</Files>
</Group>
<Group>
<GroupName>tri - jtag</GroupName>
<Files>
<File>
<FileName>jtag_conf.c</FileName>
<FileType>1</FileType>
<FilePath>..\tri.jtag\src\jtag_conf.c</FilePath>
</File>
<File>
<FileName>jtag_cmd.c</FileName>
<FileType>1</FileType>
<FilePath>..\tri.jtag\src\jtag_cmd.c</FilePath>
</File>
<File>
<FileName>jtag_ep2.c</FileName>
<FileType>1</FileType>
<FilePath>..\tri.jtag\src\jtag_ep2.c</FilePath>
</File>
</Files>
</Group>
<Group>
<GroupName>tri - proto</GroupName>
<Files>
<File>
<FileName>proto_boot.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\proto_boot.c</FilePath>
</File>
<File>
<FileName>proto_conf.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\proto_conf.c</FilePath>
</File>
<File>
<FileName>proto_cmd.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\proto_cmd.c</FilePath>
</File>
</Files>
</Group>
<Group>
<GroupName>tri - proto - uvna</GroupName>
<Files>
<File>
<FileName>uvna_boot.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\uvna\uvna_boot.c</FilePath>
<FileOption>
<CommonProperty>
<UseCPPCompiler>2</UseCPPCompiler>
<RVCTCodeConst>0</RVCTCodeConst>
<RVCTZI>0</RVCTZI>
<RVCTOtherData>0</RVCTOtherData>
<ModuleSelection>0</ModuleSelection>
<IncludeInBuild>0</IncludeInBuild>
<AlwaysBuild>2</AlwaysBuild>
<GenerateAssemblyFile>2</GenerateAssemblyFile>
<AssembleAssemblyFile>2</AssembleAssemblyFile>
<PublicsOnly>2</PublicsOnly>
<StopOnExitCode>11</StopOnExitCode>
<CustomArgument></CustomArgument>
<IncludeLibraryModules></IncludeLibraryModules>
<ComprImg>1</ComprImg>
<BankNo>65535</BankNo>
</CommonProperty>
<File51>
<C51>
<RegisterColoring>2</RegisterColoring>
<VariablesInOrder>2</VariablesInOrder>
<IntegerPromotion>2</IntegerPromotion>
<uAregs>2</uAregs>
<UseInterruptVector>2</UseInterruptVector>
<Fuzzy>8</Fuzzy>
<Optimize>10</Optimize>
<WarningLevel>3</WarningLevel>
<SizeSpeed>2</SizeSpeed>
<ObjectExtend>2</ObjectExtend>
<ACallAJmp>2</ACallAJmp>
<InterruptVectorAddress>0</InterruptVectorAddress>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
</VariousControls>
</C51>
</File51>
</FileOption>
</File>
<File>
<FileName>uvna_conf.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\uvna\uvna_conf.c</FilePath>
<FileOption>
<CommonProperty>
<UseCPPCompiler>2</UseCPPCompiler>
<RVCTCodeConst>0</RVCTCodeConst>
<RVCTZI>0</RVCTZI>
<RVCTOtherData>0</RVCTOtherData>
<ModuleSelection>0</ModuleSelection>
<IncludeInBuild>0</IncludeInBuild>
<AlwaysBuild>2</AlwaysBuild>
<GenerateAssemblyFile>2</GenerateAssemblyFile>
<AssembleAssemblyFile>2</AssembleAssemblyFile>
<PublicsOnly>2</PublicsOnly>
<StopOnExitCode>11</StopOnExitCode>
<CustomArgument></CustomArgument>
<IncludeLibraryModules></IncludeLibraryModules>
<ComprImg>1</ComprImg>
<BankNo>65535</BankNo>
</CommonProperty>
<File51>
<C51>
<RegisterColoring>2</RegisterColoring>
<VariablesInOrder>2</VariablesInOrder>
<IntegerPromotion>2</IntegerPromotion>
<uAregs>2</uAregs>
<UseInterruptVector>2</UseInterruptVector>
<Fuzzy>8</Fuzzy>
<Optimize>10</Optimize>
<WarningLevel>3</WarningLevel>
<SizeSpeed>2</SizeSpeed>
<ObjectExtend>2</ObjectExtend>
<ACallAJmp>2</ACallAJmp>
<InterruptVectorAddress>0</InterruptVectorAddress>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
</VariousControls>
</C51>
</File51>
</FileOption>
</File>
<File>
<FileName>uvna_cmd.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\uvna\uvna_cmd.c</FilePath>
<FileOption>
<CommonProperty>
<UseCPPCompiler>2</UseCPPCompiler>
<RVCTCodeConst>0</RVCTCodeConst>
<RVCTZI>0</RVCTZI>
<RVCTOtherData>0</RVCTOtherData>
<ModuleSelection>0</ModuleSelection>
<IncludeInBuild>0</IncludeInBuild>
<AlwaysBuild>2</AlwaysBuild>
<GenerateAssemblyFile>2</GenerateAssemblyFile>
<AssembleAssemblyFile>2</AssembleAssemblyFile>
<PublicsOnly>2</PublicsOnly>
<StopOnExitCode>11</StopOnExitCode>
<CustomArgument></CustomArgument>
<IncludeLibraryModules></IncludeLibraryModules>
<ComprImg>1</ComprImg>
<BankNo>65535</BankNo>
</CommonProperty>
<File51>
<C51>
<RegisterColoring>2</RegisterColoring>
<VariablesInOrder>2</VariablesInOrder>
<IntegerPromotion>2</IntegerPromotion>
<uAregs>2</uAregs>
<UseInterruptVector>2</UseInterruptVector>
<Fuzzy>8</Fuzzy>
<Optimize>10</Optimize>
<WarningLevel>3</WarningLevel>
<SizeSpeed>2</SizeSpeed>
<ObjectExtend>2</ObjectExtend>
<ACallAJmp>2</ACallAJmp>
<InterruptVectorAddress>0</InterruptVectorAddress>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
</VariousControls>
</C51>
</File51>
</FileOption>
</File>
<File>
<FileName>uvna.c</FileName>
<FileType>1</FileType>
<FilePath>.\src\uvna\uvna.c</FilePath>
<FileOption>
<CommonProperty>
<UseCPPCompiler>2</UseCPPCompiler>
<RVCTCodeConst>0</RVCTCodeConst>
<RVCTZI>0</RVCTZI>
<RVCTOtherData>0</RVCTOtherData>
<ModuleSelection>0</ModuleSelection>
<IncludeInBuild>0</IncludeInBuild>
<AlwaysBuild>2</AlwaysBuild>
<GenerateAssemblyFile>2</GenerateAssemblyFile>
<AssembleAssemblyFile>2</AssembleAssemblyFile>
<PublicsOnly>2</PublicsOnly>
<StopOnExitCode>11</StopOnExitCode>
<CustomArgument></CustomArgument>
<IncludeLibraryModules></IncludeLibraryModules>
<ComprImg>1</ComprImg>
<BankNo>65535</BankNo>
</CommonProperty>
<File51>
<C51>
<RegisterColoring>2</RegisterColoring>
<VariablesInOrder>2</VariablesInOrder>
<IntegerPromotion>2</IntegerPromotion>
<uAregs>2</uAregs>
<UseInterruptVector>2</UseInterruptVector>
<Fuzzy>8</Fuzzy>
<Optimize>10</Optimize>
<WarningLevel>3</WarningLevel>
<SizeSpeed>2</SizeSpeed>
<ObjectExtend>2</ObjectExtend>
<ACallAJmp>2</ACallAJmp>
<InterruptVectorAddress>0</InterruptVectorAddress>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
</VariousControls>
</C51>
</File51>
</FileOption>
</File>
</Files>
</Group>
</Groups>
</Target>
</Targets>
</Project>
+28
View File
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<ProjectWorkspace xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_mpw.xsd">
<SchemaVersion>1.0</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<WorkspaceName>WorkSpace</WorkspaceName>
<project>
<PathAndName>.\tri.base\tri_base.uvproj</PathAndName>
</project>
<project>
<PathAndName>.\tri.jtag\tri_jtag.uvproj</PathAndName>
</project>
<project>
<PathAndName>.\tri.proto\tri_proto.uvproj</PathAndName>
<NodeIsActive>1</NodeIsActive>
<NodeIsExpanded>1</NodeIsExpanded>
</project>
<project>
<PathAndName>.\tri.cf1\tri_cf1.uvproj</PathAndName>
</project>
</ProjectWorkspace>
File diff suppressed because one or more lines are too long