kopia lustrzana https://gitlab.com/sane-project/backends
600 dpi working again for G4050
rodzic
cca7b033ee
commit
e742139517
|
@ -515,9 +515,9 @@ static Genesys_Sensor Sensor[] = {
|
|||
/* 08 09 0a 0b */
|
||||
{0x00, 0x00, 0x18, 0x69} ,
|
||||
/* 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d */
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x0c, 0x01, 0x2a, 0x30, 0x00, 0x00, 0x08} ,
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x0c, 0x00, 0x2a, 0x30, 0x00, 0x00, 0x08} ,
|
||||
/* 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e */
|
||||
{0x0e, 0x11, 0x02, 0x05, 0x08, 0x0b, 0x6b, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x6f} ,
|
||||
{0x0b, 0x0e, 0x11, 0x02, 0x05, 0x08, 0x63, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x6f} ,
|
||||
1.0, 1.0, 1.0,
|
||||
NULL, NULL, NULL}
|
||||
,
|
||||
|
@ -1187,8 +1187,8 @@ static Genesys_Model hpg4010_model = {
|
|||
DAC_G4050,
|
||||
GPO_G4050,
|
||||
MOTOR_G4050,
|
||||
GENESYS_FLAG_NO_CALIBRATION |
|
||||
GENESYS_FLAG_LAZY_INIT | /* Which flags are needed for this scanner? */
|
||||
GENESYS_FLAG_NO_CALIBRATION |
|
||||
GENESYS_FLAG_SKIP_WARMUP |
|
||||
GENESYS_FLAG_OFFSET_CALIBRATION |
|
||||
GENESYS_FLAG_CUSTOM_GAMMA,
|
||||
|
@ -1204,8 +1204,8 @@ static Genesys_Model hpg4050_model = {
|
|||
GENESYS_GL843,
|
||||
NULL,
|
||||
|
||||
{ 2400, 1200, 600, 400, 300, 200, 150, 100, 0}, /* TODO when settled down, add 800 and 1600 */
|
||||
{ 2400, 1200, 600, 400, 300, 200, 150, 100, 0}, /* TODO 4800 available */
|
||||
{ 4800, 2400, 1200, 600, 400, 300, 200, 150, 100, 0},
|
||||
{ 4800, 2400, 1200, 600, 400, 300, 200, 150, 100, 0},
|
||||
{16, 8, 0}, /* possible depths in gray mode */
|
||||
{16, 8, 0}, /* possible depths in color mode */
|
||||
|
||||
|
|
|
@ -641,7 +641,7 @@ static Motor_Profile motors[]={
|
|||
{MOTOR_CANONLIDE110, 5360, 1, lide110_alt},
|
||||
{MOTOR_CANONLIDE110, 10528, 1, lide110_slow},
|
||||
{MOTOR_CANONLIDE110, 20864, 2, lide110_max},
|
||||
{0, 0, 0, NULL},
|
||||
{0, 0, 0, NULL},
|
||||
};
|
||||
/* *INDENT-ON* */
|
||||
|
||||
|
|
|
@ -460,6 +460,57 @@ gl843_test_motor_flag_bit (SANE_Byte val)
|
|||
return SANE_FALSE;
|
||||
}
|
||||
|
||||
/** @get sensor profile
|
||||
* search for the database of motor profiles and get the best one. Each
|
||||
* profile is at a specific dpihw. Use first entry of table by default.
|
||||
* @param sensor_type sensor id
|
||||
* @param dpi hardware dpi for the scan
|
||||
* @return a pointer to a Sensor_Profile struct
|
||||
*/
|
||||
static Sensor_Profile *get_sensor_profile(int sensor_type, int dpi)
|
||||
{
|
||||
unsigned int i;
|
||||
int idx;
|
||||
|
||||
i=0;
|
||||
idx=-1;
|
||||
while(i<sizeof(sensors)/sizeof(Sensor_Profile))
|
||||
{
|
||||
/* exact match */
|
||||
if(sensors[i].sensor_type==sensor_type && sensors[i].dpi==dpi)
|
||||
{
|
||||
return &(sensors[i]);
|
||||
}
|
||||
|
||||
/* closest match */
|
||||
if(sensors[i].sensor_type==sensor_type)
|
||||
{
|
||||
if(idx<0)
|
||||
{
|
||||
idx=i;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(sensors[i].dpi>=dpi
|
||||
&& sensors[i].dpi<sensors[idx].dpi)
|
||||
{
|
||||
idx=i;
|
||||
}
|
||||
}
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
/* default fallback */
|
||||
if(idx<0)
|
||||
{
|
||||
DBG (DBG_warn,"%s: using default sensor profile\n",__FUNCTION__);
|
||||
idx=0;
|
||||
}
|
||||
|
||||
return &(sensors[idx]);
|
||||
}
|
||||
|
||||
/** @get motor profile
|
||||
* search for the database of motor profiles and get the best one. Each
|
||||
* profile is at full step and at a reference exposure. Use KV-SS080 table
|
||||
|
@ -565,6 +616,16 @@ Motor_Profile *profile;
|
|||
current=profile->table[i]>>step_type;
|
||||
}
|
||||
|
||||
/* flat table case */
|
||||
if(i==0)
|
||||
{
|
||||
for(i=0;i<1024;i++)
|
||||
{
|
||||
slope[i]=profile->table[i]>>step_type;
|
||||
sum+=slope[i];
|
||||
}
|
||||
}
|
||||
|
||||
/* align size on step time factor */
|
||||
while(i%factor!=0)
|
||||
{
|
||||
|
@ -585,10 +646,12 @@ static void
|
|||
gl843_setup_sensor (Genesys_Device * dev, Genesys_Register_Set * regs, int dpi)
|
||||
{
|
||||
Genesys_Register_Set *r;
|
||||
int i;
|
||||
Sensor_Profile *sensor;
|
||||
int i,dpihw;
|
||||
|
||||
DBGSTART;
|
||||
|
||||
/* common settings */
|
||||
for (i = 0x06; i < 0x0e; i++)
|
||||
{
|
||||
r = sanei_genesys_get_address (regs, 0x10 + i);
|
||||
|
@ -596,39 +659,6 @@ gl843_setup_sensor (Genesys_Device * dev, Genesys_Register_Set * regs, int dpi)
|
|||
r->value = dev->sensor.regs_0x10_0x1d[i];
|
||||
}
|
||||
|
||||
/* TODO we need to create another data struct
|
||||
* for CKxMAP and CKSEL */
|
||||
/* G4050/G4010 sensor */
|
||||
if (dev->model->ccd_type == CCD_G4050)
|
||||
{
|
||||
if(dpi<=300)
|
||||
{
|
||||
sanei_genesys_write_register (dev, 0x74, 0x00);
|
||||
sanei_genesys_write_register (dev, 0x75, 0x1c);
|
||||
sanei_genesys_write_register (dev, 0x76, 0x7f);
|
||||
}
|
||||
else if(dpi<=600)
|
||||
{
|
||||
sanei_genesys_write_register (dev, 0x74, 0x00);
|
||||
sanei_genesys_write_register (dev, 0x75, 0x01);
|
||||
sanei_genesys_write_register (dev, 0x76, 0xff);
|
||||
}
|
||||
else /* 800 to 2400 case */
|
||||
{
|
||||
sanei_genesys_write_register (dev, 0x5a, 0x40);
|
||||
sanei_genesys_write_register (dev, 0x74, 0x0f);
|
||||
sanei_genesys_write_register (dev, 0x75, 0xff);
|
||||
sanei_genesys_write_register (dev, 0x76, 0xff);
|
||||
sanei_genesys_write_register (dev, 0x77, 0x00);
|
||||
sanei_genesys_write_register (dev, 0x78, 0x01);
|
||||
sanei_genesys_write_register (dev, 0x7a, 0x00);
|
||||
sanei_genesys_write_register (dev, 0x7b, 0x01);
|
||||
sanei_genesys_write_register (dev, 0x7d, 0x90);
|
||||
sanei_genesys_write_register (dev, 0x80, 0x05);
|
||||
sanei_genesys_write_register (dev, 0x9e, 0xc0);
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 9; i++)
|
||||
{
|
||||
r = sanei_genesys_get_address (regs, 0x52 + i);
|
||||
|
@ -636,6 +666,42 @@ gl843_setup_sensor (Genesys_Device * dev, Genesys_Register_Set * regs, int dpi)
|
|||
r->value = dev->sensor.regs_0x52_0x5e[i];
|
||||
}
|
||||
|
||||
/* set EXPDUMMY and CKxMAP */
|
||||
dpihw=sanei_genesys_compute_dpihw(dev,dpi);
|
||||
sensor=get_sensor_profile(dev->model->ccd_type, dpihw);
|
||||
|
||||
/* specific registers */
|
||||
r = sanei_genesys_get_address (regs, 0x18);
|
||||
if (r)
|
||||
{
|
||||
r->value = sensor->reg18;
|
||||
}
|
||||
r = sanei_genesys_get_address (regs, 0x5a);
|
||||
if (r)
|
||||
{
|
||||
r->value = sensor->reg5a;
|
||||
}
|
||||
r = sanei_genesys_get_address (regs, 0x7d);
|
||||
if (r)
|
||||
{
|
||||
r->value = sensor->reg7d;
|
||||
}
|
||||
r = sanei_genesys_get_address (regs, 0x80);
|
||||
if (r)
|
||||
{
|
||||
r->value = sensor->reg80;
|
||||
}
|
||||
r = sanei_genesys_get_address (regs, 0x9e);
|
||||
if (r)
|
||||
{
|
||||
r->value = sensor->reg9e;
|
||||
}
|
||||
|
||||
/* CKxMAP */
|
||||
sanei_genesys_set_triple(regs,REG_CK1MAP,sensor->ck1map);
|
||||
sanei_genesys_set_triple(regs,REG_CK3MAP,sensor->ck3map);
|
||||
sanei_genesys_set_triple(regs,REG_CK4MAP,sensor->ck4map);
|
||||
|
||||
DBG (DBG_proc, "gl843_setup_sensor: completed \n");
|
||||
}
|
||||
|
||||
|
@ -742,6 +808,18 @@ gl843_init_registers (Genesys_Device * dev)
|
|||
SETREG (0x71, 0x03);
|
||||
SETREG (0x72, 0x04);
|
||||
SETREG (0x73, 0x05);
|
||||
|
||||
/* CKxMAP */
|
||||
SETREG (0x74, 0x00);
|
||||
SETREG (0x75, 0x00);
|
||||
SETREG (0x76, 0x3c);
|
||||
SETREG (0x77, 0x00);
|
||||
SETREG (0x78, 0x00);
|
||||
SETREG (0x79, 0x9f);
|
||||
SETREG (0x7a, 0x00);
|
||||
SETREG (0x7b, 0x00);
|
||||
SETREG (0x7c, 0x55);
|
||||
|
||||
SETREG (0x7d, 0x00);
|
||||
SETREG (0x7f, 0x00);
|
||||
SETREG (0x80, 0x00);
|
||||
|
@ -754,6 +832,7 @@ gl843_init_registers (Genesys_Device * dev)
|
|||
SETREG (0x87, 0x00);
|
||||
SETREG (0x9d, 0x04);
|
||||
SETREG (0x94, 0xff);
|
||||
SETREG (0x9e, 0x00);
|
||||
SETREG (0xab, 0x50);
|
||||
|
||||
/* G4050 values */
|
||||
|
@ -1162,46 +1241,31 @@ gl843_get_dpihw (Genesys_Device * dev)
|
|||
*/
|
||||
static int gl843_compute_exposure(Genesys_Device *dev, int xres)
|
||||
{
|
||||
switch(dev->model->ccd_type)
|
||||
{
|
||||
case CCD_G4050:
|
||||
if(xres<=600)
|
||||
{
|
||||
return 8016;
|
||||
}
|
||||
return 56064 /* 21376 */;
|
||||
case CCD_KVSS080:
|
||||
default:
|
||||
return 8000;
|
||||
}
|
||||
Sensor_Profile *sensor;
|
||||
|
||||
sensor=get_sensor_profile(dev->model->ccd_type, xres);
|
||||
return sensor->exposure;
|
||||
}
|
||||
|
||||
/**@brief compute motor step type to use
|
||||
* compute the step type (full, half, quarter, ...) to use based
|
||||
* on target resolution
|
||||
* @param dev device description
|
||||
* @param yres motor resolution
|
||||
* @param exposure sensor exposure
|
||||
* @return 0 for full step
|
||||
* 1 for half step
|
||||
* 2 for quarter step
|
||||
* 3 for eighth step
|
||||
*/
|
||||
static int gl843_compute_step_type(Genesys_Device *dev, int yres)
|
||||
static int gl843_compute_step_type(Genesys_Device *dev, int exposure)
|
||||
{
|
||||
switch(dev->model->motor_type)
|
||||
{
|
||||
case MOTOR_G4050:
|
||||
if(yres<=1200)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
return 2;
|
||||
case MOTOR_KVSS080:
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
Motor_Profile *profile;
|
||||
|
||||
profile=get_motor_profile(dev->model->motor_type,exposure);
|
||||
return profile->step_type;
|
||||
}
|
||||
|
||||
|
||||
#define OPTICAL_FLAG_DISABLE_GAMMA 1
|
||||
#define OPTICAL_FLAG_DISABLE_SHADING 2
|
||||
#define OPTICAL_FLAG_DISABLE_LAMP 4
|
||||
|
@ -1375,10 +1439,7 @@ gl843_init_optical_regs_scan (Genesys_Device * dev,
|
|||
else
|
||||
r->value |= REG05_GMMENB;
|
||||
|
||||
r = sanei_genesys_get_address (reg, 0x2c);
|
||||
r->value = HIBYTE (dpiset);
|
||||
r = sanei_genesys_get_address (reg, 0x2d);
|
||||
r->value = LOBYTE (dpiset);
|
||||
sanei_genesys_set_double(reg,REG_DPISET,dpiset);
|
||||
DBG (DBG_io2, "%s: dpiset used=%d\n", __FUNCTION__, dpiset);
|
||||
|
||||
r = sanei_genesys_get_address (reg, 0x30);
|
||||
|
|
|
@ -188,6 +188,8 @@
|
|||
#define REG18_CKDELAY 0x0c
|
||||
#define REG18_CKSEL 0x03
|
||||
|
||||
#define REG_EXPDMY 0x19
|
||||
|
||||
#define REG1A_TGLSW2 0x80
|
||||
#define REG1A_TGLSW1 0x40
|
||||
#define REG1A_MANUAL3 0x02
|
||||
|
@ -216,6 +218,7 @@
|
|||
#define REG29 0x29
|
||||
#define REG2A 0x2a
|
||||
#define REG2B 0x2b
|
||||
#define REG_DPISET 0x2c
|
||||
|
||||
#define REG40 0x40
|
||||
#define REG40_DOCSNR 0x80
|
||||
|
@ -320,6 +323,10 @@
|
|||
#define REG6E 0x6e
|
||||
#define REG6F 0x6f
|
||||
|
||||
#define REG_CK1MAP 0x74
|
||||
#define REG_CK3MAP 0x77
|
||||
#define REG_CK4MAP 0x7a
|
||||
|
||||
#define REG9D 0x9d
|
||||
#define REG9DS_STEPTIM 2
|
||||
|
||||
|
@ -476,6 +483,7 @@ enum
|
|||
reg_0x9b,
|
||||
reg_0x9c,
|
||||
reg_0x9d,
|
||||
reg_0x9e,
|
||||
reg_0xa0,
|
||||
reg_0xa1,
|
||||
reg_0xa2,
|
||||
|
@ -511,8 +519,45 @@ static Gpio_layout gpios[]={
|
|||
}
|
||||
};
|
||||
|
||||
/** @brief structure for sensor settings
|
||||
* this structure describes the sensor settings to use for a given
|
||||
* exposure.
|
||||
*/
|
||||
typedef struct {
|
||||
int sensor_type; /**> sensor id */
|
||||
int dpi; /**> maximum dpi for which data are valid */
|
||||
int exposure; /**> exposure */
|
||||
int ck1map; /**> CK1MAP */
|
||||
int ck3map; /**> CK2MAP */
|
||||
int ck4map; /**> CK3MAP */
|
||||
int segcnt; /**> SEGCNT */
|
||||
int tg0cnt; /**> TG0CNT */
|
||||
int expdummy; /**> exposure dummy */
|
||||
int expr; /**> initial red exposure */
|
||||
int expg; /**> initial green exposure */
|
||||
int expb; /**> initial blue exposure */
|
||||
uint8_t reg18; /**> register 0x18 value */
|
||||
uint8_t reg5a; /**> register 0x5a value */
|
||||
uint8_t reg7d; /**> register 0x7d value */
|
||||
uint8_t reg80; /**> register 0x80 value */
|
||||
uint8_t reg9e; /**> register 0x9e value */
|
||||
} Sensor_Profile;
|
||||
|
||||
/**
|
||||
* database of sensor profiles
|
||||
*/
|
||||
static Sensor_Profile sensors[]={
|
||||
{CCD_KVSS080, 600, 8000, 0x1e, 0x9f, 0x55, 5168, 0, 0x2a, 0, 0, 0, 0x00, 0x00, 0x0a, 0x20, 0x21},
|
||||
{CCD_G4050 , 600, 8016, 0x0001ff, 0x03ffff, 0x03ffff, 5168, 0, 0x2a, 0, 0, 0, 0x00, 0x40, 0x00, 0x5a, 0x00},
|
||||
{CCD_G4050 , 1200, 56064, 0x03ffff, 0x0001ff, 0x0001ff, 5168, 0, 0x2a, 0, 0, 0, 0x11, 0x40, 0x00, 0x5f, 0xc0},
|
||||
{CCD_G4050 , 2400, 56064, 0x03ffff, 0x000000, 0x000000, 5168, 0, 0x2a, 0, 0, 0, 0x11, 0x40, 0x00, 0x5f, 0xc0},
|
||||
{CCD_G4050 , 4800, 21376, 0x03ffff, 0x000000, 0x000000, 5168, 0, 0x2a, 0, 0, 0, 0x11, 0x40, 0x00, 0x5f, 0xc0},
|
||||
};
|
||||
|
||||
static uint32_t kvss080[]={44444, 34188, 32520, 29630, 26666, 24242, 22222, 19048, 16666, 15686, 14814, 14034, 12402, 11110, 8888, 7618, 6666, 5926, 5228, 4678, 4172, 3682, 3336, 3074, 2866, 2702, 2566, 2450, 2352, 2266, 2188, 2118, 2056, 2002, 1950, 1904, 1860, 1820, 1784, 1748, 1716, 1684, 1656, 1628, 1600, 1576, 1552, 1528, 1506, 1486, 1466, 1446, 1428, 1410, 1394, 1376, 1360, 1346, 1330, 1316, 1302, 1288, 1276, 1264, 1250, 1238, 1228, 1216, 1206, 1194, 1184, 1174, 1164, 1154, 1146, 1136, 1128, 1120, 1110, 1102, 1094, 1088, 1080, 1072, 1064, 1058, 1050, 1044, 1038, 1030, 1024, 1018, 1012, 1006, 1000, 994, 988, 984, 978, 972, 968, 962, 958, 952, 948, 942, 938, 934, 928, 924, 920, 916, 912, 908, 904, 900, 896, 892, 888, 884, 882, 878, 874, 870, 868, 864, 860, 858, 854, 850, 848, 844, 842, 838, 836, 832, 830, 826, 824, 822, 820, 816, 814, 812, 808, 806, 804, 802, 800, 796, 794, 792, 790, 788, 786, 784, 782, 778, 776, 774, 772, 770, 768, 766, 764, 762, 760, 758, 756, 754, 752, 750, 750, 748, 746, 744, 742, 740, 738, 736, 734, 734, 732, 730, 728, 726, 724, 724, 722, 720, 718, 716, 716, 714, 712, 710, 710, 708, 706, 704, 704, 702, 700, 698, 698, 696, 694, 694, 692, 690, 690, 688, 686, 686, 684, 682, 682, 680, 678, 678, 676, 674, 674, 672, 672, 670, 668, 668, 666, 666, 664, 662, 662, 660, 660, 658, 656, 656, 654, 654, 652, 652, 650, 650, 648, 646, 646, 644, 644, 642, 642, 640, 640, 638, 638, 636, 636, 636, 634, 634, 632, 632, 630, 630, 628, 628, 626, 626, 624, 624, 624, 622, 622, 620, 620, 618, 618, 618, 616, 616, 614, 614, 612, 612, 612, 610, 610, 608, 608, 608, 606, 606, 606, 604, 604, 602, 602, 602, 600, 600, 600, 598, 598, 596, 596, 596, 594, 594, 594, 592, 592, 592, 590, 590, 590, 588, 588, 588, 586, 586, 586, 584, 584, 584, 582, 582, 582, 590, 590, 590, 588, 588, 588, 586, 586, 586, 584, 584, 584, 582, 582, 582, 580, 580, 580, 578, 578, 578, 576, 576, 576, 576, 574, 574, 574, 572, 572, 572, 570, 570, 570, 568, 568, 568, 568, 566, 566, 566, 564, 564, 564, 562, 562, 562, 562, 560, 560, 560, 558, 558, 558, 558, 556, 556, 556, 554, 554, 554, 552, 552, 552, 552, 550, 550, 550, 548, 548, 548, 548, 546, 546, 546, 546, 544, 544, 544, 542, 542, 542, 542, 540, 540, 540, 538, 538, 538, 538, 536, 536, 536, 536, 534, 534, 534, 534, 532, 532, 532, 530, 530, 530, 530, 528, 528, 528, 528, 526, 526, 526, 526, 524, 524, 524, 524, 522, 522, 522, 522, 520, 520, 520, 520, 518, 518, 518, 516, 516, 516, 516, 514, 514, 514, 514, 514, 512, 512, 512, 512, 510, 510, 510, 510, 508, 508, 508, 508, 506, 506, 506, 506, 504, 504, 504, 504, 502, 502, 502, 502, 500, 500, 500, 500, 0};
|
||||
static uint32_t g4050[]={7842,5898,4384,4258,4152,4052,3956,3864,3786,3714,3632,3564,3498,3444,3384,3324,3276,3228,3174,3128,3086,3044,3002,2968,2930,2892,2860,2824,2794,2760,2732,2704,2676,2650,2618,2594,2568,2548,2524,2500,2478,2454,2436,2414,2392,2376,2354,2338,2318,2302,2282,2266,2252,2232,2218,2202,2188,2174,2160,2142,2128,2116,2102,2088,2076,2062,2054,2040,2028,2020,2014,2008,2004,2002,2002,2002,1946,1882,1826,1770,1716,1662,1612,1568,1526,1488,1454,1422,1390,1362,1336,1310,1288,1264,1242,1222,1204,1184,1166,1150,1134,1118,1104,1090,1076,1064,1050,1038,1026,1016,1004,994,984,972,964,954,944,936,928,920,910,902,896,888,880,874,866,860,854,848,840,834,828,822,816,812,806,800,796,790,784,780,776,770,766,760,756,752,748,744,740,736,732,728,724,720,716,712,708,704,702,698,694,690,688,684,682,678,674,672,668,666,662,660,656,654,650,648,646,644,640,638,636,632,630,628,624,622,620,618,616,614,610,608,606,604,602,600,598,596,594,592,590,588,586,584,582,580,578,576,574,572,570,568,566,564,564,562,560,558,556,554,552,552,550,548,546,546,544,542,540,538,538,536,534,532,532,530,528,528,526,524,522,522,520,518,518,516,514,514,512,512,510,508,508,506,504,504,502,502,500,498,498,496,496,494,494,492,490,490,488,488,486,486,484,484,482,480,480,478,478,476,476,474,474,472,472,470,470,468,468,468,466,466,464,464,462,462,460,460,458,458,456,456,456,454,454,452,452,450,450,450,448,448,446,446,444,444,444,442,442,440,440,440,438,438,438,436,436,434,434,434,432,432,432,430,430,428,428,428,426,426,426,424,424,424,422,422,422,420,420,420,418,418,418,416,416,416,414,414,414,412,412,412,410,410,410,408,408,408,406,406,406,404,404,404,404,402,402,402,400,400,400,400,398,398,398,396,396,396,396,394,394,394,392,392,392,392,390,390,390,388,388,388,388,386,386,386,386,384,384,384,384,382,382,382,382,380,380,380,380,378,378,378,378,376,376,376,376,376,374,374,374,374,374,372,372,372,372,372,370,370,370,370,370,368,368,368,368,368,366,366,366,366,366,364,364,364,364,364,364,362,362,362,362,362,360,360,360,360,360,360,358,358,358,358,358,358,356,356,356,356,356,356,354,354,354,354,354,352,352,352,352,352,352,350,350,350,350,350,350,350,348,348,348,348,348,348,346,346,346,346,346,346,344,344,344,344,344,344,344,342,342,342,342,342,342,340,340,340,340,340,340,340,338,338,338,338,338,338,338,336,336,336,336,336,336,336,334,334,334,334,334,334,334,332,332,332,332,332,332,332,332,330,330,330,330,330,330,330,328,328,328,328,328,328,328,328,326,326,326,326,326,326,326,324,324,324,324,324,324,324,324,322,322,322,322,322,322,322,322,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320, 0};
|
||||
static uint32_t g4050_fast[]={7842,5898,4384,4258,4152,4052,3956,3864,3786,3714,3632,3564,3498,3444,3384,3324,3276,3228,3174,3128,3086,3044,3002,2968,2930,2892,2860,2824,2794,2760,2732,2704,2676,2650,2618,2594,2568,2548,2524,2500,2478,2454,2436,2414,2392,2376,2354,2338,2318,2302,2282,2266,2252,2232,2218,2202,2188,2174,2160,2142,2128,2116,2102,2088,2076,2062,2054,2040,2028,2020,2014,2008,2004,2002,2002,2002,1946,1882,1826,1770,1716,1662,1612,1568,1526,1488,1454,1422,1390,1362,1336,1310,1288,1264,1242,1222,1204,1184,1166,1150,1134,1118,1104,1090,1076,1064,1050,1038,1026,1016,1004,994,984,972,964,954,944,936,928,920,910,902,896,888,880,874,866,860,854,848,840,834,828,822,816,812,806,800,796,790,784,780,776,770,766,760,756,752,748,744,740,736,732,728,724,720,716,712,708,704,702,698,694,690,688,684,682,678,674,672,668,666,662,660,656,654,650,648,646,644,640,638,636,632,630,628,624,622,620,618,616,614,610,608,606,604,602,600,598,596,594,592,590,588,586,584,582,580,578,576,574,572,570,568,566,564,564,562,560,558,556,554,552,552,550,548,546,546,544,542,540,538,538,536,534,532,532,530,528,528,526,524,522,522,520,518,518,516,514,514,512,512,510,508,508,506,504,504,502,502,500,498,498,496,496,494,494,492,490,490,488,488,486,486,484,484,482,480,480,478,478,476,476,474,474,472,472,470,470,468,468,468,466,466,464,464,462,462,460,460,458,458,456,456,456,454,454,452,452,450,450,450,448,448,446,446,444,444,444,442,442,440,440,440,438,438,438,436,436,434,434,434,432,432,432,430,430,428,428,428,426,426,426,424,424,424,422,422,422,420,420,420,418,418,418,416,416,416,414,414,414,412,412,412,410,410,410,408,408,408,406,406,406,404,404,404,404,402,402,402,400,400,400,400,398,398,398,396,396,396,396,394,394,394,392,392,392,392,390,390,390,388,388,388,388,386,386,386,386,384,384,384,384,382,382,382,382,380,380,380,380,378,378,378,378,376,376,376,376,376,374,374,374,374,374,372,372,372,372,372,370,370,370,370,370,368,368,368,368,368,366,366,366,366,366,364,364,364,364,364,364,362,362,362,362,362,360,360,360,360,360,360,358,358,358,358,358,358,356,356,356,356,356,356,354,354,354,354,354,352,352,352,352,352,352,350,350,350,350,350,350,350,348,348,348,348,348,348,346,346,346,346,346,346,344,344,344,344,344,344,344,342,342,342,342,342,342,340,340,340,340,340,340,340,338,338,338,338,338,338,338,336,336,336,336,336,336,336,334,334,334,334,334,334,334,332,332,332,332,332,332,332,332,330,330,330,330,330,330,330,328,328,328,328,328,328,328,328,326,326,326,326,326,326,326,324,324,324,324,324,324,324,324,322,322,322,322,322,322,322,322,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320, 0};
|
||||
static uint32_t g4050_high[]={28032};
|
||||
static uint32_t g4050_max[]={42072};
|
||||
|
||||
/**
|
||||
* database of motor profiles
|
||||
|
@ -520,11 +565,11 @@ static uint32_t g4050[]={7842,5898,4384,4258,4152,4052,3956,3864,3786,3714,3632,
|
|||
|
||||
/* *INDENT-OFF* */
|
||||
static Motor_Profile motors[]={
|
||||
{MOTOR_KVSS080, 8000, 0, kvss080},
|
||||
{MOTOR_G4050, 8016, 0, g4050},
|
||||
{MOTOR_G4050, 21376, 0, g4050},
|
||||
{MOTOR_G4050, 56064, 0, g4050},
|
||||
{0, 0, 0, NULL},
|
||||
{MOTOR_KVSS080, 8000, 1, kvss080},
|
||||
{MOTOR_G4050, 8016, 1, g4050_fast},
|
||||
{MOTOR_G4050, 21376, 2, g4050_max},
|
||||
{MOTOR_G4050, 56064, 1, g4050_high},
|
||||
{0, 0, 0, NULL},
|
||||
};
|
||||
/* *INDENT-ON* */
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue