Exemplo n.º 1
0
/*----------------------------------------------------------------------------*/
static enum result eepromInit(void *object, const void *configBase)
{
  const struct EepromConfig * const config = configBase;
  struct Eeprom * const interface = object;

  if (!setDescriptor(0, interface))
    return E_BUSY;

  interface->position = 0;
  interface->size = (uintptr_t)&_eeeprom - (uintptr_t)&_seeprom;
  interface->blocking = true;

  /* Enable clock to register interface and peripheral */
  sysClockEnable(CLK_M4_EEPROM);
  /* Reset registers to default values */
  sysResetEnable(RST_EEPROM);

  const uint32_t frequency = clockFrequency(MainClock);

  LPC_EEPROM->CLKDIV = (frequency + (EEPROM_CLOCK - 1)) / EEPROM_CLOCK - 1;
  LPC_EEPROM->INTENSET = INT_PROG_DONE;

  if (config)
    irqSetPriority(EEPROM_IRQ, config->priority);
  irqEnable(EEPROM_IRQ);

  return E_OK;
}
Exemplo n.º 2
0
/*!
 */
void pDetectorConfiguration::writeToFile(std::string filePath)
{
  *xpollog::kInfo << "Writing configuration to " << filePath <<
    "... " << endline;
  std::ofstream *outputFile = xpolio::kIOManager->openOutputFile(filePath);
  xpolio::kIOManager->write(outputFile, "//Readout mode//");
  xpolio::kIOManager->write(outputFile, readoutMode());
  xpolio::kIOManager->write(outputFile, "//Buffer mode//");
  xpolio::kIOManager->write(outputFile, bufferMode());
  xpolio::kIOManager->write(outputFile, "//Calibration dac//");
  xpolio::kIOManager->write(outputFile, calibrationDac());
  xpolio::kIOManager->write(outputFile, "//Pixel address x//");
  xpolio::kIOManager->write(outputFile, pixelAddressX());
  xpolio::kIOManager->write(outputFile, "//Pixel address y//");
  xpolio::kIOManager->write(outputFile, pixelAddressY());
  xpolio::kIOManager->write(outputFile, "//Threshold dacs//");
  for (int i = 0; i <  NUM_READOUT_CLUSTERS; i++) {
    xpolio::kIOManager->write(outputFile, thresholdDac(i));
  }
  xpolio::kIOManager->write(outputFile, "//Clock frequency code//");
  xpolio::kIOManager->write(outputFile, clockFrequency());
  xpolio::kIOManager->write(outputFile, "//Clock shift//");
  xpolio::kIOManager->write(outputFile, clockShift());
  xpolio::kIOManager->write(outputFile, "//# pedestal samples//");
  xpolio::kIOManager->write(outputFile, numPedSamples());
  xpolio::kIOManager->write(outputFile, "//Pedestal sample delay//");
  xpolio::kIOManager->write(outputFile, pedSampleDelay());
  xpolio::kIOManager->write(outputFile, "//Trigger enable delay//");
  xpolio::kIOManager->write(outputFile, trgEnableDelay());
  xpolio::kIOManager->write(outputFile, "//Minimum window size//");
  xpolio::kIOManager->write(outputFile, minWindowSize());
  xpolio::kIOManager->write(outputFile, "//Maximum window size//");
  xpolio::kIOManager->write(outputFile, maxWindowSize());
  xpolio::kIOManager->write(outputFile, "//Large window padding//");
  xpolio::kIOManager->write(outputFile, windowMarginHigh());
  xpolio::kIOManager->closeOutputFile(outputFile);
}
Exemplo n.º 3
0
/*!
 */
std::ostream& pDetectorConfiguration::fillStream(std::ostream& os) const
{
  os << xpedaqutils::title("Detector configuration", true);
  os << "Readout mode: " << readoutMode() << std::endl;
  os << "Buffer mode: " << bufferMode() << std::endl;
  os << "Calibration DAC: " << calibrationDac() << std::endl;
  os << "Pixel address x: " << pixelAddressX() << std::endl;
  os << "Pixel address y: " << pixelAddressY() << std::endl;
  os << "Threshold DACs: ";
  for (int i = 0; i <  NUM_READOUT_CLUSTERS; i++) {
    os << thresholdDac(i) << " ";
  }
  os << std::endl;
  os << "Clock frequency code: " << clockFrequency() << std::endl;
  os << "Clock shift: " << clockShift() << std::endl;
  os << "# samples for pedestals: " << numPedSamples() << std::endl;
  os << "Pedestal sample delay: " << pedSampleDelay() << std::endl;
  os << "Trigger enable delay: " << trgEnableDelay() << std::endl;
  os << "Minimum window size: " << minWindowSize() << std::endl;
  os << "Maximum window size: " << maxWindowSize() << std::endl;
  os << "Large window padding: " << windowMarginHigh() << std::endl;
  os << xpedaqutils::hline();
  return os;
}