diff --git a/include/darwin_registers.h b/include/darwin_registers.h index 3899d162c9ec3376c3cd66d2f73679239fc1b11a..e8808233769725336f052d9a785ceb155faddf7e 100644 --- a/include/darwin_registers.h +++ b/include/darwin_registers.h @@ -81,6 +81,8 @@ extern "C" { #define GRIPPER_RIGHT_MAX_ANGLE ((unsigned short int)0x005A) #define GRIPPER_RIGHT_MIN_ANGLE ((unsigned short int)0x005C) #define GRIPPER_RIGHT_MAX_FORCE ((unsigned short int)0x005E) +#define SMART_CHARGER_PERIOD ((unsigned short int)0x0060) + #define LAST_EEPROM_OFFSET ((unsigned short int)0x00FF) @@ -183,6 +185,9 @@ typedef enum { DARWIN_GRIPPER_RIGHT_MIN_ANGLE_H = GRIPPER_RIGHT_MIN_ANGLE+1, DARWIN_GRIPPER_RIGHT_MAX_FORCE_L = GRIPPER_RIGHT_MAX_FORCE, DARWIN_GRIPPER_RIGHT_MAX_FORCE_H = GRIPPER_RIGHT_MAX_FORCE+1, + DARWIN_SMART_CHARGER_PERIOD_L = SMART_CHARGER_PERIOD, //en ms + DARWIN_SMART_CHARGER_PERIOD_H = SMART_CHARGER_PERIOD+1, +//RAM DARWIN_TX_LED_CNTRL = 0x0100, // bit 7 | bit 6 | bit 5 | bit 4 | bit 3 | bit 2 | bit 1 | bit 0 // | | | | blink | toggle | value | internally used DARWIN_TX_LED_PERIOD_L = 0x0101, @@ -562,6 +567,7 @@ typedef enum { DARWIN_HEAD_MIN_TILT_H = 0x0244, DARWIN_HEAD_TILT_TARGET_L = 0x0245, // angle in fixed point format 9|7 DARWIN_HEAD_TILT_TARGET_H = 0x0246, + DARWIN_BATT_CHARGER_STATUS = 0x0247, DARWIN_BATT_INPUT_CURRENT_L = 0x0248, DARWIN_BATT_INPUT_CURRENT_H = 0x0249, @@ -570,7 +576,7 @@ typedef enum { DARWIN_BATT_CHARGE_VOLTAGE_L = 0x024C, DARWIN_BATT_CHARGE_VOLTAGE_H = 0x024D, DARWIN_BATT_LIMIT_CURRENT_L = 0x024E, - DARWIN_BATT_LIMIT_CURRENT_H = 0x024F, + DARWIN_BATT_LIMIT_CURRENT_H = 0x024F, // DARWIN_BATT_TEMPERATURE_L = 0x0250, DARWIN_BATT_TEMPERATURE_H = 0x0251, DARWIN_BATT_VOLTAGE_L = 0x0252, @@ -579,13 +585,13 @@ typedef enum { DARWIN_BATT_CURRENT_H = 0x0255, DARWIN_BATT_AVG_CURRENT_L = 0x0256, DARWIN_BATT_AVG_CURRENT_H = 0x0257, - DARWIN_BATT_RELATIVE_SOC = 0x0258, + DARWIN_BATT_RELATIVE_SOC = 0x0258,// DARWIN_BATT_ABSOLUTE_SOC = 0x0259, DARWIN_BATT_REMAINING_CAP_L = 0x025A, DARWIN_BATT_REMAINING_CAP_H = 0x025B, DARWIN_BATT_FULL_CHARGE_CAP_L = 0x025C, DARWIN_BATT_FULL_CHARGE_CAP_H = 0x025D, - DARWIN_BATT_RUN_TIME_EMPTY_L = 0x025E, + DARWIN_BATT_RUN_TIME_EMPTY_L = 0x025E, // DARWIN_BATT_RUN_TIME_EMPTY_H = 0x025F, DARWIN_BATT_AVG_TIME_EMPTY_L = 0x0260, DARWIN_BATT_AVG_TIME_EMPTY_H = 0x0261, @@ -605,7 +611,14 @@ typedef enum { DARWIN_BATT_CELL3_VOLTAGE_H = 0x026F, DARWIN_BATT_CELL4_VOLTAGE_L = 0x0270, DARWIN_BATT_CELL4_VOLTAGE_H = 0x0271, - DARWIN_GRIPPER_CNTRL = 0x0272, // bit 7 | bit 6 | bit 5 | bit 4 | bit 3 | bit 2 | bit 1 | bit 0 + +//añadidos + DARWIN_SMART_CHARGER_CNTRL = 0x0272, // bit 7 | bit 6 | bit 5 | bit 4 | bit 3 | bit 2 | bit 1 | bit 0 + // | detected | enable + DARWIN_SMART_CHARGER_ID = 0x0273, + +//Cambio registro + DARWIN_GRIPPER_CNTRL = 0x0276, // bit 7 | bit 6 | bit 5 | bit 4 | bit 3 | bit 2 | bit 1 | bit 0 // left opened | right opened | | | close left | open left | close right | open right } darwin_registers; @@ -688,7 +701,7 @@ typedef enum { #define HEAD_STOP 0x02 #define HEAD_STATUS 0x10 -#define GRIPPER_BASE_ADDRESS 0x0272 +#define GRIPPER_BASE_ADDRESS 0x0276 //Modificado #define GRIPPER_MEM_LENGTH 1 #define GRIPPER_EEPROM_ADDRESS 0x0054 #define GRIPPER_EEPROM_LENGTH 14 @@ -697,6 +710,15 @@ typedef enum { #define GRIPPER_OPEN_LEFT 0x04 #define GRIPPER_CLOSE_LEFT 0x08 +#define SMART_CHARGER_BASE_ADDRESS 0x0247 //DARWIN_BATT_CHARGER_STATUS +#define SMART_CHARGER_MEM_LENGTH 45 +#define SMART_CHARGER_EEPROM_BASE 0x0060 +#define SMART_CHARGER_EEPROM_LENGTH 2 +#define SMART_CHARGER_DET 0x01 +#define SMART_CHARGER_EN 0x02 + + + #ifdef __cplusplus } #endif diff --git a/include/eeprom_init.h b/include/eeprom_init.h index b636703311e13ee36d73b97ef44bbfa484f75d23..7ba89ed6261ee183c407170d0a0fff7e1a2587ab 100644 --- a/include/eeprom_init.h +++ b/include/eeprom_init.h @@ -10,7 +10,7 @@ extern "C" { #define DEFAULT_DEVICE_ID 0x0002 #define DEFAULT_BAUDRATE 0x0001 #define DEFAULT_RETURN_DELAY 0x0000 -#define DEFAULT_MM_PERIOD 0x1E78 +#define DEFAULT_MM_PERIOD 0x1E78 //7800us #define DEFAULT_BAL_KNEE_GAIN 0x4CCD // 0.3 in fixed point format 0|16 #define DEFAULT_BAL_ANKLE_ROLL_GAIN 0xFFFF // 0.99999 #define DEFAULT_BAL_ANKLE_PITCH_GAIN 0xE666 // 0.9 @@ -81,6 +81,10 @@ extern "C" { #define DEFAULT_GRIPPER_RIGHT_MAX_ANGLE 0x0F00 // 30 in fixed point format 9|7 #define DEFAULT_GRIPPER_RIGHT_MIN_ANGLE 0xF100 // -30 in fixed point format 9|7 #define DEFAULT_GRIPPER_RIGHT_MAX_FORCE 0x03FF // 1023 max force in binary format + +#define DEFAULT_SMART_CHARGER_PERIOD 0x05DC //1500 ms (7,8ms*200) + + #ifdef __cplusplus } diff --git a/src/eeprom.c b/src/eeprom.c index c5caef423ff350cc15ad1eeb015987de27471d87..d511af23b9cf8ebb04bf8cd314b10cfea15fc435 100755 --- a/src/eeprom.c +++ b/src/eeprom.c @@ -152,7 +152,9 @@ uint16_t eeprom_data[] __attribute__ ((section (".eeprom")))={VALID_PAGE, DEFAULT_GRIPPER_RIGHT_MIN_ANGLE&0xFF, GRIPPER_RIGHT_MIN_ANGLE, DEFAULT_GRIPPER_RIGHT_MIN_ANGLE>>8, GRIPPER_RIGHT_MIN_ANGLE+1, DEFAULT_GRIPPER_RIGHT_MAX_FORCE&0xFF, GRIPPER_RIGHT_MAX_FORCE, - DEFAULT_GRIPPER_RIGHT_MAX_FORCE>>8, GRIPPER_RIGHT_MAX_FORCE+1}; + DEFAULT_GRIPPER_RIGHT_MAX_FORCE>>8, GRIPPER_RIGHT_MAX_FORCE+1, + DEFAULT_SMART_CHARGER_PERIOD&0xFF, SMART_CHARGER_PERIOD, + DEFAULT_SMART_CHARGER_PERIOD>>8, SMART_CHARGER_PERIOD+1}; /* Private function prototypes -----------------------------------------------*/ /* Private functions ---------------------------------------------------------*/ diff --git a/src/ram.c b/src/ram.c index 3d77ee0e898d5c198d2a21c0bcf014127af8f21c..f2c505dfb8b5e82c15e1311d9a27dad51bd60416 100755 --- a/src/ram.c +++ b/src/ram.c @@ -147,6 +147,10 @@ void ram_init(void) ram_data[GRIPPER_RIGHT_MAX_FORCE]=(uint8_t)(eeprom_data&0x00FF); if(EE_ReadVariable(GRIPPER_RIGHT_MAX_FORCE+1,&eeprom_data)==0) ram_data[GRIPPER_RIGHT_MAX_FORCE+1]=(uint8_t)(eeprom_data&0x00FF); + if(EE_ReadVariable(SMART_CHARGER_PERIOD,&eeprom_data)==0) + ram_data[SMART_CHARGER_PERIOD]=(uint8_t)(eeprom_data&0x00FF); + if(EE_ReadVariable(SMART_CHARGER_PERIOD+1,&eeprom_data)==0) + ram_data[SMART_CHARGER_PERIOD+1]=(uint8_t)(eeprom_data&0x00FF); } inline void ram_read_byte(uint16_t address,uint8_t *data)