Initial check in
This commit is contained in:
@@ -0,0 +1,413 @@
|
||||
#ifndef FX2_H
|
||||
#define FX2_H
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Constants
|
||||
// ----------------------------------------------------------------------------
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
|
||||
#define true 1
|
||||
#define false 0
|
||||
|
||||
|
||||
typedef unsigned char bool;
|
||||
|
||||
typedef unsigned char BYTE;
|
||||
typedef unsigned short WORD;
|
||||
typedef unsigned long DWORD;
|
||||
|
||||
|
||||
#define DSCR_DEVICE 1 // Descriptor type: Device
|
||||
#define DSCR_CONFIG 2 // Descriptor type: Configuration
|
||||
#define DSCR_STRING 3 // Descriptor type: String
|
||||
#define DSCR_INTRFC 4 // Descriptor type: Interface
|
||||
#define DSCR_ENDPNT 5 // Descriptor type: Endpoint
|
||||
#define DSCR_DEVQUAL 6 // Descriptor type: Device Qualifier
|
||||
#define DSCR_OTHERSPEED 7 // Descriptor type: Other Speed Configuration
|
||||
|
||||
#define bmBIT0 0x01
|
||||
#define bmBIT1 0x02
|
||||
#define bmBIT2 0x04
|
||||
#define bmBIT3 0x08
|
||||
#define bmBIT4 0x10
|
||||
#define bmBIT5 0x20
|
||||
#define bmBIT6 0x40
|
||||
#define bmBIT7 0x80
|
||||
|
||||
#define bmBUSPWR bmBIT7
|
||||
#define bmSELFPWR bmBIT6
|
||||
#define bmRWU bmBIT5
|
||||
|
||||
#define bmEPOUT bmBIT7
|
||||
#define bmEPIN 0
|
||||
|
||||
#define EP_VALID 0x80
|
||||
#define EP_INVALID 0x00
|
||||
|
||||
#define EP_IN 0x40
|
||||
#define EP_OUT 0x00
|
||||
|
||||
#define EP_INT 0x30
|
||||
#define EP_BULK 0x20
|
||||
#define EP_ISO 0x10
|
||||
|
||||
#define EP_1024 0x08
|
||||
#define EP_512 0x00
|
||||
#define EP_64 0x00
|
||||
|
||||
#define EP_3x 0x03
|
||||
#define EP_2x 0x02
|
||||
#define EP_4x 0x00
|
||||
|
||||
#define IRQ_EP0IN bmBIT0
|
||||
#define IRQ_EP0OUT bmBIT1
|
||||
#define IRQ_EP1IN bmBIT2
|
||||
#define IRQ_EP1OUT bmBIT3
|
||||
#define IRQ_EP2 bmBIT4
|
||||
#define IRQ_EP4 bmBIT5
|
||||
#define IRQ_EP6 bmBIT6
|
||||
#define IRQ_EP8 bmBIT7
|
||||
|
||||
#define SUD_SIZE 8 // Setup data size
|
||||
|
||||
|
||||
#define VECT_INT0 0
|
||||
#define VECT_TMR0 1
|
||||
#define VECT_INT1 2
|
||||
#define VECT_TMR1 3
|
||||
#define VECT_COM0 4
|
||||
#define VECT_TMR2 5
|
||||
#define VECT_WKUP 6
|
||||
#define VECT_COM1 7
|
||||
#define VECT_USB 8
|
||||
#define VECT_I2C 9
|
||||
#define VECT_INT4 10
|
||||
#define VECT_INT5 11
|
||||
#define VECT_INT6 12
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// USB interrupt INT2IVEC values
|
||||
// ----------------------------------------------------------------------------
|
||||
#define INT2_SUDAV 0x00
|
||||
#define INT2_SOF 0x04
|
||||
#define INT2_SUTOK 0x08
|
||||
#define INT2_SUSPEND 0x0C
|
||||
#define INT2_RESET 0x10
|
||||
#define INT2_HISPEED 0x14
|
||||
#define INT2_EP0ACK 0x18
|
||||
#define INT2_EP0IN 0x20
|
||||
#define INT2_EP0OUT 0x24
|
||||
#define INT2_EP1IN 0x28
|
||||
#define INT2_EP1OUT 0x2C
|
||||
#define INT2_EP2 0x30
|
||||
#define INT2_EP4 0x34
|
||||
#define INT2_EP6 0x38
|
||||
#define INT2_EP8 0x3C
|
||||
#define INT2_IBN 0x40
|
||||
#define INT2_EP0PING 0x48
|
||||
#define INT2_EP1PING 0x4C
|
||||
#define INT2_EP2PING 0x50
|
||||
#define INT2_EP4PING 0x54
|
||||
#define INT2_EP6PING 0x58
|
||||
#define INT2_EP8PING 0x5C
|
||||
#define INT2_ERRLIMIT 0x60
|
||||
#define INT2_EP2ISOERR 0x70
|
||||
#define INT2_EP4ISOERR 0x74
|
||||
#define INT2_EP6ISOERR 0x78
|
||||
#define INT2_EP8ISOERR 0x7C
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// GPIF/FIFO interrupt INT4IVEC values
|
||||
// ----------------------------------------------------------------------------
|
||||
#define INT4_EP2PF 0x80
|
||||
#define INT4_EP4PF 0x84
|
||||
#define INT4_EP6PF 0x88
|
||||
#define INT4_EP8PF 0x8C
|
||||
|
||||
#define INT4_EP2EF 0x90
|
||||
#define INT4_EP4EF 0x94
|
||||
#define INT4_EP6EF 0x98
|
||||
#define INT4_EP8EF 0x9C
|
||||
|
||||
#define INT4_EP2FF 0xA0
|
||||
#define INT4_EP4FF 0xA4
|
||||
#define INT4_EP6FF 0xA8
|
||||
#define INT4_EP8FF 0xAC
|
||||
|
||||
#define INT4_GPIF_DONE 0xB0
|
||||
#define INT4_GPIF_WF 0xB4
|
||||
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// HID constants
|
||||
// ----------------------------------------------------------------------------
|
||||
#define SETUP_MASK 0x60 // Used to mask off request type
|
||||
#define SETUP_REQ_STANDARD 0x00 // Standard request
|
||||
#define SETUP_REQ_CLASS 0x20 // Class request
|
||||
#define SETUP_REQ_VENDOR 0x40 // Vendor request
|
||||
#define SETUP_REQ_RESERVED 0x60 // Reserved or illegal request
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Setup commands
|
||||
// ----------------------------------------------------------------------------
|
||||
#define SC_GET_STATUS 0x00
|
||||
#define SC_CLEAR_FEATURE 0x01
|
||||
#define SC_RESERVED 0x02
|
||||
#define SC_SET_FEATURE 0x03
|
||||
#define SC_SET_ADDRESS 0x05
|
||||
#define SC_GET_DESCRIPTOR 0x06
|
||||
#define SC_SET_DESCRIPTOR 0x07
|
||||
#define SC_GET_CONFIGURATION 0x08
|
||||
#define SC_SET_CONFIGURATION 0x09
|
||||
#define SC_GET_INTERFACE 0x0a
|
||||
#define SC_SET_INTERFACE 0x0b
|
||||
#define SC_SYNC_FRAME 0x0c
|
||||
#define SC_ANCHOR_LOAD 0xa0
|
||||
|
||||
#define GD_DEVICE 0x01
|
||||
#define GD_CONFIGURATION 0x02
|
||||
#define GD_STRING 0x03
|
||||
#define GD_INTERFACE 0x04
|
||||
#define GD_ENDPOINT 0x05
|
||||
#define GD_DEVICE_QUALIFIER 0x06
|
||||
#define GD_OTHER_SPEED_CONFIG 0x07
|
||||
#define GD_INTERFACE_POWER 0x08
|
||||
#define GD_HID 0x21
|
||||
#define GD_REPORT 0x22
|
||||
|
||||
#define GS_DEVICE 0x80 // Get Status: Device
|
||||
#define GS_INTERFACE 0x81 // Get Status: Interface
|
||||
#define GS_ENDPOINT 0x82 // Get Status: Endpoint
|
||||
|
||||
#define FT_DEVICE 0x00 // Feature: Device
|
||||
#define FT_ENDPOINT 0x02 // Feature: Endpoint
|
||||
|
||||
|
||||
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
//
|
||||
// Data types
|
||||
//
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Descriptor header
|
||||
// ----------------------------------------------------------------------------
|
||||
typedef struct
|
||||
{
|
||||
BYTE length;
|
||||
BYTE type;
|
||||
} DSCR;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Device descriptor [type=1]
|
||||
// ----------------------------------------------------------------------------
|
||||
typedef struct
|
||||
{
|
||||
BYTE length; // descriptor length ( = sizeof(DEVICE_DSCR) )
|
||||
BYTE type; // descriptor type ( Device = 1)
|
||||
|
||||
BYTE spec_ver_minor; // specification version (BCD) minor
|
||||
BYTE spec_ver_major; // specification version (BCD) major
|
||||
|
||||
BYTE dev_class; // device class
|
||||
BYTE dev_subclass; // device subclass
|
||||
BYTE dev_protocol; // device protocol
|
||||
|
||||
BYTE max_packet; // maximum packet size
|
||||
|
||||
WORD id_vendor; // vendor ID
|
||||
WORD id_product; // product ID
|
||||
WORD id_version; // product version ID
|
||||
|
||||
BYTE str_manufacturer; // manufacturer string index
|
||||
BYTE str_product; // product string index
|
||||
BYTE str_serial; // serial number string index
|
||||
|
||||
BYTE configs; // number of configurations
|
||||
} DEVICE_DSCR;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Device qualifier descriptor [type=6]
|
||||
// ----------------------------------------------------------------------------
|
||||
typedef struct
|
||||
{
|
||||
BYTE length; // descriptor length ( = sizeof(DEVICEQUAL_DSCR) )
|
||||
BYTE type; // descriptor type ( Device Qualifier = 6)
|
||||
|
||||
BYTE spec_ver_minor; // specification version (BCD) minor
|
||||
BYTE spec_ver_major; // specification version (BCD) major
|
||||
|
||||
BYTE dev_class; // device class
|
||||
BYTE dev_subclass; // device subclass
|
||||
BYTE dev_protocol; // device protocol
|
||||
|
||||
BYTE max_packet; // maximum packet size
|
||||
|
||||
BYTE configs; // number of configurations
|
||||
BYTE reserved;
|
||||
} DEVICEQUAL_DSCR;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Configuration descriptor [type=2]
|
||||
// ----------------------------------------------------------------------------
|
||||
typedef struct
|
||||
{
|
||||
BYTE length; // descriptor length ( = sizeof(CONFIG_DSCR) )
|
||||
BYTE type; // descriptor type ( Configuration = 2)
|
||||
|
||||
WORD config_length; // configuration + endpoints length
|
||||
BYTE interfaces; // number of interfaces
|
||||
BYTE index; // configuration number
|
||||
BYTE str_config; // configuration string index
|
||||
BYTE attrib; // attributes (buspwr,selfpwr,rwu)
|
||||
BYTE power; // power requirement (div 2 mA)
|
||||
} CONFIG_DSCR;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Interface descriptor [type=4]
|
||||
// ----------------------------------------------------------------------------
|
||||
typedef struct
|
||||
{
|
||||
BYTE length; // descriptor length ( = sizeof(INTERFACE_DSCR) )
|
||||
BYTE type; // descriptor type ( Interface = 4)
|
||||
|
||||
BYTE index; // zero-based index of this interface
|
||||
BYTE alt_setting; // alternate setting
|
||||
BYTE ep_count; // number of endpoints
|
||||
|
||||
BYTE if_class; // interface class
|
||||
BYTE if_subclass; // interface subclass
|
||||
BYTE if_protocol; // interface protocol
|
||||
|
||||
BYTE str_interface; // interface string index
|
||||
} INTERFACE_DSCR;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Endpoint descriptor [type=5]
|
||||
// ----------------------------------------------------------------------------
|
||||
typedef struct
|
||||
{
|
||||
BYTE length; // descriptor length ( = sizeof(ENDPOINT_DSCR) )
|
||||
BYTE type; // descriptor type ( Endpoint = 5)
|
||||
|
||||
BYTE ep_address; // endpoint address
|
||||
BYTE ep_type; // endpoint type
|
||||
|
||||
BYTE mp_low; // maximum packet size (LOW)
|
||||
BYTE mp_high; // maximum packet size (HIGH)
|
||||
|
||||
BYTE interval; // interrupt polling interval
|
||||
} ENDPOINT_DSCR;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// String descriptor [type=3]
|
||||
// ----------------------------------------------------------------------------
|
||||
typedef struct
|
||||
{
|
||||
BYTE length; // descriptor length ( = sizeof(STRING_DSCR) )
|
||||
BYTE type; // descriptor type ( String = 3)
|
||||
} STRING_DSCR;
|
||||
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Setup Data Valid structure
|
||||
// ----------------------------------------------------------------------------
|
||||
typedef struct SUDAV
|
||||
{
|
||||
BYTE RequestType;
|
||||
BYTE Request;
|
||||
|
||||
union
|
||||
{
|
||||
WORD Word;
|
||||
|
||||
struct
|
||||
{
|
||||
BYTE Hi;
|
||||
BYTE Lo;
|
||||
} Byte;
|
||||
} Value;
|
||||
|
||||
union
|
||||
{
|
||||
WORD Word;
|
||||
|
||||
struct
|
||||
{
|
||||
BYTE Hi;
|
||||
BYTE Lo;
|
||||
} Byte;
|
||||
} Index;
|
||||
} SUDAV;
|
||||
|
||||
typedef SUDAV xdata* PSUDAV;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Macros
|
||||
// ----------------------------------------------------------------------------
|
||||
#define min(a,b) (((a)<(b))?(a):(b))
|
||||
#define max(a,b) (((a)>(b))?(a):(b))
|
||||
|
||||
#define MSB(word) (BYTE)(((WORD)(word) >> 8) & 0xff)
|
||||
#define LSB(word) (BYTE)(((WORD)(word) >> 0) & 0xff)
|
||||
|
||||
#define SWAP(word) ((BYTE*)&word)[0] ^= ((BYTE*)&word)[1]; \
|
||||
((BYTE*)&word)[1] ^= ((BYTE*)&word)[0]; \
|
||||
((BYTE*)&word)[0] ^= ((BYTE*)&word)[1]
|
||||
|
||||
#define I2C_IRQ_ENABLE() (EI2C = 1)
|
||||
#define I2C_IRQ_DISABLE() (EI2C = 0)
|
||||
#define I2C_IRQ_CLEAR() (EXIF &= ~0x20)
|
||||
#define I2C_IRQ_FIRE() (EXIF |= 0x20)
|
||||
|
||||
#define USB_IRQ_ENABLE() EUSB = 1
|
||||
#define USB_IRQ_DISABLE() EUSB = 0
|
||||
#define USB_IRQ_CLEAR() EXIF &= ~0x10
|
||||
|
||||
#define USB_IRQ_CLEAR_EP0IN() EPIRQ = IRQ_EP0IN
|
||||
#define USB_IRQ_CLEAR_EP0OUT() EPIRQ = IRQ_EP0OUT
|
||||
#define USB_IRQ_CLEAR_EP1IN() EPIRQ = IRQ_EP1IN
|
||||
#define USB_IRQ_CLEAR_EP1OUT() EPIRQ = IRQ_EP1OUT
|
||||
#define USB_IRQ_CLEAR_EP2() EPIRQ = IRQ_EP2
|
||||
#define USB_IRQ_CLEAR_EP4() EPIRQ = IRQ_EP4
|
||||
#define USB_IRQ_CLEAR_EP6() EPIRQ = IRQ_EP6
|
||||
#define USB_IRQ_CLEAR_EP8() EPIRQ = IRQ_EP8
|
||||
|
||||
#define FX2_TOG_CLEAR( a) TOGCTL = a & 0x1F; TOGCTL = (a | 0x20) & 0x3F
|
||||
|
||||
#define RSM_IRQ_ENABLE() (EICON |= 0x20)
|
||||
#define RSM_IRQ_DISABLE() (EICON &= ~0x20)
|
||||
#define RSM_IRQ_CLEAR() (EICON &= ~0x10)
|
||||
|
||||
#define FX2_STALL_EP0() EP0CS |= bmEPSTALL
|
||||
#define FX2_STALL_EP1IN() EP1INCS |= bmEPSTALL
|
||||
#define FX2_STALL_EP1OUT() EP1OUTCS |= bmEPSTALL
|
||||
#define FX2_STALL_EP2() EP2CS |= bmEPSTALL
|
||||
#define FX2_STALL_EP4() EP4CS |= bmEPSTALL
|
||||
#define FX2_STALL_EP6() EP6CS |= bmEPSTALL
|
||||
#define FX2_STALL_EP8() EP8CS |= bmEPSTALL
|
||||
|
||||
extern const DEVICE_DSCR code DscrDevice;
|
||||
extern const DEVICEQUAL_DSCR code DscrDeviceQual;
|
||||
extern const CONFIG_DSCR code DscrHsConfig;
|
||||
extern const CONFIG_DSCR code DscrFsConfig;
|
||||
extern const STRING_DSCR code DscrString;
|
||||
|
||||
extern void FX2_Disconnect(bool renum);
|
||||
extern void FX2_Delay(WORD ms);
|
||||
|
||||
extern bool FX2_Init();
|
||||
extern void FX2_Suspend();
|
||||
extern void FX2_Resume();
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,14 @@
|
||||
#ifndef FX2_EEPROM_H
|
||||
#define FX2_EEPROM_H
|
||||
|
||||
#include <fx2.h>
|
||||
extern BYTE FX2_EEPROM_Read( WORD page, BYTE offset, BYTE length, BYTE xdata *dat);
|
||||
extern BYTE FX2_EEPROM_Write( WORD page, BYTE offset, BYTE length, BYTE xdata *dat);
|
||||
|
||||
extern BYTE FX2_EEPROM_ReadPage( WORD page, BYTE length, BYTE xdata *dat);
|
||||
extern BYTE FX2_EEPROM_WritePage( WORD page, BYTE length, BYTE xdata *dat);
|
||||
|
||||
extern BYTE FX2_EEPROM_ReadPage0( BYTE addr, BYTE length, BYTE xdata *dat);
|
||||
extern BYTE FX2_EEPROM_WritePage0( BYTE addr, BYTE length, BYTE xdata *dat);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,19 @@
|
||||
#ifndef FX2_GLOBALS_H
|
||||
#define FX2_GLOBALS_H
|
||||
|
||||
#include <fx2.h>
|
||||
|
||||
extern xdata bool Sleep;
|
||||
extern xdata bool GotSUD;
|
||||
extern xdata bool Rwuen;
|
||||
extern xdata bool SelfPower;
|
||||
|
||||
extern bool (*fx2_ep0_hook)();
|
||||
extern bool (*fx2_ep1_hook)();
|
||||
|
||||
extern bool (*fx2_ep2_hook)();
|
||||
extern bool (*fx2_ep4_hook)();
|
||||
extern bool (*fx2_ep6_hook)();
|
||||
extern bool (*fx2_ep8_hook)();
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
#ifndef FX2_GPIF_H
|
||||
#define FX2_GPIF_H
|
||||
|
||||
extern void fx2_gpif_init();
|
||||
extern void fx2_gpif_flowstate( int sel);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,68 @@
|
||||
#ifndef FX2_IIC_H
|
||||
#define FX2_IIC_H
|
||||
|
||||
#include <fx2.h>
|
||||
|
||||
// I2C error codes
|
||||
// -----------------------------------------------------------------------------
|
||||
#define I2C_OK 0x00
|
||||
#define I2C_ERROR 0x80
|
||||
#define I2C_ABORT 0xFF
|
||||
#define SMB_ERROR 0xC0
|
||||
|
||||
|
||||
// I2C state machine states
|
||||
// -----------------------------------------------------------------------------
|
||||
#define I2C_IDLE 0x00
|
||||
#define I2C_SENDING 0x01
|
||||
#define I2C_RECEIVING 0x02
|
||||
#define I2C_PRIME 0x03
|
||||
#define I2C_BERROR 0x04
|
||||
#define I2C_NACK 0x05
|
||||
#define I2C_STOP 0x06
|
||||
#define I2C_WAITSTOP 0x07
|
||||
|
||||
|
||||
// I2C state machine states for read operation with repeated start condition
|
||||
// -----------------------------------------------------------------------------
|
||||
#define I2C_SUBADDR_HI 0x10 // sending HI(subaddr)
|
||||
#define I2C_SUBADDR_LO 0x11 // sending LO(subaddr)
|
||||
#define I2C_RESTART 0x12 //
|
||||
|
||||
|
||||
// SMBus state machine states
|
||||
// -----------------------------------------------------------------------------
|
||||
#define SMB_SENDING 0x40
|
||||
#define SMB_RECEIVING 0x41
|
||||
#define SMB_PRIME 0x43
|
||||
#define SMB_BERROR 0x44
|
||||
#define SMB_NACK 0x45
|
||||
#define SMB_STOP 0x46
|
||||
#define SMB_WAITSTOP 0x47
|
||||
#define SMB_PEC 0x48
|
||||
#define SMB_CMD_READWORD 0x50
|
||||
#define SMB_READWORD 0x51
|
||||
|
||||
|
||||
extern void fx2_i2c_init();
|
||||
|
||||
extern BYTE fx2_i2c_wait( BYTE addr);
|
||||
|
||||
extern BYTE fx2_i2c_read( BYTE addr,
|
||||
BYTE length,
|
||||
BYTE xdata *dat);
|
||||
|
||||
extern BYTE fx2_i2c_write( BYTE addr,
|
||||
BYTE length,
|
||||
BYTE xdata *dat);
|
||||
|
||||
extern BYTE fx2_i2c_read_rsw( BYTE addr,
|
||||
WORD subaddr,
|
||||
BYTE length,
|
||||
BYTE xdata *dat);
|
||||
|
||||
extern BYTE fx2_sm_readword( BYTE addr,
|
||||
BYTE command,
|
||||
BYTE xdata *dat);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,518 @@
|
||||
#ifndef FX2_REGS_H
|
||||
#define FX2_REGS_H
|
||||
|
||||
#ifdef ALLOCATE_EXTERN
|
||||
#define XBYTE( name, addr) xdata volatile unsigned char name _at_ addr
|
||||
#else
|
||||
#define XBYTE( name, addr) extern xdata volatile unsigned char name
|
||||
#endif
|
||||
|
||||
// ============================================================================
|
||||
// General configuration
|
||||
// ============================================================================
|
||||
XBYTE( CPUCS , 0xE600); // Control & Status
|
||||
XBYTE( IFCONFIG , 0xE601); // Interface Configuration
|
||||
XBYTE( PINFLAGSAB , 0xE602); // FIFO FLAGA and FLAGB Assignments
|
||||
XBYTE( PINFLAGSCD , 0xE603); // FIFO FLAGC and FLAGD Assignments
|
||||
XBYTE( FIFORESET , 0xE604); // Restore FIFOS to default state
|
||||
XBYTE( BREAKPT , 0xE605); // Breakpoint
|
||||
XBYTE( BPADDRH , 0xE606); // Breakpoint Address H
|
||||
XBYTE( BPADDRL , 0xE607); // Breakpoint Address L
|
||||
XBYTE( UART230 , 0xE608); // 230 Kbaud clock for T0,T1,T2
|
||||
XBYTE( FIFOPINPOLAR , 0xE609); // FIFO polarities
|
||||
XBYTE( REVID , 0xE60A); // Chip Revision
|
||||
XBYTE( REVCTL , 0xE60B); // Chip Revision Control
|
||||
|
||||
// ============================================================================
|
||||
// Endpoint configuration registers
|
||||
// ============================================================================
|
||||
XBYTE( EP1OUTCFG , 0xE610); // Endpoint 1-OUT Configuration
|
||||
XBYTE( EP1INCFG , 0xE611); // Endpoint 1-IN Configuration
|
||||
XBYTE( EP2CFG , 0xE612); // Endpoint 2 Configuration
|
||||
XBYTE( EP4CFG , 0xE613); // Endpoint 4 Configuration
|
||||
XBYTE( EP6CFG , 0xE614); // Endpoint 6 Configuration
|
||||
XBYTE( EP8CFG , 0xE615); // Endpoint 8 Configuration
|
||||
XBYTE( EP2FIFOCFG , 0xE618); // Endpoint 2 FIFO configuration
|
||||
XBYTE( EP4FIFOCFG , 0xE619); // Endpoint 4 FIFO configuration
|
||||
XBYTE( EP6FIFOCFG , 0xE61A); // Endpoint 6 FIFO configuration
|
||||
XBYTE( EP8FIFOCFG , 0xE61B); // Endpoint 8 FIFO configuration
|
||||
XBYTE( EP2AUTOINLENH , 0xE620); // Endpoint 2 Packet Length H (IN only)
|
||||
XBYTE( EP2AUTOINLENL , 0xE621); // Endpoint 2 Packet Length L (IN only)
|
||||
XBYTE( EP4AUTOINLENH , 0xE622); // Endpoint 4 Packet Length H (IN only)
|
||||
XBYTE( EP4AUTOINLENL , 0xE623); // Endpoint 4 Packet Length L (IN only)
|
||||
XBYTE( EP6AUTOINLENH , 0xE624); // Endpoint 6 Packet Length H (IN only)
|
||||
XBYTE( EP6AUTOINLENL , 0xE625); // Endpoint 6 Packet Length L (IN only)
|
||||
XBYTE( EP8AUTOINLENH , 0xE626); // Endpoint 8 Packet Length H (IN only)
|
||||
XBYTE( EP8AUTOINLENL , 0xE627); // Endpoint 8 Packet Length L (IN only)
|
||||
XBYTE( EP2FIFOPFH , 0xE630); // EP2 Programmable Flag trigger H
|
||||
XBYTE( EP2FIFOPFL , 0xE631); // EP2 Programmable Flag trigger L
|
||||
XBYTE( EP4FIFOPFH , 0xE632); // EP4 Programmable Flag trigger H
|
||||
XBYTE( EP4FIFOPFL , 0xE633); // EP4 Programmable Flag trigger L
|
||||
XBYTE( EP6FIFOPFH , 0xE634); // EP6 Programmable Flag trigger H
|
||||
XBYTE( EP6FIFOPFL , 0xE635); // EP6 Programmable Flag trigger L
|
||||
XBYTE( EP8FIFOPFH , 0xE636); // EP8 Programmable Flag trigger H
|
||||
XBYTE( EP8FIFOPFL , 0xE637); // EP8 Programmable Flag trigger L
|
||||
XBYTE( EP2ISOINPKTS , 0xE640); // EP2 (if ISO) IN Packets per frame (1-3)
|
||||
XBYTE( EP4ISOINPKTS , 0xE641); // EP4 (if ISO) IN Packets per frame (1-3)
|
||||
XBYTE( EP6ISOINPKTS , 0xE642); // EP6 (if ISO) IN Packets per frame (1-3)
|
||||
XBYTE( EP8ISOINPKTS , 0xE643); // EP8 (if ISO) IN Packets per frame (1-3)
|
||||
XBYTE( INPKTEND , 0xE648); // Force IN Packet End
|
||||
XBYTE( OUTPKTEND , 0xE649); // Force OUT Packet End
|
||||
|
||||
// ============================================================================
|
||||
// Interrupts
|
||||
// ============================================================================
|
||||
XBYTE( EP2FIFOIE , 0xE650); // Endpoint 2 Flag Interrupt Enable
|
||||
XBYTE( EP2FIFOIRQ , 0xE651); // Endpoint 2 Flag Interrupt Request
|
||||
XBYTE( EP4FIFOIE , 0xE652); // Endpoint 4 Flag Interrupt Enable
|
||||
XBYTE( EP4FIFOIRQ , 0xE653); // Endpoint 4 Flag Interrupt Request
|
||||
XBYTE( EP6FIFOIE , 0xE654); // Endpoint 6 Flag Interrupt Enable
|
||||
XBYTE( EP6FIFOIRQ , 0xE655); // Endpoint 6 Flag Interrupt Request
|
||||
XBYTE( EP8FIFOIE , 0xE656); // Endpoint 8 Flag Interrupt Enable
|
||||
XBYTE( EP8FIFOIRQ , 0xE657); // Endpoint 8 Flag Interrupt Request
|
||||
|
||||
XBYTE( IBNIE , 0xE658); // IN-BULK-NAK Interrupt Enable
|
||||
XBYTE( IBNIRQ , 0xE659); // IN-BULK-NAK interrupt Request
|
||||
|
||||
XBYTE( NAKIE , 0xE65A); // Endpoint Ping NAK interrupt Enable
|
||||
XBYTE( NAKIRQ , 0xE65B); // Endpoint Ping NAK interrupt Request
|
||||
|
||||
XBYTE( USBIE , 0xE65C); // USB Int Enables
|
||||
XBYTE( USBIRQ , 0xE65D); // USB Interrupt Requests
|
||||
|
||||
XBYTE( EPIE , 0xE65E); // Endpoint Interrupt Enables
|
||||
XBYTE( EPIRQ , 0xE65F); // Endpoint Interrupt Requests
|
||||
|
||||
XBYTE( GPIFIE , 0xE660); // GPIF Interrupt Enable
|
||||
XBYTE( GPIFIRQ , 0xE661); // GPIF Interrupt Request
|
||||
|
||||
XBYTE( USBERRIE , 0xE662); // USB Error Interrupt Enables
|
||||
XBYTE( USBERRIRQ , 0xE663); // USB Error Interrupt Requests
|
||||
XBYTE( ERRCNTLIM , 0xE664); // USB Error counter and limit
|
||||
|
||||
XBYTE( CLRERRCNT , 0xE665); // Clear Error Counter EC[3..0]
|
||||
|
||||
XBYTE( INT2IVEC , 0xE666); // Interupt 2 (USB) Autovector
|
||||
XBYTE( INT4IVEC , 0xE667); // Interupt 4 (FIFOS & GPIF) Autovector
|
||||
XBYTE( INTSETUP , 0xE668); // Interrupt 2&4 Setup
|
||||
|
||||
// ============================================================================
|
||||
// Input/Output
|
||||
// ============================================================================
|
||||
XBYTE( PORTACFG , 0xE670); // I/O Port A Alternate Configuration
|
||||
XBYTE( PORTCCFG , 0xE671); // I/O Port C Alternate Configuration
|
||||
XBYTE( PORTECFG , 0xE672); // I/O Port E Alternate Configuration
|
||||
|
||||
XBYTE( I2CS , 0xE678); // I2C Control & Status
|
||||
XBYTE( I2DAT , 0xE679); // I2C Data
|
||||
XBYTE( I2CTL , 0xE67A); // I2C Control
|
||||
|
||||
XBYTE( XAUTODAT1 , 0xE67B); // Autopointer1 MOVX access
|
||||
XBYTE( XAUTODAT2 , 0xE67C); // Autopointer2 MOVX access
|
||||
|
||||
// ============================================================================
|
||||
// USB Control
|
||||
// ============================================================================
|
||||
XBYTE( USBCS , 0xE680); // USB Control & Status
|
||||
XBYTE( SUSPEND , 0xE681); // Put chip into suspend
|
||||
XBYTE( WAKEUPCS , 0xE682); // Wakeup source and polarity
|
||||
XBYTE( TOGCTL , 0xE683); // Toggle Control
|
||||
XBYTE( USBFRAMEH , 0xE684); // USB Frame count H
|
||||
XBYTE( USBFRAMEL , 0xE685); // USB Frame count L
|
||||
XBYTE( MICROFRAME , 0xE686); // Microframe count, 0-7
|
||||
XBYTE( FNADDR , 0xE687); // USB Function address
|
||||
|
||||
// ============================================================================
|
||||
// Endpoints
|
||||
// ============================================================================
|
||||
XBYTE( EP0BCH , 0xE68A); // Endpoint 0 Byte Count H
|
||||
XBYTE( EP0BCL , 0xE68B); // Endpoint 0 Byte Count L
|
||||
XBYTE( EP1OUTBC , 0xE68D); // Endpoint 1 OUT Byte Count
|
||||
XBYTE( EP1INBC , 0xE68F); // Endpoint 1 IN Byte Count
|
||||
XBYTE( EP2BCH , 0xE690); // Endpoint 2 Byte Count H
|
||||
XBYTE( EP2BCL , 0xE691); // Endpoint 2 Byte Count L
|
||||
XBYTE( EP4BCH , 0xE694); // Endpoint 4 Byte Count H
|
||||
XBYTE( EP4BCL , 0xE695); // Endpoint 4 Byte Count L
|
||||
XBYTE( EP6BCH , 0xE698); // Endpoint 6 Byte Count H
|
||||
XBYTE( EP6BCL , 0xE699); // Endpoint 6 Byte Count L
|
||||
XBYTE( EP8BCH , 0xE69C); // Endpoint 8 Byte Count H
|
||||
XBYTE( EP8BCL , 0xE69D); // Endpoint 8 Byte Count L
|
||||
|
||||
XBYTE( EP0CS , 0xE6A0); // Endpoint Control and Status
|
||||
XBYTE( EP1OUTCS , 0xE6A1); // Endpoint 1 OUT Control and Status
|
||||
XBYTE( EP1INCS , 0xE6A2); // Endpoint 1 IN Control and Status
|
||||
XBYTE( EP2CS , 0xE6A3); // Endpoint 2 Control and Status
|
||||
XBYTE( EP4CS , 0xE6A4); // Endpoint 4 Control and Status
|
||||
XBYTE( EP6CS , 0xE6A5); // Endpoint 6 Control and Status
|
||||
XBYTE( EP8CS , 0xE6A6); // Endpoint 8 Control and Status
|
||||
|
||||
XBYTE( EP2FIFOFLGS , 0xE6A7); // Endpoint 2 Flags
|
||||
XBYTE( EP4FIFOFLGS , 0xE6A8); // Endpoint 4 Flags
|
||||
XBYTE( EP6FIFOFLGS , 0xE6A9); // Endpoint 6 Flags
|
||||
XBYTE( EP8FIFOFLGS , 0xE6AA); // Endpoint 8 Flags
|
||||
|
||||
XBYTE( EP2FIFOBCH , 0xE6AB); // EP2 FIFO total byte count H
|
||||
XBYTE( EP2FIFOBCL , 0xE6AC); // EP2 FIFO total byte count L
|
||||
XBYTE( EP4FIFOBCH , 0xE6AD); // EP4 FIFO total byte count H
|
||||
XBYTE( EP4FIFOBCL , 0xE6AE); // EP4 FIFO total byte count L
|
||||
XBYTE( EP6FIFOBCH , 0xE6AF); // EP6 FIFO total byte count H
|
||||
XBYTE( EP6FIFOBCL , 0xE6B0); // EP6 FIFO total byte count L
|
||||
XBYTE( EP8FIFOBCH , 0xE6B1); // EP8 FIFO total byte count H
|
||||
XBYTE( EP8FIFOBCL , 0xE6B2); // EP8 FIFO total byte count L
|
||||
|
||||
XBYTE( SUDPTRH , 0xE6B3); // Setup Data Pointer high address byte
|
||||
XBYTE( SUDPTRL , 0xE6B4); // Setup Data Pointer low address byte
|
||||
XBYTE( SUDPTRCTL , 0xE6B5); // Setup Data Pointer Auto Mode
|
||||
|
||||
XBYTE( SETUPDAT[8] , 0xE6B8); // 8 bytes of SETUP data
|
||||
|
||||
// ============================================================================
|
||||
// GPIF
|
||||
// ============================================================================
|
||||
XBYTE( GPIFWFSELECT , 0xE6C0); // Waveform Selector
|
||||
XBYTE( GPIFIDLECS , 0xE6C1); // GPIF Done, GPIF IDLE drive mode
|
||||
XBYTE( GPIFIDLECTL , 0xE6C2); // Inactive Bus, CTL states
|
||||
XBYTE( GPIFCTLCFG , 0xE6C3); // CTL OUT pin drive
|
||||
XBYTE( GPIFADRH , 0xE6C4); // GPIF Address H
|
||||
XBYTE( GPIFADRL , 0xE6C5); // GPIF Address L
|
||||
|
||||
XBYTE( GPIFTCB3 , 0xE6CE); // GPIF Transaction Count Byte 3
|
||||
XBYTE( GPIFTCB2 , 0xE6CF); // GPIF Transaction Count Byte 2
|
||||
XBYTE( GPIFTCB1 , 0xE6D0); // GPIF Transaction Count Byte 1
|
||||
XBYTE( GPIFTCB0 , 0xE6D1); // GPIF Transaction Count Byte 0
|
||||
|
||||
#define EP2GPIFTCH GPIFTCB1 // these are here for backwards compatibility
|
||||
#define EP2GPIFTCL GPIFTCB0 //
|
||||
#define EP4GPIFTCH GPIFTCB1 // these are here for backwards compatibility
|
||||
#define EP4GPIFTCL GPIFTCB0 //
|
||||
#define EP6GPIFTCH GPIFTCB1 // these are here for backwards compatibility
|
||||
#define EP6GPIFTCL GPIFTCB0 //
|
||||
#define EP8GPIFTCH GPIFTCB1 // these are here for backwards compatibility
|
||||
#define EP8GPIFTCL GPIFTCB0 //
|
||||
|
||||
XBYTE( EP2GPIFFLGSEL , 0xE6D2); // EP2 GPIF Flag select
|
||||
XBYTE( EP2GPIFPFSTOP , 0xE6D3); // Stop GPIF EP2 transaction on prog. flag
|
||||
XBYTE( EP2GPIFTRIG , 0xE6D4); // EP2 FIFO Trigger
|
||||
XBYTE( EP4GPIFFLGSEL , 0xE6DA); // EP4 GPIF Flag select
|
||||
XBYTE( EP4GPIFPFSTOP , 0xE6DB); // Stop GPIF EP4 transaction on prog. flag
|
||||
XBYTE( EP4GPIFTRIG , 0xE6DC); // EP4 FIFO Trigger
|
||||
XBYTE( EP6GPIFFLGSEL , 0xE6E2); // EP6 GPIF Flag select
|
||||
XBYTE( EP6GPIFPFSTOP , 0xE6E3); // Stop GPIF EP6 transaction on prog. flag
|
||||
XBYTE( EP6GPIFTRIG , 0xE6E4); // EP6 FIFO Trigger
|
||||
XBYTE( EP8GPIFFLGSEL , 0xE6EA); // EP8 GPIF Flag select
|
||||
XBYTE( EP8GPIFPFSTOP , 0xE6EB); // Stop GPIF EP8 transaction on prog. flag
|
||||
XBYTE( EP8GPIFTRIG , 0xE6EC); // EP8 FIFO Trigger
|
||||
XBYTE( XGPIFSGLDATH , 0xE6F0); // GPIF Data H (16-bit mode only)
|
||||
XBYTE( XGPIFSGLDATLX , 0xE6F1); // Read/Write GPIF Data L & trigger transac
|
||||
XBYTE( XGPIFSGLDATLNOX , 0xE6F2); // Read GPIF Data L, no transac trigger
|
||||
XBYTE( GPIFREADYCFG , 0xE6F3); // Internal RDY,Sync/Async, RDY5CFG
|
||||
XBYTE( GPIFREADYSTAT , 0xE6F4); // RDY pin states
|
||||
XBYTE( GPIFABORT , 0xE6F5); // Abort GPIF cycles
|
||||
|
||||
// ============================================================================
|
||||
// UDMA
|
||||
// ============================================================================
|
||||
XBYTE( FLOWSTATE , 0xE6C6); // Defines GPIF flow state
|
||||
XBYTE( FLOWLOGIC , 0xE6C7); // Defines flow/hold decision criteria
|
||||
XBYTE( FLOWEQ0CTL , 0xE6C8); // CTL states during active flow state
|
||||
XBYTE( FLOWEQ1CTL , 0xE6C9); // CTL states during hold flow state
|
||||
XBYTE( FLOWHOLDOFF , 0xE6CA);
|
||||
XBYTE( FLOWSTB , 0xE6CB); // CTL/RDY Signal to use as master data strobe
|
||||
XBYTE( FLOWSTBEDGE , 0xE6CC); // Defines active master strobe edge
|
||||
XBYTE( FLOWSTBHPERIOD , 0xE6CD); // Half Period of output master strobe
|
||||
XBYTE( GPIFHOLDAMOUNT , 0xE60C); // Data delay shift
|
||||
XBYTE( UDMACRCH , 0xE67D); // CRC Upper byte
|
||||
XBYTE( UDMACRCL , 0xE67E); // CRC Lower byte
|
||||
XBYTE( UDMACRCQUAL , 0xE67F); // UDMA In only, host terminated use only
|
||||
|
||||
// ============================================================================
|
||||
// Endpoint Buffers
|
||||
// ============================================================================
|
||||
XBYTE( EP0BUF [64] , 0xE740); // EP0 IN-OUT buffer
|
||||
XBYTE( EP1OUTBUF [64] , 0xE780); // EP1-OUT buffer
|
||||
XBYTE( EP1INBUF [64] , 0xE7C0); // EP1-IN buffer
|
||||
XBYTE( EP2FIFOBUF [1024] , 0xF000); // 512/1024-byte EP2 buffer (IN or OUT)
|
||||
XBYTE( EP4FIFOBUF [1024] , 0xF400); // 512 byte EP4 buffer (IN or OUT)
|
||||
XBYTE( EP6FIFOBUF [1024] , 0xF800); // 512/1024-byte EP6 buffer (IN or OUT)
|
||||
XBYTE( EP8FIFOBUF [1024] , 0xFC00); // 512 byte EP8 buffer (IN or OUT)
|
||||
|
||||
// ============================================================================
|
||||
// Error Correction Code (ECC) Registers (FX2LP/FX1 only)
|
||||
// ============================================================================
|
||||
XBYTE( ECCCFG , 0xE628); // ECC Configuration
|
||||
XBYTE( ECCRESET , 0xE629); // ECC Reset
|
||||
XBYTE( ECC1B0 , 0xE62A); // ECC1 Byte 0
|
||||
XBYTE( ECC1B1 , 0xE62B); // ECC1 Byte 1
|
||||
XBYTE( ECC1B2 , 0xE62C); // ECC1 Byte 2
|
||||
XBYTE( ECC2B0 , 0xE62D); // ECC2 Byte 0
|
||||
XBYTE( ECC2B1 , 0xE62E); // ECC2 Byte 1
|
||||
XBYTE( ECC2B2 , 0xE62F); // ECC2 Byte 2
|
||||
|
||||
// ============================================================================
|
||||
// Feature Registers (FX2LP/FX1 only)
|
||||
// ============================================================================
|
||||
XBYTE( GPCR2 , 0xE50D); // Chip Features
|
||||
|
||||
// ============================================================================
|
||||
// Special Function Registers (sfr)
|
||||
// ============================================================================
|
||||
#include <fx2_regs_sfr8x.h>
|
||||
#include <fx2_regs_sfr9x.h>
|
||||
#include <fx2_regs_sfrAx.h>
|
||||
#include <fx2_regs_sfrBx.h>
|
||||
#include <fx2_regs_sfrCx.h>
|
||||
#include <fx2_regs_sfrDx.h>
|
||||
#include <fx2_regs_sfrEx.h>
|
||||
#include <fx2_regs_sfrFx.h>
|
||||
|
||||
// ============================================================================
|
||||
// Bit masks
|
||||
// ============================================================================
|
||||
// ----------------------------------------------------------------------------
|
||||
// CPU Control & Status Register (CPUCS)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmPRTCSTB bmBIT5
|
||||
#define bmCLKSPD (bmBIT4 | bmBIT3)
|
||||
#define bmCLKSPD1 bmBIT4
|
||||
#define bmCLKSPD0 bmBIT3
|
||||
#define bmCLKINV bmBIT2
|
||||
#define bmCLKOE bmBIT1
|
||||
#define bm8051RES bmBIT0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Port A (PORTACFG)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmFLAGD bmBIT7
|
||||
#define bmINT1 bmBIT1
|
||||
#define bmINT0 bmBIT0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Port C (PORTCCFG)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmGPIFA7 bmBIT7
|
||||
#define bmGPIFA6 bmBIT6
|
||||
#define bmGPIFA5 bmBIT5
|
||||
#define bmGPIFA4 bmBIT4
|
||||
#define bmGPIFA3 bmBIT3
|
||||
#define bmGPIFA2 bmBIT2
|
||||
#define bmGPIFA1 bmBIT1
|
||||
#define bmGPIFA0 bmBIT0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Port E (PORTECFG)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmGPIFA8 bmBIT7
|
||||
#define bmT2EX bmBIT6
|
||||
#define bmINT6 bmBIT5
|
||||
#define bmRXD1OUT bmBIT4
|
||||
#define bmRXD0OUT bmBIT3
|
||||
#define bmT2OUT bmBIT2
|
||||
#define bmT1OUT bmBIT1
|
||||
#define bmT0OUT bmBIT0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// I2C Control & Status Register (I2CS)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmSTART bmBIT7
|
||||
#define bmSTOP bmBIT6
|
||||
#define bmLASTRD bmBIT5
|
||||
#define bmID (bmBIT4 | bmBIT3)
|
||||
#define bmBERR bmBIT2
|
||||
#define bmACK bmBIT1
|
||||
#define bmDONE bmBIT0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// I2C Control Register (I2CTL)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmSTOPIE bmBIT1
|
||||
#define bm400KHZ bmBIT0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Interrupt 2 (USB) Autovector Register (INT2IVEC)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmIV4 bmBIT6
|
||||
#define bmIV3 bmBIT5
|
||||
#define bmIV2 bmBIT4
|
||||
#define bmIV1 bmBIT3
|
||||
#define bmIV0 bmBIT2
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// USB Interrupt Request & Enable Registers (USBIE/USBIRQ)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmEP0ACK bmBIT6
|
||||
#define bmHSGRANT bmBIT5
|
||||
#define bmURES bmBIT4
|
||||
#define bmSUSP bmBIT3
|
||||
#define bmSUTOK bmBIT2
|
||||
#define bmSOF bmBIT1
|
||||
#define bmSUDAV bmBIT0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// USB Interrupt Request & Enable Registers (EPIE/EPIRQ)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmEP8 bmBIT7
|
||||
#define bmEP6 bmBIT6
|
||||
#define bmEP4 bmBIT5
|
||||
#define bmEP2 bmBIT4
|
||||
#define bmEP1OUT bmBIT3
|
||||
#define bmEP1IN bmBIT2
|
||||
#define bmEP0OUT bmBIT1
|
||||
#define bmEP0IN bmBIT0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// GPIF Interrupt Request & Enable Registers (GPIFIE/GPIFIRQ)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmGPIFWF bmBIT1
|
||||
#define bmGPIFDONE bmBIT0
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Breakpoint register (BREAKPT)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmBREAK bmBIT3
|
||||
#define bmBPPULSE bmBIT2
|
||||
#define bmBPEN bmBIT1
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Interrupt 2 & 4 Setup (INTSETUP)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmAV2EN bmBIT3
|
||||
#define INT4IN bmBIT1
|
||||
#define bmAV4EN bmBIT0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// USB Control & Status Register (USBCS)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmHSM bmBIT7
|
||||
#define bmDISCON bmBIT3
|
||||
#define bmNOSYNSOF bmBIT2
|
||||
#define bmRENUM bmBIT1
|
||||
#define bmSIGRESUME bmBIT0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Wakeup Control and Status Register (WAKEUPCS)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmWU2 bmBIT7
|
||||
#define bmWU bmBIT6
|
||||
#define bmWU2POL bmBIT5
|
||||
#define bmWUPOL bmBIT4
|
||||
#define bmDPEN bmBIT2
|
||||
#define bmWU2EN bmBIT1
|
||||
#define bmWUEN bmBIT0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// End Point 0 Control & Status Register (EP0CS)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmHSNAK bmBIT7
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// End Point 0-1 Control & Status Registers (EP0CS/EP1OUTCS/EP1INCS)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmEPBUSY bmBIT1
|
||||
#define bmEPSTALL bmBIT0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// End Point 2-8 Control & Status Registers (EP2CS/EP4CS/EP6CS/EP8CS)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmNPAK (bmBIT6 | bmBIT5 | bmBIT4)
|
||||
#define bmEPFULL bmBIT3
|
||||
#define bmEPEMPTY bmBIT2
|
||||
|
||||
/* Endpoint Status (EP2468STAT) SFR bits */
|
||||
#define bmEP8FULL bmBIT7
|
||||
#define bmEP8EMPTY bmBIT6
|
||||
#define bmEP6FULL bmBIT5
|
||||
#define bmEP6EMPTY bmBIT4
|
||||
#define bmEP4FULL bmBIT3
|
||||
#define bmEP4EMPTY bmBIT2
|
||||
#define bmEP2FULL bmBIT1
|
||||
#define bmEP2EMPTY bmBIT0
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// SETUP Data Pointer Auto Mode (SUDPTRCTL)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmSDPAUTO bmBIT0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Endpoint Data Toggle Control (TOGCTL)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmQUERYTOGGLE bmBIT7
|
||||
#define bmSETTOGGLE bmBIT6
|
||||
#define bmRESETTOGGLE bmBIT5
|
||||
#define bmTOGCTLEPMASK bmBIT3 | bmBIT2 | bmBIT1 | bmBIT0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// IBN (In Bulk Nak) enable and request bits (IBNIE/IBNIRQ)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmEP8IBN bmBIT5
|
||||
#define bmEP6IBN bmBIT4
|
||||
#define bmEP4IBN bmBIT3
|
||||
#define bmEP2IBN bmBIT2
|
||||
#define bmEP1IBN bmBIT1
|
||||
#define bmEP0IBN bmBIT0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// PING-NAK enable and request bits (NAKIE/NAKIRQ)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmEP8PING bmBIT7
|
||||
#define bmEP6PING bmBIT6
|
||||
#define bmEP4PING bmBIT5
|
||||
#define bmEP2PING bmBIT4
|
||||
#define bmEP1PING bmBIT3
|
||||
#define bmEP0PING bmBIT2
|
||||
#define bmIBN bmBIT0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Interface Configuration bits (IFCONFIG)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmIFCLKSRC bmBIT7
|
||||
#define bm3048MHZ bmBIT6
|
||||
#define bmIFCLKOE bmBIT5
|
||||
#define bmIFCLKPOL bmBIT4
|
||||
#define bmASYNC bmBIT3
|
||||
#define bmGSTATE bmBIT2
|
||||
#define bmIFCFG1 bmBIT1
|
||||
#define bmIFCFG0 bmBIT0
|
||||
|
||||
#define bmIFCFGMASK (bmIFCFG0 | bmIFCFG1)
|
||||
#define bmIFGPIF bmIFCFG1
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// EP 2468 FIFO Configuration bits (EP2FIFOCFG,EP4FIFOCFG,EP6FIFOCFG,EP8FIFOCFG)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmINFM bmBIT6
|
||||
#define bmOEP bmBIT5
|
||||
#define bmAUTOOUT bmBIT4
|
||||
#define bmAUTOIN bmBIT3
|
||||
#define bmZEROLENIN bmBIT2
|
||||
#define bmWORDWIDE bmBIT0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Chip Revision Control Bits (REVCTL) - used to ebable/disable revision
|
||||
// specific features.
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmNOAUTOARM bmBIT1
|
||||
#define bmSKIPCOMMIT bmBIT0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// FIFO polarity (FIFOPINPOLAR)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmPKTEND bmBIT5
|
||||
#define bmSLOE bmBIT4
|
||||
#define bmSLRD bmBIT3
|
||||
#define bmSLWR bmBIT2
|
||||
#define bmEF bmBIT1
|
||||
#define bmFF bmBIT0
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// FIFO Reset bits (FIFORESET)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmNAKALL bmBIT7
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Chip Feature Register (GPCR2)
|
||||
// ----------------------------------------------------------------------------
|
||||
#define bmFULLSPEEDONLY bmBIT4
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,106 @@
|
||||
// ============================================================================
|
||||
// FX2LP SFR Registers at 0x80 - 0x8F
|
||||
// ----------------------------------------------------------------------------
|
||||
// 0x80 - IOA
|
||||
// 0x81 - SP
|
||||
// 0x82 - DPL0
|
||||
// 0x83 - DPH0
|
||||
// 0x84 - DPL1
|
||||
// 0x85 - DPH1
|
||||
// 0x86 - DPS
|
||||
// 0x87 - PCON
|
||||
// 0x88 - TCON
|
||||
// 0x89 - TMOD
|
||||
// 0x8A - TL0
|
||||
// 0x8B - TL1
|
||||
// 0x8C - TH0
|
||||
// 0x8D - TH1
|
||||
// 0x8E - CKCON
|
||||
// 0x8F - (SFUNC) ????
|
||||
//
|
||||
// TODO: check documentation!!!
|
||||
// ============================================================================
|
||||
#ifndef FX2REGS_SFR8X_H
|
||||
#define FX2REGS_SFR8X_H
|
||||
|
||||
sfr IOA = 0x80;
|
||||
sfr SP = 0x81;
|
||||
sfr DPL = 0x82;
|
||||
sfr DPH = 0x83;
|
||||
sfr DPL1 = 0x84;
|
||||
sfr DPH1 = 0x85;
|
||||
sfr DPS = 0x86;
|
||||
sfr PCON = 0x87;
|
||||
sfr TCON = 0x88;
|
||||
sfr TMOD = 0x89;
|
||||
sfr TL0 = 0x8A;
|
||||
sfr TL1 = 0x8B;
|
||||
sfr TH0 = 0x8C;
|
||||
sfr TH1 = 0x8D;
|
||||
sfr CKCON = 0x8E;
|
||||
sfr SFUNC = 0x8F;
|
||||
|
||||
sfr16 DP0 = 0x82;
|
||||
sfr16 DP1 = 0x84;
|
||||
|
||||
// ------------------------------------
|
||||
// PortA (0x80)
|
||||
// ------------------------------------
|
||||
sbit PA0 = 0x80 + 0;
|
||||
sbit PA1 = 0x80 + 1;
|
||||
sbit PA2 = 0x80 + 2;
|
||||
sbit PA3 = 0x80 + 3;
|
||||
sbit PA4 = 0x80 + 4;
|
||||
sbit PA5 = 0x80 + 5;
|
||||
sbit PA6 = 0x80 + 6;
|
||||
sbit PA7 = 0x80 + 7;
|
||||
|
||||
// ------------------------------------
|
||||
// TCON (0x88)
|
||||
// ------------------------------------
|
||||
sbit IT0 = 0x88 +0;
|
||||
sbit IE0 = 0x88 +1;
|
||||
sbit IT1 = 0x88 +2;
|
||||
sbit IE1 = 0x88 +3;
|
||||
sbit TR0 = 0x88 +4;
|
||||
sbit TF0 = 0x88 +5;
|
||||
sbit TR1 = 0x88 +6;
|
||||
sbit TF1 = 0x88 +7;
|
||||
|
||||
// ------------------------------------
|
||||
// PCON bits (0x87)
|
||||
// ------------------------------------
|
||||
#define bmIDLE 0x01
|
||||
//#define bmSTOP 0x02 // ??
|
||||
//#define bmGF0 0x04 // ??
|
||||
//#define bmGF1 0x08 // ??
|
||||
#define bmSMOD0 0x80
|
||||
|
||||
// ------------------------------------
|
||||
// TMOD bits (0x89)
|
||||
// ------------------------------------
|
||||
#define bmM00 0x01
|
||||
#define bmM10 0x02
|
||||
#define bmCT0 0x04
|
||||
#define bmGATE0 0x08
|
||||
#define bmM01 0x10
|
||||
#define bmM11 0x20
|
||||
#define bmCT1 0x40
|
||||
#define bmGATE1 0x80
|
||||
|
||||
// ------------------------------------
|
||||
// CKCON bits (0x8E)
|
||||
// ------------------------------------
|
||||
#define bmMD0 0x01
|
||||
#define bmMD1 0x02
|
||||
#define bmMD2 0x04
|
||||
#define bmT0M 0x08
|
||||
#define bmT1M 0x10
|
||||
#define bmT2M 0x20
|
||||
|
||||
// ------------------------------------
|
||||
// SFUNC bits
|
||||
// ------------------------------------
|
||||
//sbit WRS = 0x8F +0;
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,67 @@
|
||||
// ============================================================================
|
||||
// FX2LP SFR Registers at 0x90 - 0x9F
|
||||
// ----------------------------------------------------------------------------
|
||||
// 0x90 - IOB
|
||||
// 0x91 - EXIF
|
||||
// 0x92 - MPAGE
|
||||
// 0x93 -
|
||||
// 0x94 -
|
||||
// 0x95 -
|
||||
// 0x96 -
|
||||
// 0x97 -
|
||||
// 0x98 - SCON0
|
||||
// 0x99 - SBUF0
|
||||
// 0x9A - AUTOPTRH1
|
||||
// 0x9B - AUTOPTRL1
|
||||
// 0x9C -
|
||||
// 0x9D - AUTOPTRH2
|
||||
// 0x9E - AUTOPTRL2
|
||||
// 0x9F -
|
||||
// ============================================================================
|
||||
#ifndef FX2REGS_SFR9X_H
|
||||
#define FX2REGS_SFR9X_H
|
||||
|
||||
sfr IOB = 0x90;
|
||||
sfr EXIF = 0x91;
|
||||
sfr MPAGE = 0x92;
|
||||
sfr SCON0 = 0x98;
|
||||
sfr SBUF0 = 0x99;
|
||||
sfr AUTOPTRH1 = 0x9A;
|
||||
sfr AUTOPTRL1 = 0x9B;
|
||||
sfr AUTOPTRH2 = 0x9D;
|
||||
sfr AUTOPTRL2 = 0x9E;
|
||||
|
||||
// ------------------------------------
|
||||
// PortB (0x90)
|
||||
// ------------------------------------
|
||||
sbit PB0 = 0x90 +0;
|
||||
sbit PB1 = 0x90 +1;
|
||||
sbit PB2 = 0x90 +2;
|
||||
sbit PB3 = 0x90 +3;
|
||||
sbit PB4 = 0x90 +4;
|
||||
sbit PB5 = 0x90 +5;
|
||||
sbit PB6 = 0x90 +6;
|
||||
sbit PB7 = 0x90 +7;
|
||||
|
||||
// ------------------------------------
|
||||
// SCON0 (0x98)
|
||||
// ------------------------------------
|
||||
sbit RI = 0x98 +0;
|
||||
sbit TI = 0x98 +1;
|
||||
sbit RB8 = 0x98 +2;
|
||||
sbit TB8 = 0x98 +3;
|
||||
sbit REN = 0x98 +4;
|
||||
sbit SM2 = 0x98 +5;
|
||||
sbit SM1 = 0x98 +6;
|
||||
sbit SM0 = 0x98 +7;
|
||||
|
||||
// ------------------------------------
|
||||
// EXIF (0x91)
|
||||
// ------------------------------------
|
||||
#define bmUSBINT 0x10
|
||||
#define bmI2CINT 0x20
|
||||
#define bmIE4 0x40
|
||||
#define bmIE5 0x80
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
// ============================================================================
|
||||
// FX2LP SFR Registers at 0xA0 - 0xAF
|
||||
// ----------------------------------------------------------------------------
|
||||
// 0xA0 - IOC
|
||||
// 0xA1 - INT2CLR
|
||||
// 0xA2 - INT4CLR
|
||||
// 0xA3 -
|
||||
// 0xA4 -
|
||||
// 0xA5 -
|
||||
// 0xA6 -
|
||||
// 0xA7 -
|
||||
// 0xA8 - IE
|
||||
// 0xA9 -
|
||||
// 0xAA - EP2468STAT
|
||||
// 0xAB - EP24FIFOFLGS
|
||||
// 0xAC - EP68FIFOFLGS
|
||||
// 0xAD -
|
||||
// 0xAE -
|
||||
// 0xAF - AUTOPTRSETUP
|
||||
// ============================================================================
|
||||
#ifndef FX2REGS_SFRAX_H
|
||||
#define FX2REGS_SFRAX_H
|
||||
|
||||
sfr IOC = 0xA0;
|
||||
sfr INT2CLR = 0xA1;
|
||||
sfr INT4CLR = 0xA2;
|
||||
sfr IE = 0xA8;
|
||||
sfr EP2468STAT = 0xAA;
|
||||
sfr EP24FIFOFLGS= 0xAB;
|
||||
sfr EP68FIFOFLGS= 0xAC;
|
||||
sfr AUTOPTRSETUP= 0xAF;
|
||||
|
||||
|
||||
// ------------------------------------
|
||||
// IOC (0xA0)
|
||||
// ------------------------------------
|
||||
sbit PC0 = 0xA0 +0;
|
||||
sbit PC1 = 0xA0 +1;
|
||||
sbit PC2 = 0xA0 +2;
|
||||
sbit PC3 = 0xA0 +3;
|
||||
sbit PC4 = 0xA0 +4;
|
||||
sbit PC5 = 0xA0 +5;
|
||||
sbit PC6 = 0xA0 +6;
|
||||
sbit PC7 = 0xA0 +7;
|
||||
|
||||
|
||||
// ------------------------------------
|
||||
// IE (0xA8)
|
||||
// ------------------------------------
|
||||
sbit EX0 = 0xA8 +0;
|
||||
sbit ET0 = 0xA8 +1;
|
||||
sbit EX1 = 0xA8 +2;
|
||||
sbit ET1 = 0xA8 +3;
|
||||
sbit ES0 = 0xA8 +4;
|
||||
sbit ET2 = 0xA8 +5;
|
||||
sbit ES1 = 0xA8 +6;
|
||||
sbit EA = 0xA8 +7;
|
||||
|
||||
// ------------------------------------
|
||||
// EP2468STAT (0xAA)
|
||||
// ------------------------------------
|
||||
#define bmEP2E 0x01
|
||||
#define bmEP2F 0x02
|
||||
#define bmEP4E 0x04
|
||||
#define bmEP4F 0x08
|
||||
#define bmEP6E 0x10
|
||||
#define bmEP6F 0x20
|
||||
#define bmEP8E 0x40
|
||||
#define bmEP8F 0x80
|
||||
|
||||
// ------------------------------------
|
||||
// EP24FIFOFLGS (0XAB)
|
||||
// ------------------------------------
|
||||
#define bmEP2FF 0x01
|
||||
#define bmEP2EF 0x02
|
||||
#define bmEP2PF 0x04
|
||||
#define bmEP4FF 0x10
|
||||
#define bmEP4EF 0x20
|
||||
#define bmEP4PF 0x40
|
||||
|
||||
// ------------------------------------
|
||||
// EP68FIFOFLGS (0XAC)
|
||||
// ------------------------------------
|
||||
#define bmEP6FF 0x01
|
||||
#define bmEP6EF 0x02
|
||||
#define bmEP6PF 0x04
|
||||
#define bmEP8FF 0x10
|
||||
#define bmEP8EF 0x20
|
||||
#define bmEP8PF 0x40
|
||||
|
||||
// ------------------------------------
|
||||
// AUTOPTRSETUP (0xAF)
|
||||
// ------------------------------------
|
||||
#define bmAPTREN 0x01
|
||||
#define bmAPTR1INC 0x02
|
||||
#define bmAPTR2INC 0x04
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
// ============================================================================
|
||||
// FX2LP SFR Registers at 0xB0 - 0xBF
|
||||
// ----------------------------------------------------------------------------
|
||||
// 0xB0 - IOD
|
||||
// 0xB1 - IOE
|
||||
// 0xB2 - OEA
|
||||
// 0xB3 - OEB
|
||||
// 0xB4 - OEC
|
||||
// 0xB5 - OED
|
||||
// 0xB6 - OEE
|
||||
// 0xB7 -
|
||||
// 0xB8 - IP
|
||||
// 0xB9 -
|
||||
// 0xBA - EP01STAT
|
||||
// 0xBB - GPIFTRIG
|
||||
// 0xBC -
|
||||
// 0xBD - GPIFSGL_DATH
|
||||
// 0xBE - GPIFSGL_DATLX
|
||||
// 0xBF - GPIFSGL_DATLNOX
|
||||
// ============================================================================
|
||||
#ifndef FX2REGS_SFRBX_H
|
||||
#define FX2REGS_SFRBX_H
|
||||
|
||||
sfr IOD = 0xB0;
|
||||
sfr IOE = 0xB1;
|
||||
sfr OEA = 0xB2;
|
||||
sfr OEB = 0xB3;
|
||||
sfr OEC = 0xB4;
|
||||
sfr OED = 0xB5;
|
||||
sfr OEE = 0xB6;
|
||||
sfr IP = 0xB8;
|
||||
|
||||
sfr EP01STAT = 0xBA;
|
||||
sfr GPIFTRIG = 0xBB;
|
||||
sfr GPIFSGLDATH = 0xBD;
|
||||
sfr GPIFSGLDATLX = 0xBE;
|
||||
sfr GPIFSGLDATLNOX = 0xBF;
|
||||
|
||||
|
||||
// ------------------------------------
|
||||
// PortD (0xB0)
|
||||
// ------------------------------------
|
||||
sbit PD0 = 0xB0 +0;
|
||||
sbit PD1 = 0xB0 +1;
|
||||
sbit PD2 = 0xB0 +2;
|
||||
sbit PD3 = 0xB0 +3;
|
||||
sbit PD4 = 0xB0 +4;
|
||||
sbit PD5 = 0xB0 +5;
|
||||
sbit PD6 = 0xB0 +6;
|
||||
sbit PD7 = 0xB0 +7;
|
||||
|
||||
// ------------------------------------
|
||||
// IP bits
|
||||
// ------------------------------------
|
||||
sbit PX0 = 0xB8 +0;
|
||||
sbit PT0 = 0xB8 +1;
|
||||
sbit PX1 = 0xB8 +2;
|
||||
sbit PT1 = 0xB8 +3;
|
||||
sbit PS0 = 0xB8 +4;
|
||||
sbit PT2 = 0xB8 +5;
|
||||
sbit PS1 = 0xB8 +6;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
// ============================================================================
|
||||
// FX2LP SFR Registers at 0xC0 - 0xCF
|
||||
// ----------------------------------------------------------------------------
|
||||
// 0xC0 - SCON1
|
||||
// 0xC1 - SBUF1
|
||||
// 0xC2 -
|
||||
// 0xC3 -
|
||||
// 0xC4 -
|
||||
// 0xC5 -
|
||||
// 0xC6 -
|
||||
// 0xC7 -
|
||||
// 0xC8 - T2CON
|
||||
// 0xC9 -
|
||||
// 0xCA - RCAP2L
|
||||
// 0xCB - RCAP2H
|
||||
// 0xCC - TL2
|
||||
// 0xCD - TH2
|
||||
// 0xCE -
|
||||
// 0xCF -
|
||||
// ============================================================================
|
||||
#ifndef FX2REGS_SFRCX_H
|
||||
#define FX2REGS_SFRCX_H
|
||||
|
||||
sfr SCON1 = 0xC0;
|
||||
sfr SBUF1 = 0xC1;
|
||||
sfr T2CON = 0xC8;
|
||||
sfr RCAP2L = 0xCA;
|
||||
sfr RCAP2H = 0xCB;
|
||||
sfr TL2 = 0xCC;
|
||||
sfr TH2 = 0xCD;
|
||||
|
||||
|
||||
// ------------------------------------
|
||||
// SCON1 (0xC0)
|
||||
// ------------------------------------
|
||||
sbit RI1 = 0xC0 +0;
|
||||
sbit TI1 = 0xC0 +1;
|
||||
sbit RB81 = 0xC0 +2;
|
||||
sbit TB81 = 0xC0 +3;
|
||||
sbit REN1 = 0xC0 +4;
|
||||
sbit SM21 = 0xC0 +5;
|
||||
sbit SM11 = 0xC0 +6;
|
||||
sbit SM01 = 0xC0 +7;
|
||||
|
||||
|
||||
// ------------------------------------
|
||||
// T2CON (0xC8)
|
||||
// ------------------------------------
|
||||
sbit CP_RL2 = 0xC8 +0;
|
||||
sbit C_T2 = 0xC8 +1;
|
||||
sbit TR2 = 0xC8 +2;
|
||||
sbit EXEN2 = 0xC8 +3;
|
||||
sbit TCLK = 0xC8 +4;
|
||||
sbit RCLK = 0xC8 +5;
|
||||
sbit EXF2 = 0xC8 +6;
|
||||
sbit TF2 = 0xC8 +7;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
// ============================================================================
|
||||
// FX2LP SFR Registers at 0xD0 - 0xDF
|
||||
// ----------------------------------------------------------------------------
|
||||
// 0xD0 - PSW
|
||||
// 0xD1 -
|
||||
// 0xD2 -
|
||||
// 0xD3 -
|
||||
// 0xD4 -
|
||||
// 0xD5 -
|
||||
// 0xD6 -
|
||||
// 0xD7 -
|
||||
// 0xD8 - EICON
|
||||
// 0xD9 -
|
||||
// 0xDA -
|
||||
// 0xDB -
|
||||
// 0xDC -
|
||||
// 0xDD -
|
||||
// 0xDE -
|
||||
// 0xDF -
|
||||
// ============================================================================
|
||||
#ifndef FX2REGS_SFRDX_H
|
||||
#define FX2REGS_SFRDX_H
|
||||
|
||||
sfr PSW = 0xD0;
|
||||
sfr EICON = 0xD8;
|
||||
|
||||
// ------------------------------------
|
||||
// PSW bits
|
||||
// ------------------------------------
|
||||
sbit P = 0xD0 +0;
|
||||
sbit FL = 0xD0 +1;
|
||||
sbit OV = 0xD0 +2;
|
||||
sbit RS0 = 0xD0 +3;
|
||||
sbit RS1 = 0xD0 +4;
|
||||
sbit F0 = 0xD0 +5;
|
||||
sbit AC = 0xD0 +6;
|
||||
sbit CY = 0xD0 +7;
|
||||
|
||||
|
||||
// ------------------------------------
|
||||
// EICON bits
|
||||
// ------------------------------------
|
||||
sbit INT6 = 0xD8 +3;
|
||||
sbit RESI = 0xD8 +4;
|
||||
sbit ERESI = 0xD8 +5;
|
||||
sbit SMOD1 = 0xD8 +7;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
// ============================================================================
|
||||
// FX2LP SFR Registers at 0xE0 - 0xEF
|
||||
// ----------------------------------------------------------------------------
|
||||
// 0xE0 - ACC
|
||||
// 0xE1 -
|
||||
// 0xE2 -
|
||||
// 0xE3 -
|
||||
// 0xE4 -
|
||||
// 0xE5 -
|
||||
// 0xE6 -
|
||||
// 0xE7 -
|
||||
// 0xE8 - EIE
|
||||
// 0xE9 -
|
||||
// 0xEA -
|
||||
// 0xEB -
|
||||
// 0xEC -
|
||||
// 0xED -
|
||||
// 0xEE -
|
||||
// 0xEF -
|
||||
// ============================================================================
|
||||
#ifndef FX2REGS_SFREX_H
|
||||
#define FX2REGS_SFREX_H
|
||||
|
||||
sfr ACC = 0xE0;
|
||||
sfr EIE = 0xE8;
|
||||
|
||||
// ------------------------------------
|
||||
// EIE bits
|
||||
// ------------------------------------
|
||||
sbit EUSB = 0xE8 +0;
|
||||
sbit EI2C = 0xE8 +1;
|
||||
sbit EIEX4 = 0xE8 +2;
|
||||
sbit EIEX5 = 0xE8 +3;
|
||||
sbit EIEX6 = 0xE8 +4;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
// ============================================================================
|
||||
// FX2LP SFR Registers at 0xF0 - 0xFF
|
||||
// ----------------------------------------------------------------------------
|
||||
// 0xF0 - B
|
||||
// 0xF1 -
|
||||
// 0xF2 -
|
||||
// 0xF3 -
|
||||
// 0xF4 -
|
||||
// 0xF5 -
|
||||
// 0xF6 -
|
||||
// 0xF7 -
|
||||
// 0xF8 - EIP
|
||||
// 0xF9 -
|
||||
// 0xFA -
|
||||
// 0xFB -
|
||||
// 0xFC -
|
||||
// 0xFD -
|
||||
// 0xFE -
|
||||
// 0xFF -
|
||||
// ============================================================================
|
||||
#ifndef FX2REGS_SFRFX_H
|
||||
#define FX2REGS_SFRFX_H
|
||||
|
||||
sfr B = 0xF0;
|
||||
sfr EIP = 0xF8;
|
||||
|
||||
// ------------------------------------
|
||||
// EIP bits
|
||||
// ------------------------------------
|
||||
sbit PUSB = 0xF8 +0;
|
||||
sbit PI2C = 0xF8 +1;
|
||||
sbit EIPX4 = 0xF8 +2;
|
||||
sbit EIPX5 = 0xF8 +3;
|
||||
sbit EIPX6 = 0xF8 +4;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,240 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// File: fx2sdly.h
|
||||
// Contents: EZ-USB FX2 Synchronization Delay (SYNCDELAY) Macro
|
||||
//
|
||||
// Enter with _IFREQ = IFCLK in kHz
|
||||
// Enter with _CFREQ = CLKOUT in kHz
|
||||
//
|
||||
// Copyright (c) 2001 Cypress Semiconductor, All rights reserved
|
||||
//-----------------------------------------------------------------------------
|
||||
#include "intrins.h"
|
||||
|
||||
// Registers which require a synchronization delay, see section 15.14
|
||||
// FIFORESET FIFOPINPOLAR
|
||||
// INPKTEND OUTPKTEND
|
||||
// EPxBCH:L REVCTL
|
||||
// GPIFTCB3 GPIFTCB2
|
||||
// GPIFTCB1 GPIFTCB0
|
||||
// EPxFIFOPFH:L EPxAUTOINLENH:L
|
||||
// EPxFIFOCFG EPxGPIFFLGSEL
|
||||
// PINFLAGSxx EPxFIFOIRQ
|
||||
// EPxFIFOIE GPIFIRQ
|
||||
// GPIFIE GPIFADRH:L
|
||||
// UDMACRCH:L EPxGPIFTRIG
|
||||
// GPIFTRIG
|
||||
|
||||
// Note: The pre-REVE EPxGPIFTCH/L register are affected, as well...
|
||||
// ...these have been replaced by GPIFTC[B3:B0] registers
|
||||
|
||||
// _IFREQ can be in the range of: 5000 to 48000
|
||||
#ifndef _IFREQ
|
||||
#define _IFREQ 48000 // IFCLK frequency in kHz
|
||||
#endif
|
||||
|
||||
// CFREQ can be any one of: 48000, 24000, or 12000
|
||||
#ifndef _CFREQ
|
||||
#define _CFREQ 48000 // CLKOUT frequency in kHz
|
||||
#endif
|
||||
|
||||
#if( _IFREQ < 5000 )
|
||||
#error "_IFREQ too small! Valid Range: 5000 to 48000..."
|
||||
#endif
|
||||
|
||||
#if( _IFREQ > 48000 )
|
||||
#error "_IFREQ too large! Valid Range: 5000 to 48000..."
|
||||
#endif
|
||||
|
||||
#if( _CFREQ != 48000 )
|
||||
#if( _CFREQ != 24000 )
|
||||
#if( _CFREQ != 12000 )
|
||||
#error "_CFREQ invalid! Valid values: 48000, 24000, 12000..."
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Synchronization Delay formula: see TRM section 15-14
|
||||
#define _SCYCL ( 3*(_CFREQ) + 5*(_IFREQ) - 1 ) / ( 2*(_IFREQ) )
|
||||
|
||||
#if( _SCYCL == 1 )
|
||||
#define SYNCDELAY _nop_( )
|
||||
#endif
|
||||
|
||||
#if( _SCYCL == 2 )
|
||||
#define SYNCDELAY _nop_( ); \
|
||||
_nop_( )
|
||||
#endif
|
||||
|
||||
#if( _SCYCL == 3 )
|
||||
#define SYNCDELAY _nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( )
|
||||
#endif
|
||||
|
||||
#if( _SCYCL == 4 )
|
||||
#define SYNCDELAY _nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( )
|
||||
#endif
|
||||
|
||||
#if( _SCYCL == 5 )
|
||||
#define SYNCDELAY _nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( )
|
||||
#endif
|
||||
|
||||
#if( _SCYCL == 6 )
|
||||
#define SYNCDELAY _nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( )
|
||||
#endif
|
||||
|
||||
#if( _SCYCL == 7 )
|
||||
#define SYNCDELAY _nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( )
|
||||
#endif
|
||||
|
||||
#if( _SCYCL == 8 )
|
||||
#define SYNCDELAY _nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( )
|
||||
#endif
|
||||
|
||||
#if( _SCYCL == 9 )
|
||||
#define SYNCDELAY _nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( )
|
||||
#endif
|
||||
|
||||
#if( _SCYCL == 10 )
|
||||
#define SYNCDELAY _nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( )
|
||||
#endif
|
||||
|
||||
#if( _SCYCL == 11 )
|
||||
#define SYNCDELAY _nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( )
|
||||
#endif
|
||||
|
||||
#if( _SCYCL == 12 )
|
||||
#define SYNCDELAY _nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( )
|
||||
#endif
|
||||
|
||||
#if( _SCYCL == 13 )
|
||||
#define SYNCDELAY _nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( )
|
||||
#endif
|
||||
|
||||
#if( _SCYCL == 14 )
|
||||
#define SYNCDELAY _nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( )
|
||||
#endif
|
||||
|
||||
#if( _SCYCL == 15 )
|
||||
#define SYNCDELAY _nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( )
|
||||
#endif
|
||||
|
||||
#if( _SCYCL == 16 )
|
||||
#define SYNCDELAY _nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( ); \
|
||||
_nop_( )
|
||||
#endif
|
||||
@@ -0,0 +1,45 @@
|
||||
#ifndef __FX2_USART_H__
|
||||
#define __FX2_USART_H__
|
||||
|
||||
|
||||
typedef enum _usart_cfg
|
||||
{
|
||||
// -----------------------------------------------------
|
||||
// 11 bit total length configuraations
|
||||
// -----------------------------------------------------
|
||||
uc8n2, // 8 data bit no parity 2 stop bit
|
||||
uc8e1, // 8 data bit even parity 1 stop bit
|
||||
uc8o1, // 8 data bit odd parity 1 stop bit
|
||||
|
||||
// -----------------------------------------------------
|
||||
// 10 bit total length configuraations
|
||||
// -----------------------------------------------------
|
||||
uc8n1, // 8 data bit no parity 1 stop
|
||||
} usart_cfg;
|
||||
|
||||
// USART error codes
|
||||
// -----------------------------------------------------------------------------
|
||||
#define USART_OK 0x00
|
||||
#define USART_ERROR 0x80
|
||||
#define USART_ABORT 0xFF
|
||||
|
||||
|
||||
// I2C state machine states
|
||||
// -----------------------------------------------------------------------------
|
||||
#define USART_IDLE 0x00
|
||||
#define USART_SENDING 0x01
|
||||
#define USART_RECEIVING 0x02
|
||||
//#define I2C_PRIME 0x03
|
||||
//#define I2C_BERROR 0x04
|
||||
//#define I2C_NACK 0x05
|
||||
//#define I2C_STOP 0x06
|
||||
//#define I2C_WAITSTOP 0x07
|
||||
|
||||
|
||||
|
||||
void fx2_usart_init( unsigned int baud, usart_cfg cfg);
|
||||
BYTE fx2_usart_send( BYTE length, BYTE xdata *dat, BYTE xdata *pause);
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user