author | cpresser@slime-ws |
Sat, 26 Jul 2008 14:22:38 +0200 | |
changeset 25 | 96f051df5d60 |
parent 23 | dc247e80ef26 |
permissions | -rw-r--r-- |
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 |