firmware/io_cfg.h
author cpresser@slime-ws
Sat, 26 Jul 2008 14:22:38 +0200
changeset 25 96f051df5d60
parent 23 dc247e80ef26
permissions -rw-r--r--
added eeprom code
slime@2
     1
/*
slime@2
     2
 * Project Frontplatte
slime@2
     3
 *
slime@2
     4
 * io_cfg.h  -  Pinmappings and naming
slime@2
     5
 *
slime@2
     6
 * This file is released under the GNU General Public License. Refer
slime@2
     7
 * to the COPYING file distributed with this package.
slime@2
     8
 *
slime@2
     9
 * (c) 2007 Carsten Presser cpresser AT fsing.uni-sb.de
slime@2
    10
 */
slime@2
    11
slime@2
    12
#ifndef IO_CFG_H
slime@2
    13
#define IO_CFG_H
slime@2
    14
cpresser@11
    15
#define FW_VERSION					0x05
slime@2
    16
slime@2
    17
/** U S B ***********************************************************/
slime@2
    18
#define usb_bus_sense       	1
slime@2
    19
#define self_power          	1
slime@2
    20
slime@2
    21
slime@2
    22
/** P O R T A  P I N S *********************************************/
slime@2
    23
// PortA is not used yet...
slime@2
    24
slime@2
    25
slime@2
    26
/** P O R T B  P I N S *********************************************/
slime@2
    27
//								RB0 & RB1 -> I2C (MSSP-Module)
slime@2
    28
#define PIN_IR					PORTBbits.RB2
slime@2
    29
#define PIN_POWER				LATBbits.LATB3
slime@2
    30
#define PIN_I2C_INT				PORTBbits.RB4
slime@2
    31
//								RB5 has no connection
slime@2
    32
//								RB6 & RB7 -> ISCP
slime@2
    33
slime@2
    34
#define DDR_I2C_SCL				DDRBbits.RB1
slime@2
    35
#define DDR_I2C_SDA				DDRBbits.RB0
slime@2
    36
#define DDR_IR					DDRBbits.RB2
slime@2
    37
#define DDR_I2C_INT				DDRBbits.RB4
slime@2
    38
slime@2
    39
#define	mInitPortB				TRISB = 0x00; LATB = 0xFF; 
slime@2
    40
slime@2
    41
slime@2
    42
/** P O R T C  P I N S *********************************************/
slime@2
    43
#define PIN_BOOT_SW				PORTCbits.RC0
slime@2
    44
#define DDR_BOOT_SW				DDRCbits.RC0
slime@2
    45
slime@2
    46
#define DDR_PWM1				DDRCbits.RC1
slime@2
    47
#define DDR_PWM2				DDRCbits.RC2
slime@2
    48
//								RC3 -> not implemented in hardware
slime@2
    49
//								RC4 & RC5 -> USB
slime@2
    50
//								RC6 has no connection
slime@2
    51
//								RC7 has no connection
slime@2
    52
slime@2
    53
slime@2
    54
/** P O R T D  &  P O R T E   P I N S  ( D I S P L A Y ) ************/
slime@2
    55
// control pins.
slime@2
    56
#define	D_WR			LATEbits.LATE0
slime@2
    57
#define	D_RD			LATEbits.LATE1
slime@2
    58
#define	D_CD			LATEbits.LATE2
slime@2
    59
slime@2
    60
#define	mLcdInitCtrl()			D_WR = 1; D_RD = 1; D_CD = 0; TRISE = 0x00;
slime@2
    61
slime@2
    62
#define mLcdDataDirIn()			TRISD=0xFF
slime@2
    63
#define mLcdDataDirOut() 		TRISD=0x00
slime@2
    64
#define mLcdWriteData(a)		PORTD=(a)		
slime@2
    65
#define mLcdReadData()			PORTD		
slime@2
    66
slime@2
    67
slime@2
    68
/** S O M E   F L A G S *********************************************/
slime@2
    69
#define FLAG_I2C			0x20
slime@2
    70
#define FLAG_COUNTER		0x10
slime@2
    71
#define FLAG_POWER			0x08
slime@2
    72
#define FLAG_ALARM			0x04
slime@2
    73
#define FLAG_IR				0x02
slime@2
    74
#define FLAG_KEY			0x01
slime@2
    75
#define FLAG_CLEAR			0x00
slime@2
    76
slime@2
    77
#define MODE_MANAGED		0x01
slime@2
    78
#define MODE_UNMANAGED		0x00
slime@2
    79
slime@2
    80
slime@2
    81
/** I 2 C - A D D R E S S *******************************************/
slime@2
    82
#define	pcf8583				0xA0
slime@2
    83
#define pcf8574A_1			0x40
slime@2
    84
#define	pcf8574A_2			0x42
slime@2
    85
slime@2
    86
/** P C F 8 5 8 3   R E G I S T E R *********************************/
slime@2
    87
#define CLK_CTRL			0x00
slime@2
    88
#define CLK_HUNDRSEC		0x01
slime@2
    89
#define CLK_SEC				0x02
slime@2
    90
#define CLK_MIN				0x03
slime@2
    91
#define CLK_HOURS			0x04
slime@2
    92
#define CLK_YEARDAY			0x05
slime@2
    93
#define CLK_WEEKDMON		0x06
slime@2
    94
#define CLK_TIMER			0x07
slime@2
    95
#define CLK_ALARM_CTRL		0x08
slime@2
    96
slime@2
    97
slime@2
    98
/** C O M M U N I C A T I O N ***************************************/
slime@2
    99
// address
slime@2
   100
#define CMD_HD_SYNC		0x00
slime@2
   101
#define CMD_HD_COMMAND	0x01
slime@2
   102
#define CMD_HD_LENGTH	0x02
slime@2
   103
#define CMD_DATA_START	0x04
slime@2
   104
slime@2
   105
// sync words
slime@2
   106
#define CMD_SYNC_SEND	0xAA
slime@2
   107
#define CMD_SYNC_RECV	0x55
slime@2
   108
slime@2
   109
// commands
slime@2
   110
#define CMD_SYS_SYNC	0x00
cpresser@25
   111
#define CMD_SYS_ACK		0x01		
slime@2
   112
#define CMD_SYS_NACK	0x02
slime@2
   113
#define CMD_SYS_NIMP	0xFF
slime@2
   114
#define CMD_SYS_IR		0x10
slime@2
   115
slime@2
   116
#define CMD_GET_VERSION				0x01
slime@2
   117
slime@2
   118
#define CMD_DISP_CLEAR_SCREEN		0x10
slime@2
   119
#define CMD_DISP_SET_ROW_DATA   	0x14
slime@2
   120
#define CMD_DISP_SET_ADDRESS		0x16
slime@2
   121
cpresser@23
   122
#define CMD_WRITE_EEPROM			0x20
cpresser@23
   123
#define CMD_READ_EEPROM				0x21
cpresser@23
   124
slime@2
   125
#define CMD_READ_CLOCK				0x40
slime@2
   126
#define CMD_WRITE_CLOCK				0x41
slime@2
   127
#define CMD_SET_PWM1				0x45
slime@2
   128
#define CMD_SET_PWM2				0x46
slime@2
   129
slime@2
   130
#define CMD_SET_MODE_MANAGED		0x70
slime@2
   131
#define CMD_SET_MODE_UNMANAGED		0x71
slime@2
   132
slime@2
   133
#define CMD_BOOT					0x80
slime@2
   134
slime@2
   135
// rc5 keymap
slime@2
   136
#define RC5_KEY_UP					0x20
slime@2
   137
#define RC5_KEY_DOWN				0x21
slime@2
   138
#define RC5_KEY_LEFT				0x11
slime@2
   139
#define RC5_KEY_RIGHT				0x10
slime@2
   140
#define RC5_KEY_OK					0x0E
slime@2
   141
#define RC5_KEY_MENU				0x12
slime@2
   142
#define RC5_KEY_BACK				0x22
slime@2
   143
#define RC5_KEY_RED					0x37
slime@2
   144
#define RC5_KEY_GREEN				0x36
slime@2
   145
#define RC5_KEY_YELLOW				0x32
slime@2
   146
#define RC5_KEY_BLUE				0x34
slime@2
   147
#define RC5_KEY_POWER				0x0C
slime@2
   148
cpresser@11
   149
#define RC5_FRONT_ADDRESS			0x20
slime@2
   150
slime@2
   151
cpresser@25
   152
/** E E P R O M   L O C A T I O N S *********************************/
cpresser@25
   153
#define EE_ADDR_DISPLAY				0x00
cpresser@25
   154
#define EE_ADDR_FEATURES			0x01
cpresser@25
   155
cpresser@25
   156
#define EE_ADDR_RC5KEY00			0x10
cpresser@25
   157
#define EE_ADDR_RC5KEY01			0x11
cpresser@25
   158
#define EE_ADDR_RC5KEY02			0x12
cpresser@25
   159
#define EE_ADDR_RC5KEY03			0x13
cpresser@25
   160
#define EE_ADDR_RC5KEY04			0x14
cpresser@25
   161
#define EE_ADDR_RC5KEY05			0x15
cpresser@25
   162
#define EE_ADDR_RC5KEY06			0x16
cpresser@25
   163
#define EE_ADDR_RC5KEY07			0x17
cpresser@25
   164
#define EE_ADDR_RC5KEY08			0x18
cpresser@25
   165
#define EE_ADDR_RC5KEY09 			0x19
cpresser@25
   166
#define EE_ADDR_RC5KEY10			0x1a
cpresser@25
   167
#define EE_ADDR_RC5KEY11			0x1b
cpresser@25
   168
#define EE_ADDR_RC5KEY12			0x1c
cpresser@25
   169
#define EE_ADDR_RC5KEY13			0x1d
cpresser@25
   170
#define EE_ADDR_RC5KEY14			0x1e
cpresser@25
   171
#define EE_ADDR_RC5KEY15			0x1f
cpresser@25
   172
slime@2
   173
slime@2
   174
/** P R O G R A M   L O C A T I O N *********************************/
slime@2
   175
#define BOOTLOAD_START		0x000686		// taken from bootload.asm
slime@2
   176
slime@2
   177
#endif //IO_CFG_H