/* do store Parameter in virtual EEPROM -------------------------------------*/ void dofComm() { // add 2 chars to int from 0..99 u8 set = (line[1] - 0x30) * 10 + (line[2] - 0x30); writeFlashParameter(set, readInt(4)); print_para(set); }
/* do read from flash and print Parameter -----------------------------------------*/ void dorComm() { // add 2 chars to int from 0..99 u8 set = (line[1] - 0x30) * 10 + (line[2] - 0x30); print_para(set); send(OK); }
void run(char* model_root, char* prefix, char* infofile) { twtm_model* model = new twtm_model(model_root, prefix, infofile); char pre[100]; srand(time(NULL)); double sum_lik = 0.0; int docid, labelid, topicid, wordid; double lik; int num_words = model->num_words; int num_topics = model->num_topics; double temp; while (scanf("%s", pre) != EOF) { if (strcmp(pre, "lik") == 0) { scanf("%d%lf", &docid, &lik); sum_lik += lik; } else if (strcmp(pre, "pi") == 0) { scanf("%d%lf", &labelid, &temp); model->pi[labelid] = temp; } else if (strcmp(pre,"phi") == 0) { scanf("%d%d%lf", &topicid, &wordid, &temp); model->log_phi[topicid * num_words + wordid] = temp; } else if (strcmp(pre,"theta") == 0) { scanf("%d%d%lf", &labelid, &topicid, &temp); model->log_theta[labelid * num_topics + topicid] = temp; } } normalize_log_matrix_rows(model->log_theta, model->num_labels, num_topics); normalize_log_matrix_rows(model->log_phi, num_topics, model->num_words); print_para(model, model_root, prefix); printf("%lf\n", sum_lik); delete model; }
void print_para(int left_para, int right_para, char *str, int count) { if (left_para < 0 || left_para > right_para) return; if (!left_para && !right_para) { printf("%s\n", str); } else { if (left_para > 0) { str[count] = '('; print_para(left_para-1, right_para, str, count+1); } if (right_para > left_para) { str[count] = ')'; print_para(left_para, right_para-1, str, count+1); } } }
int main() { int right_para = 3; int left_para = 3; char str[3+3] = {""}; int count = 0; print_para(left_para, right_para, str, count); }
/* do print Parameter -------------------------------------------------------------*/ void dopComm() { if (line[1] == 'a') { u8 i; for (i = 0;i <= USED_PARAMETER; i++) { print_para(i); Delay(5); // prevent txbuffer overvlow } } else { // add 2 chars to int from 0..99 u8 set = (line[1] - 0x30) * 10 + (line[2] - 0x30); print_para(set); send(OK); } }
/* flash parameter ---------------------------------------------------------*/ void flashAllParameter() { u16 i; for (i = 0;i <= USED_PARAMETER; i++) { writeFlashParameter(i, getParameter(i)); print_para(i); Delay(2); // prevent txbuffer overvlow } // info user over uart1 send(OK); }
/* do set Parameter -------------------------------------------------------------*/ void dosComm() { if (line[1] == 'a') { zeroACC(); } else { // add 2 chars to int from 0..99 u8 set = (line[1] - 0x30) * 10 + (line[2] - 0x30); setParameter(set, readInt(4)); print_para(set); } }
/* load Parameter from virtual EEPROM ---------------------------------------*/ void loadParameter() { u16 val; u16 i; for (i = 0;i <= USED_PARAMETER; i++) { EE_ReadVariable(VirtAddVarTab[i], &val); parameter[i] = val; // for test print_para(i); Delay(2); // prevent txbuffer overvlow } }
/* load default parameter to flash ------------------------------------------*/ void loadDefault() { //######################################################################### // store default set if flash - only set 1 //######################################################################### EE_WriteVariable(VirtAddVarTab[PARA_SET], 0x00); EE_WriteVariable(VirtAddVarTab[PARA_DEBUG], 0x00); EE_WriteVariable(VirtAddVarTab[PARA_HW], 0x01); EE_WriteVariable(VirtAddVarTab[PARA_VOLT], 0x8BC); //2236 = 10 Volt EE_WriteVariable(VirtAddVarTab[PARA_SW], 0x01); EE_WriteVariable(VirtAddVarTab[PARA_ACC_X_ZERO], 0x7FF); EE_WriteVariable(VirtAddVarTab[PARA_ACC_Y_ZERO], 0x7F1); EE_WriteVariable(VirtAddVarTab[PARA_ACC_Z_ZERO], 0x7F8); EE_WriteVariable(VirtAddVarTab[PARA_SMOOTH_ACC], 0x00); EE_WriteVariable(VirtAddVarTab[PARA_SMOOTH_GYRO], 0x00); EE_WriteVariable(VirtAddVarTab[PARA_SMOOTH_RC], 0x00); EE_WriteVariable(VirtAddVarTab[PARA_GYRO_X_90], 0x898); EE_WriteVariable(VirtAddVarTab[PARA_GYRO_Y_90], 0x898); EE_WriteVariable(VirtAddVarTab[PARA_GYRO_Z_90], 0x898); EE_WriteVariable(VirtAddVarTab[PARA_ACC_FORCE], 0x1F4); EE_WriteVariable(VirtAddVarTab[PARA_GYRO_CORR], 0x1F4); EE_WriteVariable(VirtAddVarTab[PARA_SERVO0_CH], 0x5); EE_WriteVariable(VirtAddVarTab[PARA_SERVO1_CH], 0x6); EE_WriteVariable(VirtAddVarTab[PARA_SERVO2_CH], 0x7); EE_WriteVariable(VirtAddVarTab[PARA_SERVO3_CH], 0x8); EE_WriteVariable(VirtAddVarTab[PARA_CAM_X], 0x5014); //servo 2 , 0, wert 500 EE_WriteVariable(VirtAddVarTab[PARA_CAM_Y], 0x7724); //servo 3 , 0, wert 500 EE_WriteVariable(VirtAddVarTab[PARA_MIN_GAS], 0x20); //######################################################################### u16 val; u16 i; for (i = 0;i <= USED_PARAMETER; i++) { EE_ReadVariable(VirtAddVarTab[i], &val); parameter[i] = val; // for test print_para(i); Delay(2); // prevent txbuffer overvlow } // info user over uart1 send(DEFAULT); }
/* load Parameter from virtual EEPROM ---------------------------------------*/ void loadParameter() { u16 val; u16 i; // test if flash is clear EE_ReadVariable(401, &val); if (val != 99) { loadDefault(); } EE_WriteVariable(401, 99); for (i = 0;i <= USED_PARAMETER; i++) { EE_ReadVariable(VirtAddVarTab[i], &val); parameter[i] = val; // for test print_para(i); Delay(2); // prevent txbuffer overvlow } }
/* load default parameter to flash ------------------------------------------*/ void loadDefault() { //######################################################################### // store default set if flash - only set 1 //######################################################################### EE_WriteVariable(VirtAddVarTab[PARA_SET], 0); EE_WriteVariable(VirtAddVarTab[PARA_DEBUG], 0); EE_WriteVariable(VirtAddVarTab[PARA_HW], 3); //0=RC,1=PC,2=MotMix,4=Compass EE_WriteVariable(VirtAddVarTab[PARA_VOLT], 2236); //2236 = 10 Volt EE_WriteVariable(VirtAddVarTab[PARA_SW], 1); //0=HH,1=acc,2=comp2, 3=DCM EE_WriteVariable(VirtAddVarTab[PARA_ACC_X_ZERO], 20536); //20470 EE_WriteVariable(VirtAddVarTab[PARA_ACC_Y_ZERO], 20369); //20330 EE_WriteVariable(VirtAddVarTab[PARA_ACC_Z_ZERO], 20452); //24450 EE_WriteVariable(VirtAddVarTab[PARA_SMOOTH_ACC], 200); EE_WriteVariable(VirtAddVarTab[PARA_STICK_FACTOR], 20); EE_WriteVariable(VirtAddVarTab[PARA_SMOOTH_RC], 00); EE_WriteVariable(VirtAddVarTab[PARA_GYRO_X_90], 2200); EE_WriteVariable(VirtAddVarTab[PARA_GYRO_Y_90], 2200); EE_WriteVariable(VirtAddVarTab[PARA_GYRO_Z_90], 2200); EE_WriteVariable(VirtAddVarTab[PARA_ACC_FORCE], 300); //50 EE_WriteVariable(VirtAddVarTab[PARA_GYRO_CORR], 50); //25 EE_WriteVariable(VirtAddVarTab[PARA_SERVO0_CH], 5); //Kanal 5 EE_WriteVariable(VirtAddVarTab[PARA_SERVO1_CH], 6); //Kanal 6 EE_WriteVariable(VirtAddVarTab[PARA_SERVO2_CH], 7); //Kanal 7 EE_WriteVariable(VirtAddVarTab[PARA_SERVO3_CH], 8); //Kanal 8 EE_WriteVariable(VirtAddVarTab[PARA_CAM_X], 20500); //servo 2 , 0, wert 500 EE_WriteVariable(VirtAddVarTab[PARA_CAM_Y], 30500); //servo 3 , 0, wert 500 EE_WriteVariable(VirtAddVarTab[PARA_MIN_GAS], 10); // min gas 24 EE_WriteVariable(VirtAddVarTab[PARA_P_X], 1000); //23:1000 EE_WriteVariable(VirtAddVarTab[PARA_I_X], 0); //24: EE_WriteVariable(VirtAddVarTab[PARA_D_X], 3000); //25:3000 EE_WriteVariable(VirtAddVarTab[PARA_P_Y], 1000); //26: EE_WriteVariable(VirtAddVarTab[PARA_I_Y], 0); //27: EE_WriteVariable(VirtAddVarTab[PARA_D_Y], 3000); //28: EE_WriteVariable(VirtAddVarTab[PARA_P_Z], 0); //29: EE_WriteVariable(VirtAddVarTab[PARA_I_Z], 0); //30: EE_WriteVariable(VirtAddVarTab[PARA_D_Z], 0); //31: EE_WriteVariable(VirtAddVarTab[PARA_COMP_CORR_X], 0); EE_WriteVariable(VirtAddVarTab[PARA_COMP_CORR_Y], 0); EE_WriteVariable(VirtAddVarTab[PARA_COMP_CORR_Z], 0); EE_WriteVariable(VirtAddVarTab[PARA_COMP_DECL], 0); EE_WriteVariable(VirtAddVarTab[PARA_COMP_FORCE], 0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT1A], 25600); //100, 0 EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT1B], 40092); //-100, -100 EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT2A], 25600); //100, 0 EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT2B], 25756); //100, -100 EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT3A], 25700); //100, 100 EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT3B], 100); //0, 100 EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT4A], 25828); //100, -100 EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT4B], 100); //0, 100 EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT5A], 25600); //100, 0 - Motor not used EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT5B], 25600); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT6A], 25600); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT6B], 25600); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT7A], 25600); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT7B], 25600); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT8A], 25600); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT8B], 25600); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT9A], 25600); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT9B], 25600); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT10A], 25600); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT10B], 25600); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT11A], 25600); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT11B], 25600); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT12A], 25600); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT12B], 25600); //######################################################################### u16 val; u16 i; for (i = 0;i <= USED_PARAMETER; i++) { EE_ReadVariable(VirtAddVarTab[i], &val); parameter[i] = val; // for test print_para(i); Delay(2); // prevent txbuffer overvlow } // info user over uart1 send(DEFAULT); }
/* load default parameter to flash ------------------------------------------*/ void loadDefault() { //######################################################################### // store default set if flash - only set 1 //######################################################################### EE_WriteVariable(VirtAddVarTab[PARA_SET], 0x00); EE_WriteVariable(VirtAddVarTab[PARA_DEBUG], 0x00); EE_WriteVariable(VirtAddVarTab[PARA_HW], 0x01); EE_WriteVariable(VirtAddVarTab[PARA_VOLT], 0x8BC); //2236 = 10 Volt EE_WriteVariable(VirtAddVarTab[PARA_SW], 0x01); //0=HH,1=acc,2=comp2 EE_WriteVariable(VirtAddVarTab[PARA_ACC_X_ZERO], 0x4FF6); EE_WriteVariable(VirtAddVarTab[PARA_ACC_Y_ZERO], 0x4F6A); EE_WriteVariable(VirtAddVarTab[PARA_ACC_Z_ZERO], 0x4FB0); EE_WriteVariable(VirtAddVarTab[PARA_SMOOTH_ACC], 0x00); EE_WriteVariable(VirtAddVarTab[PARA_SMOOTH_GYRO], 0x00); EE_WriteVariable(VirtAddVarTab[PARA_SMOOTH_RC], 0x00); EE_WriteVariable(VirtAddVarTab[PARA_GYRO_X_90], 0x898); EE_WriteVariable(VirtAddVarTab[PARA_GYRO_Y_90], 0x898); EE_WriteVariable(VirtAddVarTab[PARA_GYRO_Z_90], 0x898); EE_WriteVariable(VirtAddVarTab[PARA_ACC_FORCE], 0x1F4); EE_WriteVariable(VirtAddVarTab[PARA_GYRO_CORR], 0x1F4); EE_WriteVariable(VirtAddVarTab[PARA_SERVO0_CH], 0x5); EE_WriteVariable(VirtAddVarTab[PARA_SERVO1_CH], 0x6); EE_WriteVariable(VirtAddVarTab[PARA_SERVO2_CH], 0x7); EE_WriteVariable(VirtAddVarTab[PARA_SERVO3_CH], 0x8); EE_WriteVariable(VirtAddVarTab[PARA_CAM_X], 0x5014); //servo 2 , 0, wert 500 EE_WriteVariable(VirtAddVarTab[PARA_CAM_Y], 0x7724); //servo 3 , 0, wert 500 EE_WriteVariable(VirtAddVarTab[PARA_MIN_GAS], 0x18); // min gas 24 EE_WriteVariable(VirtAddVarTab[PARA_P_X], 0x64); EE_WriteVariable(VirtAddVarTab[PARA_I_X], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_D_X], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_P_Y], 0x64); EE_WriteVariable(VirtAddVarTab[PARA_I_Y], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_D_Y], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_P_Z], 0x64); EE_WriteVariable(VirtAddVarTab[PARA_I_Z], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_D_Z], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_COMP_CORR_X], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_COMP_CORR_Y], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_COMP_CORR_Z], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_COMP_DECL], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_COMP_FORCE], 0x1F4); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT1A], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT1B], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT2A], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT2B], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT3A], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT3B], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT4A], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT4B], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT5A], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT5B], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT6A], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT6B], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT7A], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT7B], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT8A], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT8B], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT9A], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT9B], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT10A], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT10B], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT11A], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT11B], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT12A], 0x0); EE_WriteVariable(VirtAddVarTab[PARA_MIXER_MOT12B], 0x0); //######################################################################### u16 val; u16 i; for (i = 0;i <= USED_PARAMETER; i++) { EE_ReadVariable(VirtAddVarTab[i], &val); parameter[i] = val; // for test print_para(i); Delay(2); // prevent txbuffer overvlow } // info user over uart1 send(DEFAULT); }