Changeset 10969 for fact/FADctrl/FAD.cc
- Timestamp:
- 06/10/11 08:23:22 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
fact/FADctrl/FAD.cc
r10913 r10969 32 32 {"roi", &FAD::cmd_roi, true, 2, "<range> <value>", "Set ROI to for channel range to value"}, 33 33 {"dac", &FAD::cmd_dac, true, 2, "<range> <value>", "Set DAC numbers in range to value"}, 34 {"execute", &FAD::cmd_execute, true, 0, "", "confirm FAD configuration settings, e.g. DAC, ROI, run#"}, 34 35 {"address", &FAD::cmd_address, true, 2, "<range> <value>", "Set addresses in range to value"}, 35 36 {"send", &FAD::cmd_send, true, 1, "<value>", "Send arbitrary data to board"}, … … 205 206 206 207 // 208 // Execute: Confirm new ROI, DAC or what ever settings 209 // 210 211 void FAD::cmd_execute() { 212 213 for (unsigned int i=0; i<Boards.size(); i++) Boards[i]->Send(CMD_Execute); 214 } 215 216 217 // 207 218 // Set run number 208 219 // 209 220 void FAD::cmd_runnumber() { 210 221 222 unsigned short Buffer[4] = {0}; 211 223 int Num; 212 224 … … 215 227 return; 216 228 } 229 Buffer[0] = htons(CMD_Write | ADDR_RUNNUMBER); 230 Buffer[1] = htons( (unsigned short)( ((unsigned int)Num) >> 16 ) ); 231 Buffer[2] = htons(CMD_Write | (ADDR_RUNNUMBER + 1) ); 232 Buffer[3] = htons( (unsigned short)Num ); 217 233 218 234 for (unsigned int i=0; i<Boards.size(); i++) { 219 Boards[i]->Send(CMD_Write | ADDR_RUNNUMBER ); 220 Boards[i]->Send((unsigned short) (Num>>16)); // Write the HIGH-word first 221 Boards[i]->Send(CMD_Write | (ADDR_RUNNUMBER+1) ); 222 Boards[i]->Send((unsigned short) Num); // now write the LOW-word 235 Boards[i]->Send(Buffer, sizeof(Buffer)); 236 Boards[i]->Send(CMD_Execute); 223 237 } 224 238 } … … 351 365 for (unsigned int i=0; i<Boards.size(); i++) { 352 366 Boards[i]->Send(Buffer, sizeof(Buffer)); 367 Boards[i]->Send(CMD_Execute); 353 368 } 354 369 } … … 380 395 } 381 396 382 // Disable triggers for all boards and wait (workaround for firmware bug)383 for (unsigned int i=0; i<Boards.size(); i++) Boards[i]->Send(CMD_TRIGGERS_OFF);384 usleep(500000);385 397 386 398 // Send command buffer and enable triggers again 387 399 for (unsigned int i=0; i<Boards.size(); i++) { 388 Boards[i]->Send(Buffer, sizeof(Buffer)); 389 Boards[i]->Send(CMD_TRIGGERS_ON); 390 } 400 Boards[i]->Send(Buffer+R.Min*2, (R.Max-R.Min+1)*2*sizeof(unsigned short)); 401 Boards[i]->Send(CMD_Execute); 402 } 403 404 391 405 } 392 406
Note:
See TracChangeset
for help on using the changeset viewer.